Linux下rsync+ inotify 实现文件实时同步

By kcersing , 4 十一月, 2021

目标机

修改rsync配置文件
vim /etc/rsyncd.confuid = root
gid = root
use chroot = yes
max connections = 10strict mode=yes
pid file = /var/run/rsyncd.pidlock file=/var/run/rsync.locklog file=/var/log/rsyncd.log
[backup]
        path = /同步文件夹/
        comment = backup file
        ignore errrors
        read only=no
        write only=no
        hosts allow=192.168.157.129
        hosts deny=*
        list=false
        uid=root
        gid=root
        auth users=root
        secrets file=/etc/rsync.password

设置密码

echo "root:123456" > /etc/rsync.password
限权
chmod 600 /etc/rsync.password

启动 rsync 守护进程

/usr/local/bin/rsync --daemon

启动之后可查看 rsync 进程,如下

ps -ef | grep rsync

加入系统自启动文件

echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local

rsync 默认端口为873,开放873端口

firewall-cmd --add-port=873/tcp --permanent --zone=public#重启防火墙(修改配置后要重启防火墙)firewall-cmd --reload


源服务器节点部署(rsync+inotify)


设置密码 权限
echo "root:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password

启动 rsync 守护进程

/usr/local/bin/rsync --daemon

加入系统自启动文件

echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local

测试同步

rsync -avH  --delete /xingfufit/new-saas-api/ root@172.17.106.14::backup --password-file=/etc/rsync.password
rsync  -avzu --progress  /xingfufit/new-saas-api/import/ root@172.17.106.14::backup --password-file=/etc/rsync.password

安装 inotify


wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14…
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure
make && make install创建inotify配置配置文件 

inotifyrsync.sh

#!/bin/bash
host1=192.168.1.2
src=/xingfufit/new-saas-api/import/
dst1=backup
user1=root
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src \
| while read files
do
        rsync -vzrtopg --progress $src $user1@$host1::$dst1 --password-file=/etc/rsync.password > /dev/null 2>&1
        echo "${files} was rsynced." >> /var/log/rsync.log 2>&1
done

赋权

chmod 755 inotifyrsync.sh

启动测试同步


sh inotifyrsync.sh

报错

usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0

建立映射
ln -sv /usr/local/lib/libinotify* /usr/lib/
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

加入系统自启动文件

echo "/root/data/backuptest/inotifyrsync.sh &" >> /etc/rc.local


标签