我妻子的实验室正在美国与新加坡的合作者合作做一个项目。他们偶尔需要跨大洲传输大量高维图像数据(压缩后约 10GB)。在现有技术条件下,对于这种使用场景,有什么好的解决方案吗?
我能想到一些,但似乎都不太理想:
- 通过互联网直接连接:传输速率约为500KB/s,同样缺少处理错误/重传的工具。
- 上传到常见服务器或服务(如 Dropbox):对于非美国合作者来说上传很痛苦。
- 刻录光盘或复制到硬盘并通过快递运送:延迟相当大,另外还需要进行本地复制的额外工作。
有什么建议么?
更新:合作双方都不是精通技术的用户。
答案1
我建议你使用同步。Rsync 支持增量传输算法,因此如果您的文件仅部分更改,或者上一次传输异常终止,Rsync 会足够智能地仅同步新的/更改的内容。
原始 Rsync 有多个移植版本,可以用于 Windows 和其他非 UNIX 兼容系统,既有免费的也有收费的。请参阅Rsync 维基百科文章了解详情。
通过 SSH 进行 Rsync 的使用非常广泛,而且效果很好。如今 10GB 的数据量相对较小,而且您没有指定“偶尔”是什么意思。每周?每天?每小时?以 500KB/秒的传输速率,大约需要 6 小时,其实不算长。如果您需要频繁传输数据,最好创建一个 cron 任务来自动启动 rsync。
答案2
通过互联网连接可能是一个可行的选择,而诸如 bittorrent 之类的程序恰好适合此目的,因为它会将文件分解成逻辑片段,通过互联网发送并在另一端重建。
Bittorrent 还可以提供自动错误更正、修复损坏部分的功能,并且如果更多人需要这些文件,那么他们将能够从尽可能多的已经下载了文件(部分)的来源获得该文件。
当然,人们认为这是下载电影等内容的好方法,但它确实有更多合法用途。
许多 bittorrent 客户端还内置了跟踪器,因此您不需要专用的服务器来托管文件。
答案3
将文件分割成 50MB 大小的块(例如使用split
)。计算所有块的校验和(例如md5sum
)。使用 FTP 和容错 FTP 客户端(例如lftp
Linux)直接上传。传输所有块和包含所有校验和的文件。
在远程站点上,验证所有块是否具有所需的校验和,重新上传失败的块,然后将它们重新组装到原始文件(例如使用cat
)。
根据需要恢复服务器位置(我发布时假设目标站点提供了服务器,并且文件准备好后您会在本地开始传输)。您的 FTP 客户端不应该关心。
我以前也遇到过类似的问题,使用容错 FTP 客户端就可以解决问题。没有任何位被翻转,只是常规连接中止,所以我可以跳过创建块并直接上传文件。我们仍然为整个文件提供了校验和,以防万一。