
我正在進行資料傳輸,舊檔案系統深深依賴現在位於不同路徑上的目錄。這是一個線上儲存程式碼的 git 目錄。我無權移動它或重命名它。
所以我能做的就是將此目錄同步到同一個舊路徑。但目錄名也變了。
有沒有簡單的方法可以將目錄同步到具有不同名稱的目標目錄?
答案1
如果您想使用rsync
遞歸方式使dest
目錄成為該目錄的精確副本src
:
rsync -a src/ dest
手冊rsync
頁解釋了它是如何運作的:
來源上的尾部斜線可避免在目標處建立額外的目錄層級。您可以將
/
來源尾隨視為「複製此目錄的內容」而不是「按名稱複製目錄」[...]
答案2
答案3
如果您的電腦可以存取新舊檔案系統,請考慮使用符號連結而不是 rsync。如果您使用的 rsync 命令未指定主機(或它們是同一台主機),那麼就是這種情況。您正在嘗試在同一台主機上鏡像兩個具有不同名稱的目錄。不要為此使用 rsync,因為您正在複製數據,並且您必須經常執行 rsync 才能保持它們同步。
使用符號連結是一種一次性修復,它將鏡像兩個目錄(具有不同的名稱)並且幾乎不需要空間。這就像是建立一個指向另一個目錄的別名目錄。
假設您的舊 git 位於名為 /old/path/old_git 的目錄中,現在程式碼儲存庫已移至 /new/path/new_git
你可以做:
cd /old/path
rm -rf old_git (if you still have it there, get rid of it, or move it out of the way)
ln -s /new/path/new_git old_git
這將創建一個鏈接,如下所示:
/舊/路徑/old_git - > /新/路徑/new_git
這樣,放入 new_git 中的任何內容都可以按照舊方式立即可用,而無需重複數據,也無需不斷同步它們。
答案4
我現在找到替代解決方案。
使用rysnc -r /origin/* /target/
可以將來源目錄的所有內容同步到目標目錄。