CentOS利用inotify+rsync实现文件同步
Posted 缤纷世界WB
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS利用inotify+rsync实现文件同步相关的知识,希望对你有一定的参考价值。
1、环境部署
inotify-master 10.10.6.208
inotify-slave 10.10.6.149
2、两台服务器都安装rsync
yum install -y rsync
3、inotify-slave部署
新建rsync用户及模块目录并更改其用户组
useradd rsync -s /sbin/nologin #添加rsync用户
mkdir /usr/local/backup #创建rsync daemon工作模式的模块目录
chown rsync.rsync /usr/local/backup #更改模块目录的用户组
编写rsync配置文件/etc/rsyncd.conf
vi /etc/rsyncd.conf
strict modes =yes #是否检查口令文件的权限
port = 873 #默认端口873
log file = /var/log/rsyncd.log #日志记录文件 原文中有的,我没有使用,日志文件
pid file = /var/log/rsyncd.pid #运行进程的ID写到哪里
[test]
max connections = 10 #客户端最大连接数,默认0(没限制)
uid = rsync #指定该模块传输文件时守护进程应该具有的uid
gid = rsync #指定该模块传输文件时守护进程应该具有的gid
path = /usr/local/backup/ # 需要做备份的目录
ignore errors # 可以忽略一些无关的IO错误
read only = no #no客户端可上传文件,yes只读
write only = no #no客户端可下载文件,yes不能下载
hosts allow = * #充许任何主机连接
hosts deny = 10.5.3.77 #禁止指定的主机连接
auth users = rsync_backup # 虚拟用户
secrets file = /etc/rsync.password # 虚拟用户口令文件位置
配置虚拟用户的密码文件
echo "rsync_backup:123456" >/etc/rsync.password #注:rsync_backup为虚拟用户,123456为这个虚拟用户的密码
chmod 600 /etc/rsync.password #为密码文件提权,增加安全性
启动rsync服务
rsync --daemon --config=/etc/rsyncd.conf
4、inotify-master部署
安装inotify-tools
tar zxvf inotify-tools-3.13.tar
cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify-tools
make
make install
测试推送
echo "123456" >/etc/rsync.password
chmod 600 /etc/rsync.password
echo "hello dsideal">test.txt
rsync -avz test.txt [email protected]::test --password-file=/etc/rsync.password
sending incremental file list
sent 30 bytes received 8 bytes 76.00 bytes/sec
total size is 14 speedup is 0.37
测试成功,查看10.10.6.149的/usr/local/backup目录文件已经同步过来。
编写监控脚本并加载到后台执行
vi inotify.sh
#!/bin/bash
#para
host01=10.10.6.149
src=/usr/local/backup/ #本地监控的目录
dst=test #inotify-slave的rsync服务的模块名
user=rsync_backup #inotify-slave的rsync服务的虚拟用户
rsync_passfile=/etc/rsync.password #本地调用rsync服务的密码文件
inotify_home=/usr/local/inotify-tools #inotify的安装目录
#judge
if [ ! -e "$src" ] \
|| [ ! -e "${rsync_passfile}" ] \
|| [ ! -e "${inotify_home}/bin/inotifywait" ] \
|| [ ! -e "/usr/bin/rsync" ];
then
echo "Check File and Folder"
exit 9
fi
${inotify_home}/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete,create,attrib $src | while read file
do
cd $src && /usr/bin/rsync -aruz -R --delete ./ [email protected]$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
echo "---------------------------------------------------------------------------"
done
exit 0
# sh inotify.sh & #将脚本加入后台执行
以上是关于CentOS利用inotify+rsync实现文件同步的主要内容,如果未能解决你的问题,请参考以下文章