2010-01-28 62 views

回答

4

一個週期,做一個遞歸複製時,正在訪問相同的「文件」兩次。這可能是由鏈接以循環方式設置引起的。例如,如果您的目錄level1

mkdir level1 

然後象徵性地在那裏文件鏈接到該目錄:

cd level1 
ln -s . level2 

你基本上是一個循環引用結束。這意味着你可以這樣做:

cd level2/level2/level2/... 

你的心臟的內容,從來沒有離開level1目錄。這會導致遞歸副本的問題,因爲它會有效地成爲無限循環。

您可以使用cp -rHcp -rP(在Solaris 10及更高版本上,我認爲)不遵循符號鏈接。

具體來說,有三個標誌,你可能感興趣的:

  • -H:如果SOURCE_FILE操作數是一個符號鏈接,然後CP複製由符號鏈接SOURCE_FILE操作數引用的文件。遍歷文件層次結構期間遇到的所有其他符號鏈接都將保留。這意味着如果您指定的源文件/目錄是鏈接,它將複製該鏈接的目標。該源下的所有符號鏈接將不會被遵守。

  • -L:複製由符號鏈接引用的文件。在遍歷文件層次結構期間遇到的符號鏈接不會被保留。這將遵循源代碼下的所有符號鏈接。

  • -P:複製符號鏈接。遍歷文件層次結構期間遇到的符號鏈接被保留。我認爲這與-H完全相同,但也保留了特定來源的符號鏈接。

+0

謝謝Pax,我得到了答案 – 2010-01-28 08:16:57