如何让 rsync 将文件分割成更小的部分并在完成后将它们合并?

如何让 rsync 将文件分割成更小的部分并在完成后将它们合并?

我家里的互联网很挑剔,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) 标志的操作。这将非常缓慢地逐字节重新检查,而不是使用文件的时间戳来了解可以跳过哪些文件。由于所有文件都已正确复制,因此它应该不会发现任何工作要做。话虽如此,我有时这样做只是为了安心。您不想在初始运行期间使用此标志,因为它会非常缓慢且浪费,因为它会重新读取每个文件的每个块。

相关内容