讓 rsync 將文件從源移動到目標?
rsync 對我的項目來說是一個不錯的選擇嗎?
我必須:
通過 SSH 將文件從源文件夾複製到目標文件夾,
確保所有文件都已複製,
複製後刪除源文件。
如果我有衝突名稱,我必須重命名文件。
看起來我可以使用選項:–remove-source-files(刪除源文件)
但是 rsync 如何管理衝突,我可以有規則嗎?
我的項目案例:
我在伺服器 A 上執行科學計算,並將結果插入文件夾“程序”中,對於每個計算,我都有一個這樣的儲存庫:/process/calc1.
現在我想將儲存庫“/calc1”傳輸到伺服器 B(我得到 /process/calc1),並從伺服器 A 中刪除“calc1”
。…在另一個計算過程中,我在伺服器 A 上得到“/process/calc2”,這個想法也是在伺服器 B 上的“/process/”目錄中移動“calc2”,然後我現在在伺服器 B 上:
/process/calc1
/process/calc2
(並且伺服器 A 上的 /process/ 為空)。
如果在新計算後伺服器 A 中有另一個文件夾,例如“/process/calc1”(如果伺服器 B 上已經存在“/process/calc1”),rsync 將如何管理衝突(在伺服器 B 上)?
是否可以使用 rsync 添加規則,並在伺服器 B 中通過“process/calc1R2”重命名“/process/calc1”?等等(例如:calc1R3)?
謝謝。
如果你真的想使用 rsync,聽起來你需要一些 –backup、–backup-dir 和 –suffix 的組合。我認為你能得到的最接近的是這樣的東西
rsync -abv --suffix R1 --remove-source-files src/ dst/
這將接近你想要的,但它不會完全按照你想要的方式重命名文件。–suffix 選項將文本附加到現有文件的末尾,但它只對第一個衝突執行此操作。如果您再次執行它,它只會覆蓋您的第一個備份。每次命令執行時,您都必須更改該後綴值,如果您使用帶有時間戳的東西,這將起作用,例如:
rsync -abv --suffix `date +%Y%m%d%k%M%S` --remove-source-files src/ dst/
我不確定這對於您所追求的是否過大,但它應該滿足您的要求。