Rsync

rsync 恢復時保留以前的部分文件

  • January 23, 2019

我經常使用 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進行恢復。因此,我留下了部分傳輸(將在下一次暫停或傳輸完成時被替換或刪除)以及正在進行的傳輸。

這很不方便,因為:

  1. 我在目的地沒有太多可用空間;
  2. 文件很大;
  3. 如果部分傳輸“足夠遠”,我可能無法恢復它,因為 rsync 將首先嘗試複製它並抱怨沒有足夠的空間可以恢復;
  4. 我沒有理由想保留部分文件的副本來恢復傳輸:應該使用部分文件本身。

有沒有辦法避免這種行為或者這是設計使然?如果是這樣,我們為什麼要讓它以這種方式工作?

--inplace儘管有一個可用的更新檔程序允許結合使用該選項--partial-dir來避免此副本,但看起來這似乎是不可能的。

有關更多詳細資訊,請參閱錯誤 13071,但來自描述:

如果 –inplace 與 –partial-dir 或任何暗示它的選項(–delay-update)一起使用,則就地行為將在部分目錄中發生,每個文件在完成後將移動到其最終目的地。

不幸的是,到目前為止,這個更新檔還沒有被應用。

引用自:https://unix.stackexchange.com/questions/485577