我正在進行資料傳輸,舊檔案系統深深依賴現在位於不同路徑上的目錄。這是一個線上儲存程式碼的 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/可以將來源目錄的所有內容同步到目標目錄。

相關內容