Linux

創建另一個具有自己本地數據的目錄的符號副本

  • March 11, 2015

我有一個foo包含文件和目錄的目錄。我想創建一個新目錄foo_0311,其中包含與相同的文件foo(並在文件更改時看到更新),但這允許執行touch foo_0311/a.txt並且沒有a.txt出現在foo.

我曾經有一種方法可以做到這一點,但是當我的 bash 歷史消失時它就失去了,而且我無法重建它。我記得它涉及首先創建foo_0311然後使用ln如下:

mkdir foo_0311
ln ???

但我不記得它的選項。IIRC,當我cd執行此操作並發出後進入目錄時ls -l,文件沒有顯示為連結,但更改反映在原始foo目錄中,而我創建的新文件foo_0311foo.

你可以要求cp為你創建一個所謂的連結樹:

cp -al foo foo_0311

-a遞歸複製所有內容,並-l為文件創建硬連結而不是複制它們。

如果foo_0311已經存在,那麼你應該使用

cp -al foo/* foo_0311

反而。

這會創建硬連結而不是符號連結,因此它們不會出現->在的輸出中ls -l(但您可以發現它們,因為2在第二列中)。您在任一目錄中創建的任何新文件都不會出現在另一個目錄中,但您在一個目錄中編輯的文件將出現在另一個目錄中,只要它們實際修改到位。(像 Emacs 這樣的編輯器創建新文件並將它們移動到適當的位置,這打破了這一點,儘管它實際上對連結樹非常有用,因為它允許一種寫時複製的形式……)

引用自:https://unix.stackexchange.com/questions/189627