首先,关于问题的“恢复”部分,--partial
只是告诉接收方保留部分传输的文件(如果发送方消失了,就好像它们已完全传输一样)。
传输文件时,它们会以隐藏文件的形式临时保存在其目标文件夹(例如.TheFileYouAreSending.lRWzDC
)中,或者如果您设置了--partial-dir
开关,则会另存为特定选择的文件夹中。如果传输失败--partial
且未设置,则该隐藏文件将保留在该加密名称下的目标文件夹中,但是如果--partial
设置了该文件,该文件将被重命名为实际的目标文件名(在这种情况下为TheFileYouAreSending
),即使该文件还不完整 关键是您以后可以通过使用--append
或重新运行rsync来完成传输--append-verify
。
所以,--partial
没有自身恢复失败或取消转移。要恢复它,您必须在下一次运行中使用上述标志之一。因此,如果您需要确保目标不会包含看起来不错但实际上不完整的文件,则不应使用--partial
。相反,如果要确保您永远不会留下隐藏在目标目录中的杂散失败文件,并且知道以后可以完成传输,--partial
可以在此帮助您。
关于上述--append
开关,这是实际的“恢复”开关,无论是否也使用,都可以使用它--partial
。实际上,当您使用时--append
,不会创建任何临时文件。文件直接写入其目标。在这方面,--append
给出与--partial
失败传输相同的结果,但是不创建那些隐藏的临时文件。
因此,总而言之,如果要移动大文件,并且希望该选项从已rsync
停止的确切点开始恢复已取消或失败的rsync操作,则需要使用--append
或--append-verify
开启下一次尝试。
正如@Alex指出的那样,由于3.0.0版rsync
现在有了一个新选项--append-verify
,其行为类似于--append
该开关存在之前。您可能一直都想要的行为--append-verify
,因此请使用来检查您的版本rsync --version
。如果您使用的是Mac,而不是使用rsync
from homebrew
,则您(至少包括El Capitan在内)将使用较旧的版本,并且需要使用--append
而不是--append-verify
。为什么他们不坚持这种行为--append
,而是取名为“新来者” --append-no-verify
,这有点令人困惑。无论哪种方式,--append
对rsync
前3版相同--append-verify
的新版本。
--append-verify
并不危险:它将始终读取并比较两端的数据,而不仅仅是假设它们是相等的。它使用校验和执行此操作,因此在网络上很容易,但是它确实需要读取电线两端的共享数据量,然后才能通过附加到目标来实际恢复传输。
第二,您说过“您听说rsync能够找到源和目标之间的差异,因此只能复制差异”。
没错,这叫做增量传输,但这是另一回事。要启用此功能,请添加-c
或--checksum
开关。使用此开关后,rsync将检查线路两端存在的文件。它以块的形式执行此操作,比较两端的校验和,如果校验和不同,则仅传输文件的不同部分。但是,正如@Jonathan指出的那样,仅当两端的文件大小相同时才进行比较-不同的大小将导致rsync上传整个文件,并用相同的名称覆盖目标。
最初,这需要在两端进行一点计算,但是,例如,如果您经常备份非常大的文件(固定大小的文件,其中经常包含较小的更改),则在减少网络负载方面可能非常有效。我想到的示例是在虚拟机或iSCSI目标中使用的虚拟硬盘映像文件。
值得注意的是,如果您用于--checksum
将一批全新的文件传输到目标系统,则rsync仍将在源系统上计算它们的校验和,然后再传输它们。为什么我不知道:)
因此,简而言之:
如果您经常使用rsync只是“将内容从A移动到B”,并希望选择该选项来取消该操作,然后再继续执行该操作,请不要使用--checksum
,但请使用--append-verify
。
如果您经常使用rsync备份内容--append-verify
,则除非您习惯于发送大型文件,这种文件的大小会不断增长,但是一旦写入就很少修改,那么使用rsync 可能对您没有多大帮助。作为一个额外的提示,如果您要备份到支持快照的存储,例如btrfs
或zfs
,则添加该--inplace
开关将帮助您减小快照的大小,因为不会重新创建更改的文件,而是将更改的块直接写入旧的块。如果要避免仅在进行较小更改时rsync在目标上创建文件副本,此开关也很有用。
使用时--append-verify
,rsync的行为就像在大小相同的所有文件上一样。如果它们在修改或其他时间戳上有所不同,它将用源覆盖目标,而无需进一步检查这些文件。--checksum
将比较名称和大小相同的每个文件对的内容(校验和)。
2015-09-01更新,已更改以反映@Alex提出的观点(谢谢!)
2017年7月14日更新,已更改以反映@Jonathan的观点(谢谢!)