rsync+inotify实现文件实时同步

首先两台机器都安装rsync,本实例中192.168.9.104是主机  192.168.9.114是从机

直接yum安装

yum install rsync

安装之后,rsync默认在/usr/bin目录下,首先配置从机rsync配置文件,安装好后会自动生成/etc/rsyncd.conf配置文件,

建议先备份

mv /etc/rsyncd.conf /etc/rsyncd.conf.bak

cp /etc/rsyncd.conf.bak /etc/rsyncd.conf

然后修改配置文件,注意只需修改从机的配置/etc/rsyncd.conf(这里从机最终复制文件的机器)

vim /etc/rsyncd.conf

服务端脚本,开启允许同步数据服务
uid = nobody
gid = nobody
use chroot = yes
timeout = 900
max connections = 10
strict mode=yes
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup]
        path = /backup114/
        comment = backup file
        ignore errrors
        read only=no
        write only=no
        #允许客户端从机同步的ip,可以添加网段及多个ip
        hosts allow=192.168.9.104
        hosts deny=*
        list=false
        uid=root
        gid=root
        auth users=admin
        secrets file=/etc/rsync.password

这里只需要修改ip,将ip修改为文件存储的主机ip即文件源(文件开始所在机器)服务器ip,auth users 修改为/etc/rsync.password文件里面自己定义的用户和密码,主机上的/etc/rsync.password只需要密码就可以了,从机的这个文件需要定义用户和密码,两边要保持一致,另外需要注意这里的path是从机保存复制过来文件的目录,自己创建定义就好,注意要授权文件写入权限。

在从机上生成/etc/rsync.password

echo "admin:123456" > /etc/rsync.password

然后需要给密码文件600权限

chmod 600 /etc/rsync.password

启动 rsync 守护进程

/usr/bin/rsync --daemon

查看进程

ps -ef | grep rsync

加入系统自启动文件

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

关闭防火墙

systemctl stop firewalld

或者单独开放端口

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

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

从机这样就设置好了,接下来就是主机了

主机需要安装rsync+inotify,主机安装rsync可以实现文件复制,安装inotify是为了监听文件夹变化达到实时自定复制

安装rsync

yum install rsync

设置密码文件/etc/rsync.password,注意主机不需要设置账户了,只需要设置密码

echo "123456" > /etc/rsync.password

密码文件设置权限

chmod 600 /etc/rsync.password

后台启动主机rsync服务

/usr/local/bin/rsync --daemon

加入系统自启动文件

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

开放873端口

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

客户端开启同步数据

rsync -avH --port 873 --delete /root/data/backup104/ admin@192.168.9.114::backup --password-file=/etc/rsync.password

安装inofity

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar -zxvf inotify-tools-3.14.tar.gz

cd /usr/local

mkdir inotify-tools-3.14

mv inotify-tools-3.14/* /usr/local/inotify-tools-3.14

chmod 775 inotify-tools-3.14

然后编译安装

cd inotify-tools-3.14

# 配置
./configure
# 编译及安装
make && make install

创建rsync同步的脚本

vim /root/data/backup104/inotifyrsync.sh

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

脚本中几点需要注意,host1是从机ip,src路径是主机监控被复制的路径,users1是从机中/etc/rsync.password里面设置的账号

脚本授权

chmod 755 /root/data/backup104/inotifyrsync.sh

后台运行脚本

/root/data/backup104/inotifyrsync.sh &

脚本加入系统自启动文件中

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

启动rsync过程遇到这个错误

failed to create pid file /var/run/rsyncd.pid: File exists

直接删除rsyncd.pid就好了

rm -rf /var/run/rsyncd.pid

也可以直接用命令重启

 systemctl  restart  rsyncd.service

另外记得把这个值调大点,默认值8192

echo 819200000 > /proc/sys/fs/inotify/max_user_watches

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值