一次上传到多个FTP站点

我目前正在构build一个小型的CDN拓扑系统,而且我正在寻找在所有服务器中的某个文件夹中同步文件的最佳方式。

我需要能够上传一个文件到一个单一的 FTP,并得到它复制到所有其他服务器。

需要同步的文件夹的大小大约是50GB,我需要在同步5分钟的差异。

所有服务器上的O / S都是Windows 2008 R2。

有任何想法吗 ?

我最终使用了一个名为RepliWeb的企业级程序,它正在做一个了不起的工作!

好推荐!

在Linux上,我build议使用RSYNC,Windows有几个 RSYNC“克隆”

RSYNC非常适合传输文件,您可以告诉它只传输新的或修改过的文件,甚至删除原始服务器上不可用的旧文件。 我绝不是Windows专家,但我想你可以在PowerShell / Batch脚本中设置它,每隔几分钟自动运行一次,或者在需要更新时手动运行。 如果没有什么新的传输RSYNC会弄清楚,不运行,所以你不会使用带宽。

第二个选项,取决于你的技能等是开发一些定制软件来做到这一点。 我猜想这会比较简单,你可以用Python,Ruby甚至PHP来做,但是需要遵循几个基本步骤;

  1. 加载远程服务器的列表
  2. 获取本地文件及其上次修改date的列表
  3. 使用FTP或类似的东西连接到一个*远程服务器,列出这些文件并获得远程服务器上的最后修改date
  4. 确定需要同步远程服务器上的哪些文件(最后修改date将不同,否则这些文件将不存在)
  5. 将文件传输到所有远程服务器

*我说一台服务器,假设所有的服务器将会同步IE的文件模式时间将是相同的

我记得在Python中构build一个类似的脚本,当我回家的时候,我会看看我能不能为你挖掘它,但是我仍然build议RSYNC是最好的select,如果你能得到它的工作(IE它所有这一切已经)

解决scheme:假设你真的有一个主FTP和各种奴隶:

上传后,通过调用yourwebsite / distribute.php来触发一个系统('distribute.sh'),其中包含:

rsync <a ton of parameters to upload to Slave A> rsync <a ton of parameters to upload to Slave B> rsync <a ton of parameters to upload to Slave C> 

rsync支持惰性同步。 所以你不会继续推动整个事情。

另一种方式应该是(ab)顺便使用版本控制系统'git'。 所以上传的东西会自动添加到仓库(我认为git使用不同的术语),你的奴隶经常(例如cronjob)同步到那个git。 好处可能是(更多)交易安全。 没有将半上传文件分发给从服务器的危险。

Perforce(afaik合法免费,最多2个用户和5个客户端规格,非常非常稳定,还有巨大的二进制文件)或SVN(烦人的.snv子文件夹,我不会说这个稳定的东西…)可能会做同样的为你。 Perforce IMO比git更容易掌握。

但git可能是“更现代化”的方式,而且是免费的。 不知道,它是如何响应巨大的二进制文件,也就是说,如果它可以被说出来试图diff'em。 或者保持奴隶版本的深度在零…

评论:嘿,我想知道你是否跟我一样:我按摄影,所以在这个领域我不得不使用一个烦人的,不稳定的,微小的上传连接到达(理想情况下只有1个)FTP服务器。 从那里(我的webhosters服务器中心),如果能够通过那些(我相信:arm粗的T1电缆…)快速分发给所有的图像代理商,那将是非常好的…

我还没有脚本解决scheme,但我即将…