复制Solaris中的符号链接

时间:2009-03-31 15:59:30

标签: solaris symlink copying

我正在尝试复制Solaris OS上的链接,但发现它不是简单地复制链接而是复制链接指向的目录/文件的全部内容?这在AIX,HP-UX,Linux等其他操作系统中并不存在。

这是Solaris OS的正常行为吗?

4 个答案:

答案 0 :(得分:7)

查理很接近,你希望-L-H-P标志带有-R标志(可能只是-R -P)。 chmod(1)chgrp(1)存在类似的标记。我在下面的手册页上贴了一段摘录。

示例:

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

或者,普通的旧tar会默认使用符号链接,甚至是Solaris附带的古老版本:

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

(其中foo是符号链接或包含符号链接的目录)。

 /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.

答案 1 :(得分:1)

你想要cp -P我相信(查看手册页,因为我现在没有方便的solaris盒。)我隐约怀疑这是一个系统V-ism,但不会发誓。

答案 2 :(得分:0)

cpio会为你做这个伎俩吗?

答案 3 :(得分:0)

听起来你正试图复制一个符号链接。

您可能只想这样做:


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

如果您尝试复制目录层次结构,如果没有GNU工具(或rsync),这通常很难做到。虽然有些解决方案经常有效,但是没有解决方案适用于您可能遇到的每种类型文件名的每个“标准”unix。如果您要定期执行此操作,则应安装GNU coreutils,find,cpio和tar,以及rsync。