Rsync
rsync 恢復時保留以前的部分文件
我經常使用 rsync 和以下命令從遠端伺服器傳輸大文件:
rsync -rvhm \ --progress \ --size-only \ --stats \ --partial-dir=.rsync-partial \ "user@server::module/some_path" "some_path"
這樣,即使傳輸失敗,我也可以稍後恢復它,並且我知道我只會在
some_path
目標上保存完整的文件,因為所有部分傳輸都將保留在some_path/.rsync-partial
.當傳輸恢復時, rsync 首先檢查部分傳輸以確定恢復的確切位置(我猜),我對此很好。問題是,當它完成此檢查時,部分文件會被複製到文件夾之外以
.partial-rsync
進行恢復。因此,我留下了部分傳輸(將在下一次暫停或傳輸完成時被替換或刪除)以及正在進行的傳輸。這很不方便,因為:
- 我在目的地沒有太多可用空間;
- 文件很大;
- 如果部分傳輸“足夠遠”,我可能無法恢復它,因為 rsync 將首先嘗試複製它並抱怨沒有足夠的空間可以恢復;
- 我沒有理由想保留部分文件的副本來恢復傳輸:應該使用部分文件本身。
有沒有辦法避免這種行為或者這是設計使然?如果是這樣,我們為什麼要讓它以這種方式工作?
--inplace
儘管有一個可用的更新檔程序允許結合使用該選項--partial-dir
來避免此副本,但看起來這似乎是不可能的。有關更多詳細資訊,請參閱錯誤 13071,但來自描述:
如果 –inplace 與 –partial-dir 或任何暗示它的選項(–delay-update)一起使用,則就地行為將在部分目錄中發生,每個文件在完成後將移動到其最終目的地。
不幸的是,到目前為止,這個更新檔還沒有被應用。