什么上传技术适合这个用例呢?

我们的部门在客户从另一个软件供应商切换到我们时进行数据迁移,我们通常需要获得他们的旧数据(不pipe可能是什么)的副本并将其发送给我们。

我们面临的巨大挑战是一些系统将有数十万个文件(主要是文档/图像库),整个集合可能在十几兆字节的大小。 我们在转换过程开始时获取他们的数据副本,然后我们在安装之前抓取第二套,这可能在几个月后。

我们正在寻找更好的解决scheme来上传第二组数据。 目前主要的方法是创build一个大的整个目录的zip文件和FTP(通过一个只写帐户)到我们的服务器,这当然有一个很大的开销,由于大部分文件可能没有改变分享最初的数据抓取。

rsync这样的工具看起来像是一个完美的解决scheme,但从我研究的内容来看,没有简单的方法来像“FTP”那样只写一个帐户。 防止未经授权下载另一个客户的数据是上级关注的重点。

总之,我应该使用哪种工具来满足这些要求:

  • 不允许下载其他客户的数据。
  • 最小的安装工作要执行客户端。 通常通过电话提供有关如何上传数据的说明,而且现场没有任何人。 此外,电话另一端的人往往是非常不熟练的电脑使用。
  • 客户端的Windows可比性。 95%的客户是Windows用户,另外5%是Mac电脑,但是Mac的可比性不是主要关心的问题(但是会是+)。
  • 允许我们不发送没有改变的冗余文件
  • 客户端的可靠性。 以前我们试图用BITS来上传,但是我们发现相当多的XP时代机器无法正常工作。 我们使用的任何客户端都需要在任何Windows XP SP2或更新版本上运行99%的时间。
  • 最小的安装工作服务器端每客户端。 我们不希望为每一个上传的客户端创build一个单独的用户,但是如果我们不得不这样做的话,不排除一个工具只能算作一个 – 。
  • 服务器端程序在窗口内运行。 我们主要是一个Windows / C#商店,不得不设置和pipe理一个Linux机器将不是首选。 但是,如果有问题的工具能够很好地满足所有其他要求,那么就不排除在Windows中不能运行。

目前的先行者是rsync和编写某种用户pipe理器,可以在每个客户端的rsync服务器上创build一个单独的用户帐户,但我相信还有其他选项,我不知道哪些可能更适合。

海事组织,你已经描述的解决scheme是你最好的select。 为了满足第一个要求,每个客户端的独立帐户是我能想到的唯一方法,并且使用rsync密钥(而不是密码)可以帮助实现这一点。 Rsync本身解决了其他问题。

在提出这个问题之后做了更多的研究之后,我想我find了一个符合所有标准的解决schemerdiff 。

所有需要完成的工作是编写一个包装程序,作为rdiff.execygwin1.dllcygpopt-0.dll自提取程序,然后为相关的rdiff操作提供一个易于使用的GUI界面。

这样做之后,我们只是在执行初始zip之前创build一个签名文件,并将其保存在文件中。 一旦第二次传输即将发生,我们使用该原始签名文件来生成diff,并仅将diff上传到FTP服务器。