众所周知,Linux系统可以用rsync来实现文件或目录的同步,windows系统下也一样可以。我们现在就用cwRsync来实现windows server 2008系统下的文件同步。
- 修改RsyncServer的配置文件(C:\Program Files (x86)\ICW\rsyncd.conf)
use chroot = false #不使用chroot
strict modes = false #静态模式
hosts allow = * #配置全局哪些IP可以访问
log file = rsyncd.log #log文件名,可以指定路径
pid file = rsyncd.pid
port = 8173 #默认端口873
uid = 0 #不指定uid,不加这一行将无法使用任何账户
gid = 0 #不指定gid
max connections = 10 #最大连接数10
lock file = rsyncd.lock
Module definitions
Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
[test]
path = /cygdrive/f/xuad #需要同步的路径(F:\xuad目录)
read only = false #只读权限
transfer logging = yes #记录传输日志
ignore errors #忽略无关的IO错误
list = no #不列文件表
hosts allow = 192.168.0.132/255.255.255.0 #允许访问的IP地址
hosts deny = * #不允许hosts allow以外的任何IP访问
- 安装完成后,在“服务”里面就可以看到cwRsync对应的服务了,安装完成后需要手动启动该服务。将RsyncServer的启动方式设置成自动,然后启动该服务。注:针对需要同步的目录,别忘记给SvcCWRSYNC用户读取的权限。
- 用netstat –anp tcp查看8173端口是否已监听,在客户端服务器telnet 192.168.0.108 8173看端口是否已通。
三、目的服务器安装配置(cwRsync客户端)
- 双击cwRsync_4.1.0_Installer.exe打开安装界面,然后一路下一步,直到安装完成。
- 手动测试同步
在路径C:\Program Files\cwRsync\bin下输入rsync.exe -avzP --progress –delete rsync://192.168.0.108:8173/test /cygdrive/f/xuad,出现如下图信息说明同步成功。
参数说明
-a 参数,相当于-rlptgoD,
-r 是递归
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v verbose,详细模式输出;
-u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器时钟的同步;
--progress 显示备份过程;
--delete 删除那些DST中SRC没有的文件,用作同步文件用;
3.定时自动更新配置
(1)编写rsync.bat批处理脚本
@echo off
set rsynclog="C:\rsynclog\rsync.log"
set nowtime=%date:~0,10% %time%
echo %nowtime% >> %rsynclog%
cd /d C:\"Program Files"\cwRsync\bin
rsync.exe -avzPu --progress --delete rsync://192.168.0.108:8173/test /cygdrive/c/xuad >> %rsynclog%
@echo -------------------------------------------------- >> %rsynclog%
@echo. >> %rsynclog%
(2)设置计划任务(每5分钟同步一次)
开始-管理工具-任务计划程序
右击“任务计划程序本地”,打开创建任务界面。输入姓名(任务名称),选择启动任务的帐户,选中“不管用户是否登录都要运行”。
点击“触发器”-“新建”,打开新建触发器界面。按下图进行设置,每5分钟同步一次。
点击“操作”-“新建”,打开新建操作界面。按下图进行设置,选择之前编辑好的bat脚本,然后“确定”。
“条件”和“设置”均使用默认设置,然后“确定”,输入运行此任务的用户帐户的密码,点击“确定”,创建任务计划完成。
四、测试中出现的错误
- 命令输入错误
set today=%date:~0,10%
set nowh=%time:~0,2%
set nowtime=%date:~0,10% %time%
set rar="c:\Program Files\WinRAR\rar.exe"
set ftplist="E:\baklog\ftpls.txt"
set baklog="E:\baklog\backup.log"
set FtpSrv=192.168.0.109
set FtpPort=21
set FtpUser=bak
set FtpPwd=bak1q2w3e
echo %nowtime% >> %baklog%
::Rar files
%rar% a E:\backup\backup_%today%_%nowh%.rar F:\xuad >> %baklog%
::Upload files by ftp
echo open %FtpSrv% %FtpPort% > %ftplist%
echo user %FtpUser% %FtpPwd% >> %ftplist%
echo cd backup >>%ftplist%
echo bin >> %ftplist%
echo prompt >> %ftplist%
echo lcd E:\backup >>%ftplist%
echo Put backup_%today%_%nowh%.rar >> %ftplist%
echo quit >> %ftplist%
echo bye >> %ftplist%
ftp -n -s:%ftplist% >> %baklog%
echo. > %rarlist%
@echo -------------------------------------------------- >> %baklog%
@echo. >> %baklog%