由于连接断开,rsync 无法完成上传

由于连接断开,rsync 无法完成上传

我正在尝试将约 300 万个 jpeg 文件(约 90GB)上传到远程服务器。起初我以为 rsync 非常适合这项工作,但一开始它确实完全占用了我的上传链接。

但是我的互联网连接有点不稳定,每隔几个小时就会断线一次。当目标目录中已经有一些文件时,rsyncs 启动阶段似乎需要更长的时间才能完成,显然是在检查所有文件是否有更改。现在,这个过程需要几个小时才能开始上传任何新文件。我的连接无法保持那么长时间,因此需要重新启动该过程。

因此我实际上根本没有取得任何进展,因为启动时间太长,而且在完成之前就被取消了。我需要 rsync 或者类似 rsync 的东西,它可以感知连接断开,并且可以重新连接而不会丢失所有进度。

rsync 是否有这样的工具或选项?

答案1

一些想法 -

rsync 是否对文件进行校验?如果是,请将行为更改为日期/时间和文件大小,并确保这些属性得到保留。

在客户端和服务器之间设置 OpenVPN,并在其间进行 rsync。由于端点的 IP 地址不变,并且没有 NAT 来中断连接,因此当 OpenVPN 恢复时,rsync 将从中断处继续。

答案2

如果您的文件与初始 rsync 相比没有变化,您可以尝试使用 rsync 选项--ignore-existing忽略接收远程服务器上的现有文件,而只处理不存在的文件。

答案3

向未来的 Google 员工总结一下我的经验:

  • 尝试通过复制 a*、b* 等将文件拆分成多个批次是一个好主意,并且有助于完成上传

  • 实际问题是我错误地选择了要上传到的云服务器上的 HDD 卷。HDD 根本无法处理包含 300 万个文件的目录,甚至像 cp 这样的工具也无法将数据从 HDD 移到其他地方,只能在 100% 的磁盘等待时间内进行准备,而实际上并没有执行任何文件复制。改用 SSD 后,rsync 的启动过程要快得多,并且不会再出现问题。

相关内容