通过 rsync 恢复单个文件的传输

Tim*_*Tim 23 linux rsync

在 Ubuntu 中,我想通过 rsync 将一个大文件从我的硬盘复制到一个可移动驱动器。由于某种原因或其他原因,该操作无法在一次运行中完成。所以我想弄清楚如何使用 rsync 从上次离开的地方恢复文件复制。

我尝试使用选项--partial 或--inplace,但是与--progress 一起使用时,我发现rsync 与--partial 或--inplace 实际上从头开始,而不是从上次剩下的开始。手动提前停止 rsync 并检查接收文件的大小也证实了我的发现。

但是使用--append,rsync 从上次剩下的开始。

我很困惑,因为我在联机帮助页上看到 --partial、--inplace 或 --append 似乎与从上次剩下的内容恢复复制有关。有人可以解释一下区别吗?为什么 --partial 或 --inplace 不能用于恢复副本?为了恢复副本,rsync 必须使用选项 --append 是真的吗?

此外,如果部分文件是由 mv 或 cp 而不是由 rsync 留下的,那么 rsync --append 会正确吗?

感谢致敬!

Sco*_*ing 27

查看 rsync 的一些页面:

--append
这会导致 rsync 通过将数据附加到文件末尾来更新文件,这假定接收方已经存在的数据与发送方文件的开头相同。

--inplace
这个选项改变了 rsync 在文件数据需要更新时传输文件的方式:而不是创建文件的新副本并在文件完成时将其移动到位的默认方法,rsync 而是将更新的数据直接写入到目标文件。

--partial
默认情况下,如果传输中断,rsync 将删除任何部分传输的文件。在某些情况下,更希望保留部分传输的文件。

听起来如果文件很大,你会想要使用--partial --append. (--append暗示--inplace)如果这个大文件发生变化,则删除--appendrsync 将检查文件的开头以确保它也与源文件匹配。 --inplace对我来说听起来很危险,除非您正在 rsync 一个大文件,否则您不希望 rsync 创建一个新的开始部分的临时文件,继续传输,然后删除旧文件以放置新文件。如果您可以使用相同的文件,传输速度会更快,更不用说传输所需的磁盘空间会更少。

此外,我发现从整个文件传输的角度来看,副本比 rsync 快。但是,如果我需要更新文件,我使用 rsync 同步文件的速度比再次重新传输整个文件要快。(就像我上面说的)Rsync 应该能够从 cp 恢复。

我希望这有帮助。