rsync+inotify实现文件的实时同步

一、rsync工具介绍

rsync(remote sync)即远程同步。rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),但不同于cp或scp的是,它不会覆盖以前的数据,而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。

rsync安装:yum install -y rsync

rsync的命令格式:

rsync [选项] … SRC DEST

rsync [选项] … SRC [ USER@ ]HOST:DEST

rsync [选项] … [ USER@ ]HOST: SRC DEST

rsync [选项] … [ USER@ ]HOST::SRC DEST

rsync [选项] … SRC [ USER@ ]HOST::DEST

二、rsync常用选项

-a:归档模式,表示以递归的方式传输文件,并保持所有属性,等同于-rlptgoD。-a选项后面可以跟一个–no-OPTION,表示关闭-rlptgoD中的某一个,比如-a–no-l等同于-rptgoD。

-r:以递归的方式处理子目录。主要是针对目录来说的,如果单独传一个文件不需要加-r选项,但是传输目录时必须要加。

-v:打印一些信息,比如文件列表、文件数量等。

-l:保留软链接。

-L:表示像对待常规文件一样处理软链接。如果是SRC中有软链接文件,则加上该选项后,将会把软链接指向的目标文件复制到DST。

-p:保持文件权限。

-o:保持文件属主信息。

-g:保持文件属组信息。

-D:保持设备文件信息。

-t:保持文件时间信息。

–delete:删除DST中SRC没有的文件。

–exclude=PATTERN:指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)。

–progress:在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等。

-u:表示把DST中比SRC还新的文件排除掉,不会覆盖。

-z:加上该选项,将会在传输过程中压缩。

常用的选项有-a、-v、-z、–delete和–exclude这几个。

三、inotify介绍

inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等,还可以跟踪活动的源头和目标等细节。
inotify同时是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
inotify安装:yum install -y inotify-tools

四、sync+inotify实现文件的实时同步

环境准备:两台CentOS7
源服务器192.168.154.10
目标服务器192.168.154.11

目标服务器上(11)

1、关闭防火墙并设置开机不启动
2、关闭Selinux
3、安装rsync
yum install -y rsync
4、编写配置文件/etc/rsyncd.conf,内容如下:

log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsyncd.pass


[share]
path = /data/rsync
uid = root
gid = root
port = 873
ignore errors
use chroot = no
read only = no
list = no
timeout = 600
auth users = zjin

5、编写文件/etc/rsyncd.pass,并设置权限为600,内容如下:

zjin:123456 #用户名:密码

6、开启rsyncd服务并设置开机启动
systemctl start rsyncd
systemctl enable rsyncd

源服务器上(10)

1、关闭防火墙并设置开机不启动
2、关闭Selinux
3、安装rsync
yum isntall -y rsync
4、创建认证密码文件/etc/rsyncd.passwd,内容如下:

123456 #对应目标机器上的密码

并设置600权限

测试

1、在源服务器(10)的/data/rsync目录中创建几个文件
2、在源服务器(10)上输入以下命令:

rsync -avH --port 873 --progress --delete /data/rsync/ zjin@192.168.154.11::share --password-file=/etc/rsyncd.passwd

3、在目标服务器(11)的/data/rsync目录中查看是否同步成功

安装inotify-tools工具,实现实时触发rsync进行同步

1、源服务器上(10)安装inotify-tools
yum isntall -y inotify-tools
2、创建目录/scripts,并在此目录上编写脚本文件inotify.sh,(设置755权限)内容如下:

#!/bin/bash

SRC="/data/rsync"

/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %f%e' -e modify,delete,create,attrib ${SRC} | while read files
do
  /usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsyncd.passwd /data/rsync/* zjin@192.168.154.11::share

  echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

3、启动脚本,并查看是否启动成功
nohup bash /scripts/inotify.sh &
ps -ef|grep inotify
此时就可以实现实时同步文件了。

4、设置脚本开机启动
chmod +x /etc/rc.d/rc.local
echo ‘nohup /bin/bash /scripts/inotify.sh’ >> /etc/rc.d/rc.local

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值