在 Ubuntu 中,我想通过rsync. 由于某些其他原因,该操作无法在一次运行中完成。所以我想弄清楚如何使用rsync从上次停止的地方恢复复制文件。
我曾尝试使用的选项--partial或--inplace,但与一起--progress,我发现rsync用--partial或--inplace实际从启动开始,而不是从什么左最后一次。手动rsync提前停止并检查接收文件的大小也证实了我的发现。
但是有了--append,rsync 从上次剩下的开始。
正如我在手册页 --partial,上看到的那样,我很困惑--inplace,--append似乎与从上次剩下的内容恢复复制有关。有人能够解释其中的区别吗?为什么不--partial或--inplace为恢复复印而工作?对于恢复复制,rsync是否必须使用该--append选项?
此外,如果部分文件是由mvor留下的cp,而不是由 rsync留下的,是否会rsync --append正确恢复复制文件?
Ric*_*rri 46
要恢复中断的复制,您应该使用rsync --append. 从手册页的解释--append:
这会导致 rsync 通过将数据附加到文件末尾来更新文件,这 假定接收方已经存在的数据与发送方文件的开头相同。 [...] 暗示
--inplace,[...]
选项--inplace使rsync(覆盖)直接写入目标文件内容;没有 --inplace,rsync会:
正常操作模式主要防止与可能打开目标文件的应用程序发生冲突,以及手册rsync页中适当列出的一些其他事故。
请注意,如果复制/更新操作在步骤 1.-3 中失败。以上,
rsync将删除临时目标文件;该--partial
选项禁用此行为,rsync并将在目标文件系统上保留部分传输的临时文件。因此,除非您rsync使用--partial或
调用第一个文件,否则恢复单个文件复制操作不会获得太多收益--partial-dir(效果与--partial,此外指示rsync
在特定目录中创建所有临时文件)。
小智 27
请注意,这--append意味着--inplace,这本身就意味着--partial。
通过仅使用--partial您应该导致rsync离开部分传输并在随后的尝试中恢复它们。
通过使用,--append您应该rsync同时保留部分文件并在下次恢复它们。传输后rsync应仅验证传输数据的校验和。
--append-verify 在校验和验证中包括整个文件,包括在先前传输中传输的任何部分。
使用--append或--append-verify失败的校验和验证应该导致文件完全重新传输(使用--inplace)
您应该能够继续使用mv或cp操作,rsync但您可能希望使用该--append-verify选项来让您安心。
请注意,使用--append原因仅rsync复制那些在接收器上的大小小于发送器上的大小的文件(无论时间戳如何),或者在接收器上不存在。通过有关此选项的文档:
如果需要传输的文件在接收方的大小等于或大于发送方的大小,则跳过该文件。
手册页中的更多信息
小智 6
大卫施瓦茨是正确的,--partial(或更好,-P)做你想做的。我在一个 37G 文件上验证了这一点,该文件通过网络停止了 ~8g。rsync 快速扫描了部分文件的第一部分(由于 显示了进度-P),然后继续传输到部分文件的末尾。
默认情况下,从本地磁盘传输到本地磁盘时rsync将启用。--whole-file这将从头开始重新启动中断的传输,而不是检查已经存在的部分。
要禁用此功能,请使用:
--no-whole-file
Run Code Online (Sandbox Code Playgroud)
将此与--inplace或结合起来--partial将允许稍后恢复传输。
我用于rsync复制的别名是:
rscp='rsync -ax --inplace --sparse --no-whole-file --protect-args'
Run Code Online (Sandbox Code Playgroud)
警告:请小心使用,--append-verify因为它会跳过任何相同大小或更大的目标文件。
| 归档时间: |
|
| 查看次数: |
48841 次 |
| 最近记录: |