正如這個問題的答案所示, 使用 cp -l 或 ln 進行硬連結有差別嗎?
為 cp 指令建立 -l 選項的目的是遞歸地硬連結目錄(的內容)。 -s 選項是對應的,創建軟鏈接而不是硬鏈接,但它似乎不能遞歸使用。
任何嘗試這樣做都會導致錯誤訊息:
cp: `source_dir/source_file': can make relative symbolic links only in current directory
也許這取決於發行版。在 Ubuntu 12.04 中,這就是結果。僅當原始文件和連結位於同一目錄中時才有效。
也許語法不正確?
cp -rs target_directory destination_directory
是我用過的。
例子:
$ ls sourcedir/
-rw-rw---- 1 user group 1123 Jan 8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory
答案1
給定來源目錄的絕對路徑:
cp -rs $PWD/sourcedir/ targetdir/
中的符號連結targetdir
將包含 的絕對路徑sourcedir
。
否則,如果它只是創建一個符號鏈接,它將創建類似以下內容的內容:
targetdir/filename -> sourcedir/filename
但這不是查找原始文件的正確相對路徑,它應該是:
targetdir/filename -> ../sourcedir/filename
cp
不會嘗試弄清楚來源目錄和目標目錄如何相互關聯,以便它可以添加適當數量的../
前綴。