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