Domanda

Sto cercando di copiare un link sul sistema operativo Solaris, ma scoprire che non si limita a copiare il link invece copie l'intero contenuto della directory / file il link è poinitng a? Che non è in altri sistemi operativi come AIX, HP-UX, Linux.

Si tratta di un comportamento normale del sistema operativo Solaris?

È stato utile?

Soluzione

Charlie era vicino, si desidera che le bandiere -L, -H o -P con la bandiera -R (probabilmente solo -R -P). esistono bandiere simili per chmod(1) e chgrp(1). Ho incollato un estratto dalla pagina man di sotto.

Esempio:

$ touch x
$ ln -s x y 
$ ls -l x y 
-rw-r--r--   1 mjc      mjc            0 Mar 31 18:58 x
lrwxrwxrwx   1 mjc      mjc            1 Mar 31 18:58 y -> x
$ cp -R -P y z
$ ls -l z
lrwxrwxrwx   1 mjc      mjc            1 Mar 31 18:58 z -> x
$ 

In alternativa, pianura vecchio tar felicemente lavorare con i link simbolici per impostazione predefinita, anche la versione venerabile fornita con Solaris:

tar -cf foo | ( cd bar && tar -xf - )

(dove foo è un collegamento simbolico o una directory contenente link simbolici).

 /usr/bin/cp -r | -R [-H | -L | -P] [-fip@] source_dir... target

 ...

 -H    Takes actions based on the type and  contents  of  the
       file  referenced  by  any symbolic link specified as a
       source_file operand.

       If the source_file operand is a symbolic link, then cp
       copies  the  file  referenced by the symbolic link for
       the source_file  operand.  All  other  symbolic  links
       encountered  during  traversal of a file hierarchy are
       preserved.


 -L    Takes actions based on the type and  contents  of  the
       file  referenced  by  any symbolic link specified as a
       source_file operand or any symbolic links  encountered
       during traversal of a file hierarchy.

       Copies files referenced by  symbolic  links.  Symbolic
       links encountered during traversal of a file hierarchy
       are not preserved.


 -P    Takes actions on any  symbolic  link  specified  as  a
       source_file  operand  or any symbolic link encountered
       during traversal of a file hierarchy.

       Copies symbolic links. Symbolic links encountered dur-
       ing traversal of a file hierarchy are preserved.

Altri suggerimenti

Si vuole cp -P Credo (controllare la pagina man, come io non ho una scatola di Solaris a portata di mano al momento.) Ho vagamente sospetto che è un V-ismo sistema, ma non ci giurerei ad esso.

Sembra che si sta cercando di duplicare un singolo link simbolico.

Si potrebbe desiderare di fare solo:


link_destination=`/bin/ls -l /opt/standard_perl/link|awk '{print $10}'`
ln -s $link_destination /opt/standard_perl/link_new

Se si sta tentando di copiare una gerarchia di directory, questo può essere molto difficile da fare, in generale, senza gli strumenti GNU (o rsync). Mentre ci sono soluzioni che lavorano spesso, non esiste una soluzione che funziona su ogni unix "standard" con ogni tipo di nome di file che si possono incontrare. Se avete intenzione di fare questo regolarmente, è necessario installare i coreutils GNU, trovare, cpio, e catrame, e anche rsync pure.

Sarà cpio fare il trucco per voi?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top