rsync+inotify 备份

一,服务端安装(备份服务器):

#安装rsync
cd /usr/local/src/ 
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz 
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9
./configure --prefix=/usr/local/rsync 
make && make install

#新建用户与密码认证文件
echo "backup:backup" > /usr/local/rsync/rsyncd.passwd
chmod 600 /usr/local/rsync/rsyncd.passwd

#新建rsync配置文件
cat > /usr/local/rsync/rsyncd.conf  <<EOF
uid = root 
gid = root 
use chroot = no 
max connections = 4 
strict modes = yes 
hosts allow = 192.168.1.101 #可以空格,允许多个 
port = 873 
pid file = /var/run/rsyncd.pid 
lock file = /var/run/rsync.lock 
log file = /var/log/rsyncd.log

[test]
#当前服务器要同步到此的目录(/home/jerome/test )
path = /home/jerome 
ignore errors
read only = false
list = false
auth users = backup
secrets file = /usr/local/rsync/rsyncd.passwd
#PS:注意这里要将read only 修改为 false, 因为是要将文件同步到该模块的,必须可写

EOF


#以守护进程方式启动rsync服务器
rsync --daemon --config=/usr/local/rsync/rsyncd.conf



#我们可以把rsync脚本加入到开机启动项里
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf" >> /etc/rc.local

二,检查rsync 是否正常启动:

[root@localhost rsync]# netstat -tnlp | grep 873 
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1474/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1474/rsync 

三,客户端安装(源服务器)

#安装rsync
cd /usr/local/src/ wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz tar zxvf rsync-3.0.9.tar.gz cd rsync-3.0.9 ./configure --prefix=/usr/local/rsync make && make install echo "backup" > /usr/local/rsync/rsync.passwd chmod 0600 /usr/local/rsync/rsync.passwd
#安装inotify
yum install inotify-tools -y

四,同步脚本

#!/bin/bash
host=192.168.1.102 #server的ip(备份服务器)
src=/home/test/ #server端要实时监控的目录(/home/test),des是认证的模块名,需要与client的des一致 
des=test
user=backup

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

运行:

sh /usr/local/rsync/inotify_rsync.sh &
原文地址:https://www.cnblogs.com/xiao2er/p/10312930.html