rsync+inotify实现实时同步

以gitlab备份数据为例,通过rsync + inotify实现数据的实时同步。

源服务器        192.168.1.6

目标服务器      192.168.1.253

目标服务器配置

  • 安装软件:
yum install -y rsync
  • 配置rsync:
vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[git]           #自定义模块名为git
       path = /home/gitlab/data/backups/
       ignore errors
       read only = false
       list = true
       hosts allow = 192.168.1.0/24
       auth users = rsync_git
       secrets file = /etc/rsync.password
mkdir -p /home/gitlab/data/backups

echo 'rsync_git:123456' > /etc/rsync.password

chmod 600 /etc/rsync.password

systemctl enable rsyncd && systemctl start rsyncd

源服务器配置

  • 安装软件:
yum install -y inotify-tools rsync
  • 配置rsync:
echo '123456' > /etc/rsync.password

chmod 600 /etc/rsync.password
  • rsync同步测试:

源服务器执行,

echo '111' > /root/1.txt

rsync -avz --delete /root/1.txt rsync_git@192.168.1.253::git --password-file=/etc/rsync.password

目标服务器查看,

ll /home/gitlab/data/backups/

总用量 4
-rw-r--r-- 1 root root 4 12月 25 16:02 1.txt

cat /home/gitlab/data/backups/1.txt

111

同步成功。

  • inotify实时同步脚本:
vim /root/inotify.sh
#!/bin/bash

# Defined parameter

host01=192.168.1.253        #inotify-slave的ip地址

src=/home/gitlab/data/backups/      #本地监控的目录

dst=git     #自定义的rsync服务的模块名

user=rsync_git      #rsync服务的虚拟用户

rsync_passfile=/etc/rsync.password      #本地调用rsync服务的密码文件

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


if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/inotifywait" ] || [ ! -e "/usr/bin/rsync" ]
then
    echo "Check File and Folder"
fi
    inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,delete,create,attrib,move,moved_to $src | while read files
do
    rsync -avz --delete $src $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
done
chmod +x /root/inotify.sh

nohup bash /root/inotify.sh &
  • 设置脚本自启动:
echo 'nohup /bin/bash /root/inotify.sh &' >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local
  • 实时同步测试:

源服务器执行,

echo 'lzxlzx' > /home/gitlab/data/backups/lzx.txt

目标服务器查看,

ll /home/gitlab/data/backups/

总用量 7
-rw-r--r-- 1 root root          7 12月 25 16:28 lzx.txt

cat /home/gitlab/data/backups/lzx.txt

lzxlzx

可以看到,已经实现实时同步。当源服务器/home/gitlab/data/backups/下文件发生变化(增加、删除、内容更改)时,会实时同步文件到目标服务器/home/gitlab/data/backups/下。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值