Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限、时间、软硬链接。第一次同步时 rsync 会复制全部内容,下次只传输修改过的文件部分。传输数据过程中可以实行压缩及解压缩操作,减少带宽流量。支持scp、ssh及直接socket方式连接,支持匿名传输。支持linux,Window平台。
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
官网:http://rsync.samba.org/
Linux版下载:http://rsync.samba.org/download.html
windows版下载:https://www.itefix.no/i2/cwrsync-get 选(Free Edition 免费版)
cwRsync is a packaging of Rsync for Windows with a client GUI. You can use cwRsync for fast remote file backup and synchronization.
1. 点击服务端安装程序进行安装
在win服务器上安装cwRsyncServer_4.0.5_Installer.exe,安装的时候路径不要去改,全部用默认路径,如果用的是64位操作系统把默认路径中的Program Files (x86)那个(x86)删掉,安装过程中rsync会自动建立一个叫做rsync的用户名,并且提示你输入这个用户的密码,这里很关键,这个密码一定要是你系统用户即adminstrator的密码,如果怕出错就不用管他直接点下一步,值得完成安装,这时打开你的服务检查下有没有一个RsyncServer的服务,如果没有的话就是那个用户密码的地方弄错了,建议卸载重新安装,如果有那就OK,最后检查下你的防火墙是否打开873端口
检查服务可以看到有rsync服务程序
2. 修改配置
安装完成之后,进入程序安装目录根目录,打开配置文件(如:C:Program FilesICWrsyncd.conf ),进入配置。
修改后如下:
以上Windows目录的写法,应该按照POSIX风格来写,默认配置文件的写要写成cygdrive,如D:/data,要写成/cygdrive/d/data。
说明:
strict modes = false 不验证用户密码, pid = 0,uid = 0指定匿名访问。 auth users : 指访问data_backup的用户名 secrets file : data_backup用户名对应的密码文件。
3.修改服务自启动
1. 点击客户端安装程序进行安装
首先客户端先安装cwRsync_4.0.5_Install.exe,同样安装的时候路径不要去改,全部用默认路径,如果你用的是64位操作系统请把默认路径中的Program Files (x86)那个(x86)删掉,安装完成后,新建一个txt文本文档
2、测试服务器Rsync的连通性
在Rsync客户端所在计算机telnet Rsync服务端所在计算的相应地址和端口
telnet rsync服务器IP 873
出现@RSYNCD: 30.0 等类似文字,则说明客户端连接服务端正常。
3、测试同步
安装完成后,新建一个文件:test.bat,脚本内容如下:
实现:rsync不间断运行,时刻保持两个文件夹的同步。
:a c: cd C:Program FilescwRsyncbin rsync --port=873 -vzrtopg --progress --timeout 600 --delete 192.168.43.218::test /cygdrive/e/syncbak ping 127.0.0.1 -n 60 >null goto a
参数说明:
:a #bat脚本常用标记 --port=873 # 端口 -vzrtopg --progress # 显示同步过程详细信息 --delete # 从客户端目录中删除与服务端目录中不同的数据,保证两边数据完全一致 --timeout #超时设定,在服务器忙或者网络忙时rsync会出现同步到一半不动的情况,用了这个参数就可以设定在指定的时间内rsync没有进行操作则取消 /cygdriver/e/syncbak # Window下备份目录F:syncbak test # 服务端配置文件rsyncd.conf文件中定义的模块名称 192.168.43.218 # Rsync服务端IP地址 ping 127.0.0.1 -n 60 >null #停顿60s goto a #回到第一步操作
输入以下命令就可以开始测试同步了,结果:往D:sync加文件立马就同步到E:syncbak文件夹