copiare il link simbolico in Solaris [chiusa]
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?
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?