当前位置: 主页 > 服务器技术 > Ftp服务器 > ftprush实现多个FTP服务器自动同步

ftprush实现多个FTP服务器自动同步

时间:2010-7-16来源:互联网 点击:

在ftprush的任务窗口中新建任务,选择运行脚本,设置为持续方式,间隔时间最好设置为小于一个文件fxp的时间。
如图:

两种方案:
1.一个源FTP服务器同时与多个目的FTP服务器的同步

脚本:
RushApp.FTP.Transfer(1, ‘FTP1‘, ‘/movies‘, ‘‘, ‘FTP2;FTP3‘, ‘/电影‘, ‘‘, RS_DIRDES or RS_DIRSRC, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, 0, 0, 0, RS_SORTDATE or RS_SORTDES, 0, 0, 3);

说明:Transfer(1 此处的1指的是整个fxp进程从第一个窗台顺序开始执行。这个很关键,因为如果不设置指定的窗台位置,那么当fxp还没有完成的时候,脚本开始第二次执行,它会打开新的窗台去fxp。在RushApp.FTP.Transfer的官方解释中,指出可以用R S_APPEND这个指令实现将后续队列添加到当前窗台中,但经实验无效。也许后续版本会有这个功能。
RS_DIRDES or RS_DIRSRC 指的是队列中,源服务器和目的服务器均fxp的是文件夹。
RS_SORTDATE or RS_SORTDES 将文件和文件夹按时间进行降序排列。
0, 0, 3); 此处的3指的是按时间排列最新的3个文件夹,可根据需要修改此数字。
FTP1/FTP2/FTP3均为FTP服务器在ftprush中的名字,与站台管理窗口中的目录无关(如果站台管理窗口中有两个目录,下面均有FTP2这个服务器名字,执行脚本会登陆到哪一个呢?没试过,不清楚)。

运行效果:
在窗台1中,从FTP1的/movies/文件夹中选取最新三个文件夹FXP到FTP2的/电影/文件夹中,同时在窗台2中,也从FTP1 FXP同样内容到FTP3中。如果在这个过程中,FTP1中有了新内容,那么脚本下一次运行的时候会将最新内容fxp到FTP2和FTP3中,实现同步。

2.顺序进行FXP的FXP串,也就是A-->B-->C-->D

脚本:
RushApp.FTP.Transfer(1, ‘‘, ‘‘, ‘‘, ‘FTP1;FTP2;FTP3‘, ‘电影‘, ‘‘, 0, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, 0, 0, 0, RS_SORTDATE or RS_SORTDES, 0, 0, 3);

说明:这个脚本中没有RS_DIRDES or RS_DIRSRC 参数,此处的‘电影‘是指ftprush中各个FTP服务器书签的名字。因为很多情况下各个FTP未必会采用相同的目录名,那么就可以用书签名来统一各个目录。

运行效果:
在窗台1中,FTP1将书签"电影"目录下的最新三个文件夹FXP到FTP2中。同时在窗台2中,FTP2将书签"电影"目录下的最新三个文件夹FXP到FTP3中。以此类推。

FTPRUSH的相关设置:
在队列选项中,勾选“队列启动的时候自动重设失败的队列”(不然每个窗台中会存在大量失败的队列,理论上应该会消耗一些系统资源,也不方便检查)
文件存在规则中,当FXP的时候,全部选择为自动跳过。(FTPRUSH和flashfxp在队列中关于文件大小的检查方式不同)
显示/排序中,远程窗口的文件夹和文件排序全部设置为按日期降序排列(此处很重要,否则不会将最新的文件自动FXP过去)。
至于是否过滤空目录,是否删除源服务器未能下载的0字节文件,就看个人爱好了。反正我是全部勾选上的,免得乱七八糟。

一些心得:
1.多个目录需要fxp。
一个脚本中反复使用这一行命令,每行命令中设置不同的目录即可。它就会顺序地FXP下去。
2.在FXP串中,某一站点当机,导致后面站点无法接收到文件。
很简单,在FTPRUSH的站点管理中,设置该站点禁用,脚本运行时就会跳过该站点执行下去。
3.某个站点不需要某个特定文件
在该站点的属性中,将其添加到过滤列表中,当然,如果是FXP串,那么后续站台将无法获得这一文件,可以手动将该文件FXP到后续站台中。
4.不想运行脚本中的某条命令,在该命令前加上//符号即可。

有关FTPRUSH详细的脚本命令请参考FTPRUSH官方网站
稍做修改应该可以实现自动下载及自动删除的功能。

一个BUG:
当FTP1的A文件正在上传中的时候,脚本开始执行,尝试将A文件FXP到FTP2中,标记失败后有可能导致后续队列全部被标记为失败。我在软件区问过这个问题,似乎没有人碰到过,可能是RPWT。

内网使用FTPRUSH的缺陷:
当FXP时间过长的时候,控制链路会丢失,导致文件已经FXP完了,但FTPRUSH还显示在继续FXP,无法进行下一队列。用flashfxp的时候,可以设置传输的时候发送"NOOP"命令来解决这一问题,但FTPRUSH如果使用此命令会引起FXP中断。希望下一版本能够解决此问题。

我在大约14台FTP中用此方法实现自动同步,运行了一星期左右,效果还是不错,但某些地方还是需要手工处理一下。希望大家探讨一下完美的解决方案。

 

站长资讯网
. TAG: ftprush FTP服务器
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言