2009-03-31 10 views
3

J'essaie de copier un lien sur le système d'exploitation Solaris, mais je constate qu'il ne copie pas simplement le lien mais qu'il copie tout le contenu du répertoire/fichier vers lequel pointe le lien. Ce qui n'est pas dans d'autres systèmes d'exploitation comme AIX, HP-UX, Linux.Copier le lien symbolique dans Solaris

Est-ce un comportement normal de Solaris OS?

+0

Les liens symboliques Solaris sont un cauchemar – ojblass

Répondre

7

Charlie était proche, vous voulez que les -L, -H ou -P drapeaux avec le drapeau -R (probablement -R -P). Des drapeaux similaires existent pour chmod(1) et chgrp(1). J'ai collé un extrait de la page de manuel ci-dessous.

Exemple:

$ 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 
$ 

Sinon, vieux goudron plaine se fera un plaisir de travailler avec des liens symboliques par défaut, même la version vénérable qui est livré avec Solaris:

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

(où foo est un lien symbolique ou un répertoire contenant des liens symboliques).

/usr/bin/cp -r | -R [-H | -L | -P] [[email protected]] 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. 
+0

Solaris peut être exaspérant. – ojblass

+0

Un problème est survenu avec 'cp -rP'. Si un lien symbolique à copier pointe vers un fichier inexistant, cp ne le copiera pas. – shura

0

Est-ce que cpio fera l'affaire pour vous?

+0

Que diriez-vous de 'ln -s'? – ceving

1

Je crois (vérifiez la page de manuel, car je n'ai pas de boîte Solaris à portée de main pour l'instant). Je soupçonne faiblement que c'est un système V-isme, mais je ne le jurerais pas.

+0

Eh bien il n'y a pas une telle option -P.J'ai essayé et voici à quoi ressemble la sortie: $ cp -P/opt/standard_perl/lien/opt/standard_perl/link_new Utilisation: cp [-f] [-i] [-p] [- @] f1 f2 cp [-f] [-i] [-p] [- @] f1 ... fn d1 cp -r | -R [-H | -L | -P ] [-f] [-i] [-p] [- @] d1 ... dn-1 dn – kadeshpa

+1

Oui il y a sur Solris. Voir http://docs.sun.com/app/docs/doc/816-5165/cp-1?l=fr&a=view Vous êtes sûr d'utiliser Solaris? –

0

Il semble que vous essayez de dupliquer un seul lien symbolique.

Vous voudrez peut-être à le faire:


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

Si vous essayez de copier une hiérarchie de répertoires, cela peut être très difficile à faire en général sans les outils GNU (ou rsync). Bien qu'il existe des solutions qui fonctionnent souvent, il n'y a pas de solution qui fonctionne sur chaque unix "standard" avec chaque type de nom de fichier que vous pourriez rencontrer. Si vous le faites régulièrement, vous devez installer les coreutils GNU, find, cpio et tar, ainsi que rsync.

Questions connexes