
rsync
/a/b/ /c/d/的等效指令是什麼mv
,即將目錄樹從一個位置移動到另一個位置(可能位於另一個檔案系統上)?
也就是說,不僅僅是複製,而是從原始位置刪除檔案。我想使用的原因rsync
是我希望能夠恢復部分移動並能夠限制頻寬使用。
答案1
此命令將同步從/a/b 到/c/d 的所有文件,並將保留權限、修改日期、符號鏈接,並將遞歸到目錄中(“-a”或“--archive”執行所有這些操作,它與使用“-rlptgoD”相同,它們是所有選項的單獨選項),-v 表示詳細信息,“--remove-source-files”將在源文件在目標上完全創建後將其刪除。
如果 /c/ 中的目錄 d 不存在,則會建立該目錄。
rsync -av --remove-source-files /a/b /c/d
如果您想移動到遠端伺服器,那麼這將同步到遠端伺服器路徑,「-z」將在傳輸過程中壓縮檔案資料。
rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d
目錄不會被「--remove-source-files」刪除,因此您需要在 rsync 之後執行 rm -rf /a/b 來刪除 /a/b/ 內的所有目錄
在一行命令中,您可以像這樣把所有內容都放在一起
rsync -av --remove-source-files /a/b /c/d; if find /a/b/ -type f | read; then echo "Not all files were synced"; else rm -rf /a/b; fi
這將運行 rsync,然後檢查是否有任何檔案剩餘,以防止刪除資料夾(如果某些檔案未完全同步,因此未刪除),然後列印並非所有檔案都已同步,或刪除該資料夾(如果有)裡面沒有文件。