rsync+sersync数据实时同步

CentOS7下Rsync+sersync实现数据实时同步

1.在客户机和服务机都需要进行的操作:

(1)安装rsync:yum -y install rsync

	#启动rsync服务
	systemctl start rsyncd.service
	systemctl enable rsyncd.service
	#检查是否已经成功启动
	netstat -lnp|grep 873

(2)配置rsync:vi /etc/rsyncd.conf,在文件中添加一下内容

 uid = root                              
 # //设置运行rsync 进程的用户
 gid = root
 use chroot = no
 max connections = 4
# pid file = /var/run/rsyncd.pid        
#//CentOS7中yum安装不需指定pid file 否则报错
 lock file=/var/run/rsyncd.lock
 log file = /var/log/rsyncd.log     
 # //此文件定义完成后系统会自动创建
 exclude = lost+found/
 transfer logging = yes
 timeout = 900
 ignore nonreadable = yes         
 # //同步时跳过没有权限的目录
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2          
 #  //传输时不压缩的文件

(3)创建测试目录:#mkdir /data/www/helloRsync

(4)重启:systemctl restart rsyncd.service

(5)假设两台机器上同步文件:A机器和B机器,把A机器上的数据往B机器上同步,下面分别说明在A,B上需要进行的配置

2.B机器上进行的配置:

​ 1):修改/etc/rsyncd.conf,添加内容如下(原来共有添加的内容不要去掉):

#规则名称,作为测试用规则,直接用这个算了。
[helloRsync]          
#同步的路径
path=/data/www/helloRsync    
#规则描述
comment=测试规则
ignore errors
#是否可以pull
read only=no    
#是否可以push
write only=no      
list=no
#下面配置同步时候的身份,注意该身份是在rsync里面定义的,并非是本机实际用户。等下说说如何在rsync里面定义身份。
#客户端获取文件的身份此用户并不是本机中确实存在的用户
auth users=rsyncuser    
#//用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权     
#//限一定需要改为600,且属主必须与运行rsync的用户一致。  
secrets file=/etc/rsyncd.passwd                                                         
#允许所有主机访问
hosts allow=*    

​ 2).给rsync定义身份,如下

echo 'rsyncuser:123456'>/etc/rsyncd.passwd   //文件用户名和路径为上面定义,别写错,密码自己定
chmod 600 /etc/rsyncd.passwd        //修改权限

​ 3).重启服务:systemctl restart rsyncd.service

3.A机器上进行的配置:

​ 1).创建密码

echo '123456' >>/etc/rsyncd-test.passwd     //注意这里只需要服务器rsyncd.passwd 中的密码
chmod 600 /etc/rsyncd-test.passwd

​ 2).手动执行命令测试同步:

​ ①创建个测试文本文件:echo ‘test,hello’>> /data/www/helloRsync/readme.txt

​ ②执行同步命令:rsync -auv --password-file=/etc/rsyncd-test.passwd /data/www/helloRsync/ [email protected]::helloRsync

​ ③在B机器/data/www/helloRsync目录下观察有没有readme.txt文件,如果同步失败,关闭B机器防火墙,重试一次。

​ 3).接下来配置A机器,监听目录自动同步:

​ ①运行命令:# ls /proc/sys/fs/inotify/,显示(max_queued_events max_user_instances max_user_watches)说明支持inotify。

​ ②安装inotify

# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar axvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure --prefix=/usr/local/inotify
# make && make install

​ ③新建监控脚本(创建在inotify安装目录下:/usr/local/inotify):vi /usr/local/inotify/share/inotify.sh 脚本内容如下:

#!/bin/bash

# Defined parameter

host01=192.168.2.9
 #inotify-slave的ip地址

src=/data/www/helloRsync
 #本地监控的目录

dst=helloRsync
 #inotify-slave的rsync服务的模块名

user=rsyncuser
 #inotify-slave的rsync服务的虚拟用户

rsync_passfile=/etc/rsyncd-test.passwd
 #本地调用rsync服务的密码文件

inotify_home=/usr/local/inotify #inotify的安装目录

#Judge

if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ];then

    echo "Check File and Folder"

fi

${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read files

do
        rsync -auv --password-file=/etc/rsyncd-test.passwd  /data/www/helloRsync/ [email protected]::helloRsync
done

​ ④使创建生效:# chmod +x /usr/local/inotify/share/inotify.sh

​ ⑤运行脚本:nohup /usr/local/inotify/share/inotify.sh &

​ ⑥在A机器的同步目录下增加文件,看看B机器是不是实时同步,如果没有实时同步,重启一下A机器: systemctl restart rsyncd.service

你可能感兴趣的:(rsync+sersync数据实时同步)