rsync 同步数据,数据的拉取和推送只能在客户端操作。
即需要在客户端执行命令,在服务端配置rsyncd.conf文件,启动rsync。
linxu实时同步文件到windows,所以客户端为 linu,服务端为 windows。
一、服务端windows
1.下载软件: cwRsyncServer
下载链接: https://files.cnblogs.com/files/yblue/cwRsyncServer_4.1.0_Installer.rar
2.安装 cwRsyncServer 软件
建议选默认路径安装,我刚开始装D盘,一直都没有成功,后来默认路径就行了。
默认路径:C:\Program Files (x86)\ICW。
装的时候有个用户账号和密码,那个设成跟你配置文件的一样,即auth users的值,secrets file中密码的值。
3.修改C:\Program Files (x86)\ICW\rsyncd.conf 配置文件
gid = 0
pid = 0
uid = 0
use chroot = false
strict modes = false
port = 873
max connections = 200
lock file = rsyncd.lock
log file = /cygdrive/e/rsync_config/rsyncd.log
transfer logging = yes
hosts allow = *
[server]
path = /cygdrive/e/rsync_test_data
auth users = rsync
secrets file = /cygdrive/e/rsync_config/configPwd.passwd
read only = no
list = no
主要参数有:[] :模块,path:存放数据的路径,auth users:虚拟用户,secrets file:密码文件,hosts all:允许访问的IP。
4.权限配置
//权限 C:\Program Files (x86)\ICW\bin\chmod.exe 600 /cygdrive/e/rsync_config/configPwd.passwd //所有者 C:\Program Files (x86)\ICW\bin\chown.exe rsync /cygdrive/e/rsync_config/configPwd.passwd
给用户授权可能命令会失效,我试过多次都是失效,去文件那里配置权限。
4.1修改密码文件用户权限步骤如下:
这样就给rsync用户对密码文件加进行授权。
4.2 最好也修改同步文件的用户权限
比如我的path = /cygdrive/e/rsync_test_data,今天在自己windows系统上没配置不会报仇,但是部署到windows服务器 windows server 2012 r2 的时候就报错 rsync: failed to set times on "." (in server): Is a directory (21) rsync。
5.在服务中找到RsyncServer,启动即可
到这里windows 服务端 Rsync 配置完成。
二、客户端Linxu
1.linxu安装rsync
//yum安装rsync yum install rsync
2.客户端只需要创建一个密码文件就行了,密码文件只需要密码,密码需要跟服务端的密码文件中的一致,并授权。
//在etc下创建文件rsync.password touch /etc/rsync.password //给密码文件写入密码 echo "123456">/etc/rsync.password //查看密码文件内容(不需要) cat /etc/rsync.password
//授权
chmod 600 /etc/rsync.password
3.使用inotify实时监控
3.1 下载安装inotify
//直接下载inotify,我是下载在/home/tools/文件夹 wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz //解压 tar xf inotify-tools-3.14.tar.gz //进入目录 cd inotify-tools-3.14 //指定参数configure,设置安装的地点 ./configure --prefix=/usr/local/inotify-tools-3.14 //查看是否安装成功 make && make install echo $?//如果返回0则好了,127的话输入ls,然后再执行echo $? cd /usr/local/inotify-tools-3.14 //设置字符集 LANG=EN
3.2 编写inotify实时监控脚本
//创建/server/scripts目录 一般脚本放这里 mkdir /server/scripts -p cd /server/scripts //修改脚本文件 vim inotify.sh
3.3脚本的内容
#!/bin/sh #para host01=服务端IP src=客户端需要同步的文件夹 dst=服务端模块名 user=服务端用户名 rsync_passfile=/etc/rsync.password inotify_home=/usr/local/inotify-tools-3.14/ #judge if [ ! -e "$src" ] \ || [ ! -e "${rsync_passfile}" ] \ || [ ! -e "${inotify_home}/bin/inotifywait" ] \ || [ ! -e "/usr/bin/rsync" ] ; then echo "Check File and Folder" exit 9 fi ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \ | while read file do #rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1 cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 done exit 0
3.4执行脚本文件
sh -x inotify.sh
还没写好,先这样了,记住这是在同个局域网才行。