我需要通过低质量的宽带链接将大量文件文件传输到服务器。文件很大,传输每个文件大约需要 30 分钟。
我使用 scp,但它有时会挂起——传输不会因错误而失败,它会继续运行,但不会传输更多数据。
因此,我正在寻找一种“故障安全”上传解决方案,即使链接失败几分钟或不可靠,该解决方案也能正常工作。
我的想法是:
- 将大文件分成小部分
- 上传部分,超时并在失败时重试
问题:
- 有没有现成的工具可以实现这个想法?(没有特别需要 scp。可以是 ftp 或其他任何东西)
- 有没有办法检测 scp 何时挂起?((即还在运行,但不传输数据)
您可以使用 rsync 将文件从一台计算机复制到另一台计算机。rsync 可以使用 ssh 作为其底层传输。结合
rsync --partial
脚本(例如这个脚本)在出现网络故障时重试,即使出现网络错误,您也应该能够移动文件。另一种方法是使用 将远程文件系统挂载到本地计算机上
sshfs -o reconnect
,然后仅 cp 文件。sshfs/Linux 会处理剩下的事情。根据我今天做的一些测试,这似乎比rsync 慢得多。最后,您可以在两台机器之间设置 VPN。这涉及最多的工作,并且上述任何一种解决方案都容易得多,但它会解决不稳定的网络连接问题。正如一些人所指出的,这也可能是不稳定的。如果 VPN 像 OpenVPN 一样非常积极地重新建立连接,它就可以工作,但上述解决方案要好得多。