当客户从另一个软件供应商切换到我们时,我的部门会进行数据迁移,通常我们需要获取他们旧数据的副本(无论可能是什么)并将其发送给我们。
我们面临的最大挑战是某些系统将拥有数十万个文件(主要是文档/图像存储库),整个集合的大小可能达到 10 GB。我们在转换过程开始时获取他们数据的副本,然后在安装之前获取第二组数据,这可能是几个月后。
我们正在寻找更好的解决方案来上传第二组数据。现在主要的方法是创建整个目录的大 zip 并将其通过 FTP 传输(通过只写帐户)到我们的服务器,这当然有很大的开销,因为大部分文件可能没有改变解决初始数据抓取。
像这样的工具rsync
似乎是完美的解决方案,但根据我的研究,没有像我们使用 FTP 那样“只写”帐户的简单方法。防止未经授权下载另一个客户的数据是上级的一个大问题。
总之,我应该使用什么样的工具来满足这些要求:
- 不允许下载其他客户端的数据。
- 在客户端执行最少的设置工作。通常会通过电话提供有关如何上传数据的说明,我们现场没有任何人。此外,电话另一端的人通常在计算机使用方面非常不熟练。
- 客户端的 Windows 可比性。我们 95% 的客户是 Windows 用户,另外 5% 是 Mac,但 Mac 的可比性不是主要问题(但会是 +)。
- 允许我们不发送未更改的冗余文件。
- 客户端的可靠性。我们过去曾尝试使用
BITS
上传,但我们发现相当多的 XP 时代机器无法正常工作。我们使用的任何客户端都需要 99% 的时间在任何 Windows 机器 XP SP2 或更新版本上工作。 - 每个客户端的最小设置工作服务器端。我们不想为每个上传的客户创建一个单独的用户,但如果我们不得不这样做,不排除只算作 - 的工具。
- 服务器端程序在 Windows 内运行。我们主要是一家 Windows/C# 商店,不必设置和管理 Linux 机器。但是,如果有问题的工具很好地满足了所有其他要求,则不排除不在 Windows 中运行。
目前领先者正在rsync
编写某种用户管理器,它将在每个客户端的 rsync 服务器上创建一个单独的用户帐户,但我确信还有其他选项我不知道哪个更适合。
IMO,您已经描述的解决方案是您最好的选择。每个客户端的单独帐户是我能想到的满足第一个要求的唯一方法,并且使用带有 rsync 的 SSH 密钥(而不是密码)有助于实现这一点。Rsync 本身解决了其他问题。
在问了这个问题后做了更多的研究后,我想我找到了一个适合所有标准的解决方案rdiff。
所需要做的就是编写一个包装应用程序,该应用程序充当 、 、 的自提取器
rdiff.exe
,cygwin1.dll
然后cygpopt-0.dll
为相关的 rdiff 操作提供易于使用的 GUI 界面。之后,我们只需在执行和传输初始 zip 之前制作一个签名文件,并将其副本保存在文件中。一旦第二次传输发生,我们使用原始签名文件生成差异,并且只将差异上传到 FTP 服务器。