我家里的互联网很挑剔,rsync 可能随时断开连接,我的大文件将不得不从头重新启动。
有没有办法将一个 1 GB 的文件分割成 50MB 的增量,将它们发送到目的地然后合并?这样,即使文件被截断,我也会在另一端保存其中的一定百分比。
答案1
这个人已经给出了很好的解释: https://unix.stackexchange.com/a/165417/446381
所以如果我想实现我的目标,我就使用--append-verify
带有 rsync 的标志。
对我来说,这--partial
确实有点多余。它作为隐藏文件传输,然后重命名为部分文件。我不喜欢这样,因为 Control-C 可能会破坏此重命名过程。
答案2
简短版本:为了使 rsync 能够更好地从中断处重新启动,请添加标志--inplace
。无需拆分大文件。
较长的版本:
将文件拆分成小文件,然后逐个传输,这是一个好主意。但是你工作太辛苦了。rsync 内部将文件拆分成 64k 块……差不多。有一种方法可以实现rsync
你想要的效果:添加--inplace
标志。
让我们看看您遇到的更大的问题:您的互联网连接不可靠,您需要一种方法来发送大文件。
如果您使用--inplace
标志(暗示--partial
),您将获得所需的结果。每次传输中断时,rsync
都会使文件处于一种状态,以便下次运行(相同)时可以有效地从中断处继续rsync
。
--inplace
只需多次使用并运行 rsync 命令,直到所有内容都被复制。
如果您非常谨慎,请在成功复制所有文件后再进行一次添加--checksum
( -c
) 标志的操作。这将非常缓慢地逐字节重新检查,而不是使用文件的时间戳来了解可以跳过哪些文件。由于所有文件都已正确复制,因此它应该不会发现任何工作要做。话虽如此,我有时这样做只是为了安心。您不想在初始运行期间使用此标志,因为它会非常缓慢且浪费,因为它会重新读取每个文件的每个块。