通过高延迟网络连接同步多个(小)文件的方法

时间:2010-01-18 17:09:24

标签: svn synchronization rsync cwrsync

我们通常使用Subversion(客户端上的svn更新;单向)将我们的软件应用程序部署到我们的客户端。由于高延迟(大文件下载速度很快),我们目前遇到了一个客户的问题,因为他们在中国,我们的服务器在加拿大。在很长一段时间后,Subversion只会因错误而超时。

我们的应用程序有许多小文件(.aspx,.config等)和一些较大的文件(.dll,.jpg),总共大约100mb-200mb。

我目前正在考虑执行以下操作:

  1. 在服务器上执行本地svn结帐
  2. 压缩结果
  3. FTP或rsync将大型zip文件发送到 外国机器
  4. 暂时解压缩文件 文件夹中。
  5. 从该临时值执行本地rsync 文件夹到我们的典型安装 文件夹中。
  6. 有没有更好的解决方案?

    • 设置Subversion镜像更近 到目的地? (我每个月只需要几个小时,但可能很难找到)
    • 使用其他版本控制系统? (是git任何 更好的高延迟连接)?
    • 有没有办法打包颠覆 补丁(包括二进制文件)到 在目的地重新申请 而不是发送所有数据?
    • 使用DropBox(使用Amazon S3)将文件传输到临时文件夹会更好吗?

3 个答案:

答案 0 :(得分:4)

在你给它一个镜头之前,不要为整个小文件树敲rsync。它不会对每个文件进行往返,它是流水线的,因此它应该与整个数据集中的任何其他文件一样快。 (与TCP一样快,可以在高延迟链路上将帧重组为有序数据包。)

查看how rsync works有关如何避免往返的说明。

答案 1 :(得分:2)

您可以在所有文件中创建所有更改的unix样式补丁。只需将其传输到zip文件中即可。

答案 2 :(得分:0)

您可以使用git(可能使用git-svn)来处理传输。它非常有效地移动文件版本的差异。

否则,您可以使用xdiff二进制差异工具。