在缓慢或不稳定的网络链接上进行可靠的文件传输

在缓慢或不稳定的网络链接上进行可靠的文件传输

我需要通过低质量的宽带连接将一些文件传输到服务器。这些文件很大,每个文件大约需要 30 分钟才能传输完毕。

我使用 scp,但它有时会挂起——传输不会因错误而失败,它会继续运行,但不会传输进一步的数据。

因此,我正在寻找一种“故障安全”上传解决方案,即使链接失败几分钟或不可靠,它也能正常工作。

我的想法是:

  1. 将大文件拆分成小部分
  2. 上传分段,如果失败则超时重试

问题:

  • 是否有一个可以立即运行的工具来实现这个想法?(不需要 scp。可以是 ftp 或其他任何东西)
  • 有没有办法检测 scp 何时挂起?(即它仍在运行,但不传输数据)

答案1

您可以使用 rsync 将文件从一台计算机复制到另一台计算机。rsync 可以使用 ssh 作为其底层传输。结合rsync --partial以下脚本这个在网络故障的情况下重试,即使出现网络错误,您也应该能够移动文件。

另一种方法是使用 挂载远程文件系统到本地计算机sshfs -o reconnect,然后只需 cp 文件即可。sshfs/Linux 将处理其余部分。根据我今天进行的一些测试,这似乎是很多比 rsync 慢。

最后,你可以在两台机器之间设置 VPN。这需要做的工作最多,而且上述两种解决方案都容易得多,但它可以解决网络连接不稳定的问题。正如一些人指出的那样,这也可能会不稳定。它如果 VPN 非常积极地重新建立连接(就像 OpenVPN 一样),那么这种方法就可以奏效,但是上述解决方案要好得多。

相关内容