附录:

附录:

我该如何通过非常不稳定的互联网连接复制文件?

有时,连接会丢失,有时一台机器或另一台机器的 IP 会更改,有时两者都会更改,但动态 DNS 会捕获它。

您建议使用哪种工具或命令?

我听说rsync仅复制差异非常漂亮,但这意味着需要大量工作,要么一次又一次地重新启动它,要么将其放入 while 或 cronjob 中。

我希望有一些更简单且万无一失的事情。

附录:

它涉及时不时地将几个包含一些大于 5GB 的非常大文件的目录从一个站点复制到另一个站点。复制后,两者都被本地移动到不同的位置。

我无法在网络层面做任何事情,我也不具备这样做的知识。

我不想为了使用 wget 而设置 Web 服务器。这并不安全,而且看起来像是一条迂回的路线。

我已经建立了 SSH 连接,现在可以进行 rsync,因为两台机器上都已经安装了 rsync(我无法启动并运行 rsync 守护进程)。

关于我如何制作的任何提示通过 ssh 的智能 rsync这样当线路暂时被切断时它会尝试继续?但当 ssh 连接中断时,rsync 不会成为问题。所以像这样的东西(https://serverfault.com/questions/98745/)可能不会工作:

while ! rsync -a .... ; do sleep 5 ; done

有任何想法吗?

多谢!

加里

答案1

好的,我已经在我的案例中找到了解决方案。我确实正在使用建议的while 循环。现在看起来像这样:

while ! \
rsync -aiizP --append --stats . -e ssh [email protected]:./path/rfiles ; \
do now=$(date +"%T") ; echo · Error at $now · ; sleep 5 ; done

如果没有 while 循环,我将不得不再次手动启动 rsync。现在,它就像一个魅力一样发挥作用。

有趣的是:我在连接丢失后十分钟以及连接重新启动并再次运行后大约 9 分钟时收到错误!与此同时,终端窗口中没有任何反应。我想知道这个10分钟的超时是从哪里来的。

非常感谢您的帮助。

加里

仅供参考:这是我收到的超时错误(10 分钟后):

...
thedirectory/afile.ext
Read from remote host myhost.com: Operation timed out
rsync: writefd_unbuffered failed to write 16385 bytes [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (394 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-40/rsync/io.c(452) [sender=2.6.9]

答案2

我绝对会建议rsyncrsync每当我认为连接有可能中断时,我就会复制文件。如果复制失败,我知道我可以简单地重新启动它。

while如果您需要它自动重新启动直到成功,则很容易将其放入循环中。

答案3

rsync 的主要问题是它无法继续单个文件。如果您要复制复杂的目录结构,这是可以的,但如果您想复制例如单个 DVD 图像,则它不会很可靠。

对于这种情况,我使用 wget。更确切地说,

wget -c -t 0 -T 10 http://....

特别有趣的是 20 秒超时,它解决了我们的工具由于单个数据包丢失而有效挂起/冻结的常见问题。

当然,它需要在源端有一个http服务器。如果不切实际,有一个工具名为

split

它可以将大文件分割成小文件,然后使用 rsync。分割的文件稍后可以用一只简单的猫重新统一。

当然,您甚至可以循环运行 rsync 直到成功:

while ! rsync ...; do echo next try; done

评论后扩展

rsync 继续文件,带有-partial标志。谢谢@GregHewgill! :-)

答案4

如果您尝试在文件复制工具级别解决此问题,rsync 就足够了。请务必使用 options -au,以便 rsync 不会尝试多次同步同一文件。只要 Rsync 能够在中断之前至少交换文件列表并完整传输一个文件,它就会取得进展;如果你不能确保这一点,那么如果没有网络级工具,你就会遇到麻烦。

我认为在网络级别解决这个问题更容易(也更自然):在不可靠的网络连接之上构建可靠的网络隧道。几年前我用过岩石正是为了这个目的;它没有维护,我最近没有尝试编译或使用它,但没有根本原因说明它不起作用。手表这个空间的替代品。

相关内容