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


22

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

我试图使用--partial或--inplace选项,但是与--progress一起使用时,我发现带有--partial或--inplace的rsync实际上是从头开始的,而不是从上次的内容开始。手动尽早停止rsync并检查接收到的文件的大小也可以确认我找到了什么。

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

我在联机帮助页上看到的--partial,-inplace或--append似乎与从上次剩余的内容恢复复制有关,感到很困惑。有人可以解释差异吗?为什么--partial或--inplace无法恢复副本?是否确实要恢复副本,rsync必须与--append选项一起使用?

另外,如果部分文件是由mv或cp而不是rsync留下的,rsync --append是否正确?

谢谢并恭祝安康!


我对rsync的工作方式了解有限,但只能回答您最后一个问题。如果cp不完整,则rsync应该继续复制。我相信 rsync会以某种方式对文件进行哈希处理,以使文件的开头部分相同,然后复制文件的其余部分。
Scott McClenning

Answers:


25

查看一些rsync页面:

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

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

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

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

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

我希望这有帮助。


1
您可能想看一下这个错误报告:lists.samba.org/archive/rsync/2012-June/027615.html
Stefan Schmidt

关于默认情况下使用更快的cp和rsync来“修复”损坏的cp进程的好处!整洁的:)
塞缪尔·兰帕
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.