有关cp:cycle检测到的任何想法:Solaris上的错误。我正在将数据从一个目录复制到另一个目录。
答案 0 :(得分:5)
进行递归复制时,循环访问同一个“文件”两次。这可能是由循环设置的链接引起的。例如,如果您创建目录level1
:
mkdir level1
然后象征性地将下的文件链接到该目录:
cd level1
ln -s . level2
你基本上最终会得到一个循环引用。这意味着你可以这样做:
cd level2/level2/level2/...
关注您的内容,永远不要离开level1
目录。这会导致递归副本出现问题,因为它会无限循环。
您可以使用cp -rH
或cp -rP
(我认为在Solaris 10及更高版本上)不遵循符号链接。
具体来说,您可能会对以下三个标志感兴趣:
-H
:如果source_file操作数是符号链接,则cp复制source_file操作数的符号链接引用的文件。在遍历文件层次结构期间遇到的所有其他符号链接都将保留。这意味着如果您指定为源的文件/目录是链接,它将复制该链接的目标。不会遵循该来源下面的所有符号链接。
-L
:复制符号链接引用的文件。不保留在遍历文件层次结构期间遇到的符号链接。这将遵循源下的所有符号链接。
-P
:复制符号链接。在遍历文件层次结构期间遇到的符号链接将被保留。我认为这与-H
相同,但也保留了特定来源的符号链接。
答案 1 :(得分:0)
尝试使用cp
命令,如下所示:
cp -rH