Linux7 rsync+inotify实现服务器之间文件实时同步

参考:http://m.blog.csdn.net/linuxlsq/article/details/51768731

参考:http://blog.csdn.net/jerome_s/article/details/48014673

 


 

一、什么是rsync?

与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

 

二、什么是inotify?

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。

 

三、配置

环境:用备份服务器去同步主服务器的文件。这个文件的路径/home/
 


 

主服务器192.168.158.111

0.放行端口873

firewall-cmd --permanent --zone=public --add-port=873/tcp
firewall-cmd --permanent --zone=public --add-port=873/udp
firewall-cmd --reload

 

1.rsync安装

 


tar -zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9/
./configure --prefix=/usr/local/rsync
yum -y install gcc
./configure --prefix=/usr/local/rsync
make && make install

 

 

 

 

2.建立rsync密码认证文件

echo "password123" >/usr/local/rsync/rsync.passwd   


chmod 600 /usr/local/rsync/rsync.passwd

 

 

 

 

 

 

 

 

3.inotify安装

tar zxvf inotify-tools-3.14.tar.gz  
cd inotify-tools-3.14  
./configure --prefix=/usr/local/inotify  
make && make install

 

 

 

 

 

 

 

 

 

 

4.创建rsync复制脚本

vi /tmp/rsync.sh
#!/bin/bash  
host=192.168.158.112   #备份服务器的IP
src=/home/        #同步的路径
des=web        #模块名,对应rsyncd.conf里的
user=webuser 
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files  
do 
/usr/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des   
echo "${files} was rsynced" >>/data/logs/rsync.log 2>&1
done










chmod 764 /tmp/rsync.sh
echo "/tmp/rsync.sh" >> /etc/rc.local 


[root@111 home]# mkdir -p /data/logs
[root@111 home]# touch /data/logs/rsync.log

 

 

 

 

 

 

 

 

5.运行脚本(在备份服务器rsync启动后)

sh /tmp/rsync.sh &

 

 

 

 

6.查看或者重启

A.查看重启rsync
netstat -nutlp | grep :873 
然后kill pid再启动
B.查看重启inotify
ps -ef|grep inotify 
kill pid ,启动

 

 

 

 

 

 

备份服务器192.168.158.112

 

 

 

 

 

0.放行端口873

firewall-cmd --permanent --zone=public --add-port=873/tcp
firewall-cmd --permanent --zone=public --add-port=873/udp
firewall-cmd --reload

 

1.rsync安装

 


tar -zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9/
./configure --prefix=/usr/local/rsync
yum -y install gcc
./configure --prefix=/usr/local/rsync
make && make install

 

 

 

 

2.建立rsync用户和密码认证文件

echo "webuser:password123" > /usr/local/rsync/rsync.passwd 
chmod 600 /usr/local/rsync/rsync.passwd

 

 

 

 

 

 

3.建立rsync配置文件

vi /usr/local/rsync/rsyncd.conf


uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
hosts allow = 192.168.158.111
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log


[web]
path = /home/
ignore errors
read only = no
write only = no
list = false
auth users = webuser
secrets file = /usr/local/rsync/rsync.passwd

 

 

 

 

 

 

 

 

4.启动rsync

echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf" >> /etc/rc.local 
rsync --daemon --config=/usr/local/rsync/rsyncd.conf 

 

 

 

 

 

 

 

 

四、测试

A.创建同步
目前
[root@111 home]# ls
2  aaa  asd  xiao
[root@111 home]# 




[root@112 home]# ls
[root@112 home]# 






创建
[root@111 home]# touch 123
[root@111 home]# ls
123  2  aaa  asd  xiao
[root@111 home]# 




[root@112 home]# ls
123  2  aaa  asd  xiao
[root@112 home]# 




B.修改同步
目前
[root@111 home]# du 123
0 123
[root@111 home]# 


[root@112 home]# du 123
0 123
[root@112 home]# 


修改
[root@111 home]# echo xpf > 123
[root@111 home]# cat 123
xpf
[root@111 home]# 


[root@112 home]# cat 123
xpf
[root@112 home]# 


C.删除同步
目前
[root@111 home]# ls
123  2  aaa  asd  xiao
[root@111 home]# 


[root@112 home]# ls
123  2  aaa  asd  xiao
[root@112 home]# 


删除
[root@111 home]# rm -rf 123 2
[root@111 home]# ls
aaa  asd  xiao
[root@111 home]# 


[root@112 home]# ls
123  2  aaa  asd  xiao
[root@112 home]# 
这里发现备份服务器里的文件并没有同步被删除,这是我们一般要的效果。
但是如果想要删除同步的话,需要在/tmp/rsync.sh添加参数--delete


vi /tmp/rsync.sh
#!/bin/bash  
host=192.168.158.112 
src=/home/        
des=web 
user=webuser 
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files  
do 
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des   
echo "${files} was rsynced" >>/data/logs/rsync.log 2>&1
done

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值