断电后从头开始 rsync

断电后从头开始 rsync

当我在远程同步一个大文件时,rsync 似乎在本地保存了一个临时文件。

然后机器突然断电关机。

再次启动机器后,似乎 rsync 从一开始就同步大文件,但我发现有一个文件已经同步了大约 60%(1G),我的 rsync 使用有什么问题?

我使用的命令:

rsync --partial -av -r --progress user@remote /local-dir

答案1

正如蒂姆所说,这听起来很正常;rsync 会知道它有一个文件似乎是远程文件的部分副本,但它仍然必须检查它拥有的文件实际上是否是您正在复制的文件。

在进行此检查时,它会显示已“传输”的文件的字节数,因此看起来好像是在再次复制文件 - 但如果您查看传输速度,它应该比通过网络传输的速度快得多。最终,rsync 将越过已复制的字节并找到需要通过网络传输的新字节,然后您会看到速度变慢。

简而言之,我认为你对 rsync 的输出感到困惑,因为它没有区分“通过网络传输的字节数”和“仅通过检查本地副本是否与远程副本匹配而传输的字节数”

答案2

这是正常的。rsync 应该返回已经传输的文件来检查更新。

-u 标志使 rsync 查看文件修改时间;如果添加该标志,它应该跳过源上未更改的文件。

答案3

只需将临时文件(.somethingXYZ)重命名为来自远程源的正确文件名(something)。

那么 rsync 肯定只会下载缺失的内容。

(如果您在运行 rsync 时查看文件夹,您将看到生成一个新的 .somethingABC 文件,该文件将以每秒几十 MB 的速度增长……因为 rsync 将从“半完成”的本地文件读取,而不是通过网络从远程源再次下载它)。

答案4

您可以强制 rsync 对文件进行校验并仅使用以下命令复制剩余数据。

rsync -av --progress --checksum --inplace --no-whole-file SOURCE DESTINATION

相关内容