Linux
創建另一個具有自己本地數據的目錄的符號副本
我有一個
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_0311
在foo
.
你可以要求
cp
為你創建一個所謂的連結樹:cp -al foo foo_0311
-a
遞歸複製所有內容,並-l
為文件創建硬連結而不是複制它們。如果
foo_0311
已經存在,那麼你應該使用cp -al foo/* foo_0311
反而。
這會創建硬連結而不是符號連結,因此它們不會出現
->
在的輸出中ls -l
(但您可以發現它們,因為2
在第二列中)。您在任一目錄中創建的任何新文件都不會出現在另一個目錄中,但您在一個目錄中編輯的文件將出現在另一個目錄中,只要它們實際修改到位。(像 Emacs 這樣的編輯器創建新文件並將它們移動到適當的位置,這打破了這一點,儘管它實際上對連結樹非常有用,因為它允許一種寫時複製的形式……)