哪种上传技术适合这种用例?

哪种上传技术适合这种用例?

当客户从其他软件供应商转到我们这里时,我的部门会进行数据迁移,通常我们需要获取他们的旧数据(无论数据是什么)的副本并将其发送给我们。

我们面临的最大挑战是,有些系统会有数十万个文件(主要是文档/图像存储库),整个集合的大小可能达到数十 GB。我们在转换过程开始时获取其数据的副本,然后在安装之前获取第二组数据,而安装可能要几个月后。

我们正在寻找更好的解决方案来上传第二组数据。目前的主要方法是创建整个目录的大型 zip 文件,然后通过 FTP(通过只写帐户)将其传输到我们的服务器,这当然会产生很大的开销,因为大部分文件可能在初始数据抓取后没有改变。

这类工具rsync似乎是完美的解决方案,但据我研究,没有简单的方法可以像 FTP 那样对帐户进行“只写”。防止未经授权下载其他客户端的数据是高层关注的一大问题。

总而言之,我应该使用什么样的工具来满足这些要求:

  • 不允许下载其他客户端的数据。
  • 客户端只需执行最少的设置工作。通常我们会通过电话来指导如何上传数据,但我们现场没有人。而且电话另一端的人通常非常不擅长使用电脑。
  • 客户端的 Windows 可比性。我们 95% 的客户是 Windows 用户,另外 5% 是 Mac 用户,但 Mac 兼容性并不是主要问题(但会是一个 +)。
  • 允许我们不发送未更改的冗余文件
  • 客户端的可靠性。BITS我们过去曾尝试过上传,但我们发现相当多的 XP 时代机器无法正常工作。我们使用的任何客户端都需要在 99% 的时间内在任何 Windows 机器 XP SP2 或更新版本上工作。
  • 每个客户端的服务器端设置工作量最少。我们不想为每个上传的客户端创建一个单独的用户,但如果必须这样做,就不会排除仅将工具算作一个-。
  • 服务器端程序在Windows内部运行。我们主要经营 Windows/C# 业务,因此我们不希望安装和管理 Linux 机器。但是,如果所讨论的工具能够很好地满足所有其他要求,则不排除它不能在 Windows 上运行。

目前的领先者正在rsync编写某种用户管理器,它将为每个客户端在 rsync 服务器上创建一个单独的用户帐户,但我确信还有其他我不知道的更适合的选项。

答案1

在我看来,您已经描述的解决方案是您最好的选择。每个客户端的单独帐户是我能想到的唯一满足第一个要求的方法,使用 rsync 的 SSH 密钥(而不是密码)有助于实现这一点。Rsync 本身解决了其他问题。

答案2

在问完这个问题后做了一些研究,我认为我找到了一个符合所有标准的解决方案,差分

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

完成此操作后,我们只需在执行和传输初始 zip 之前创建一个签名文件,并将其副本保存在文件中。一旦要进行第二次传输,我们将使用该原始签名文件生成 diff,并仅将 diff 上传到 FTP 服务器。

相关内容