本人负责一台重要数据服务器(以下简称数据服务器)的维护,本服务器运行的应用程序每天都会产生大量新数据,应用程序会每天夜里11点钟自动备份数据为一个以当天日期为文件名的文件,当下个月有以同日期命名的文件时会自动覆盖,也就是保留了最近一个月的数据备份。本数据服务器为Windows Server 2008 R2系统,内网IP,但可访问外网,而外网无法访问本数据服务器。
为防止服务器故障造成数据丢失,选择了一台处于外网的有静态IP的服务器(以下简称FTP服务器),在Windows 2008 Server R2下做了Microsoft FTP服务,并且打开了被动模式,但在数据服务器上用windows 2008自带的FTP在命令行下操作无法使用被动模式,即使用“quote PASV"命令强制使用被动模式,”ls“和"put"时仍然提示如下错误:
501 Server cannot accept argument.
150 Opening ASCII mode data connection.
经网上查询,很多人都认为windows自带的FTP无法正常使用被动模式,因而转向使用其他FTP客户端。经测试FlashFXP具有丰富的命令行模式可用,现将利用FlashFXP结合Windows 2008 R2的任务计划程序功能实行对本地文件夹下的文件定时上传到指定的FTP服务器的方法步骤介绍如下:
1,在数据服务器上安装FlashFXP(网上有兼容32位及64位的绿色版),如我是将FlashFXP安装在d:\ FlashFXP文件夹下。在选项中设置FlashFXP的文件传输规则共二条:第一条是当目标文件的时间较旧时上载动作为覆盖旧文件,因为备份文件是以日期命名,当下一个月日期相同时会产生同名文件,在上载到FTP服务器时会把上个月的同名文件自动覆盖掉,以保留最新备份;第二条是当目标文件的时间相等时上载动作为跳过,这样避免相同备份多次上传造成时间和流量的浪费,也避免硬盘加速老化。
2,添加的FlashFXP程序文件夹到环境变量中。
3,创建autoFTP.bat文件,写入以下内容并将autoFTP.bat放置在Ç盘根下:
flashfxp.exe -c2 -upload ftp://远程FTP服务器用户名:密码@远程FTP服务器IP:端口 -localpath="本地盘符:\本地备份文件夹名\" -remotepath="/远程FTP服务器备份文件夹名/"
该命令行的参数解释如下:
-c2:当队列中的文件全部传输完毕后自动关闭FlasFXP。
-upload:上传。
-localpath:更改本地路径为要上传的本地文件夹,文件夹名后没有文件名代表着上传本文件夹下的所有文件。
-remotepath:更改远程FTP服务器路径为要上传到的文件夹。
4,创建计划任务。打开数据服务器上的任务计划程序,点击左侧的“创建任务”,在常规卡片中输入计划的名字,勾选“不管用户是否登录都要运行” - “不存储密码”,勾选 '使用最高权限运行'。在 '触发器' 卡片中点击 '新建',选择 '每天',设置时间为2:00:00,勾选 '启用',确定。在 '操作' 卡片中点击“新建”,“操作”是“启用程序”,浏览到放置在ç盘根下的autoFTP.bat文件打开,“起始于”处填写C:\ 然后点击“确定”,再确定关闭“创建任务”窗口,计划任务创建完毕,每天凌时2点钟会启动FlasFXP自动上传处于内网的数据服务器到处于外网的FTP远程服务器当中,有新的同名文件也会上传,完全相同的旧文件不上传。