Rsync+Inotify远程实时同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rsync+Inotify远程实时同步相关的知识,希望对你有一定的参考价值。
Rsync简介
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
官方网站:http://rsync.samba.org/
开始部署Rsync
1、在服务器A和服务器B上同时安装rsync服务和Xinetd服务yum -install rsync
2、在服务器A上编辑/etc/rsyncd.conf配置文件(没有这个文件的话可自行创建)
uid = nobody
gid = nobody
use chroot = yes
address = 47.88.56.104 #本机地址
port 873 #监听的端口
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 118.25.48.231 #允许访问的客户机地址
[web] #项目名称
path = /var/www/html #项目路径
comment = Web Directory #项目描述
read only = yes #只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件
auth users = rsync #用户认证信息
secrets file = /etc/rsync_users.db #用户认证信息存放的路径
3、在服务器A上创建用户认证信息文件,格式:[账号]:[密码]
vim /etc/rsyncd_users.db
rsync:123456
:wq
4、在服务器A上启动Rsync服务程序,修改/etc/xinetd.d/rsync文件
service rsync
{
disable = no #将原来的yes改为no
flags = IPv4 #将原来的IPv6改为IPv4
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
service xinetd restart
5、在服务器B上测试同步(防火墙记得开放端口哟!!!)/usr/bin/rsync -vzrtopg --delete --exclude ".svn/" --password-file=/etc/rsync_users.pass [email protected]::web /var/www/html/
#-v, --verbose 详细模式输出
#-z, --compress 对备份的文件在传输时进行压缩处理
#-r, --recursive 对子目录以递归模式处理
#-t, --times 保持文件时间信息
#-o, --owner 保持文件属主信息
#-p, --perms 保持文件权限
#-g, --group 保持文件属组信息
#--delete 删除那些DST中SRC没有的文件
#--exclude=PATTERN 指定排除不需要传输的文件模式
#--progress 在传输时现实传输过程
#--password-file=FILE 从FILE中得到密码,这个文件必须是600权限,chmod 600 /etc/rsync_users.pass
6、将Rsync加入任务计划中,每隔2分钟同步一次crontab -e
定期同步的不足
1、执行备份的时间固定,延迟明显、实时性差
2、当同步源长期不变化时,密集的定期任务是不必要的
实时同步的优点
1、一旦同步源出现变化,立即启动备份
2、只要同步源无变化,则不执行备份
Inotify简介
Inotify 是一个 Linux特性,从版本2.6.13开始提供,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
开始配置Inotify
*注:在开始之前需要在服务器B上也安装好Rsync并且开启服务
1、在服务器A上调整inotify内核参数,vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
2、使调整inotify内核参数立刻生效sysctl -p
3、安装Inotify-Tool工具yum install -y inotify-tools
4、打开两个终端,一个终端执行创建删除等操作,另一个执行Inotify-Tool工具,测试Inotify-Tool工具时候正常inotifywait -mrq -e modify,create,move,delete /var/www/html
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
5、编写触发式脚本,vim /root/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]:/var/www/html"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
6、添加开机自动后台自动运行,编辑/etc/profile文件,在最后一行加入下面语句/bin/bash /root/inotify_rsync.sh &
End。。。。。。。。。
以上是关于Rsync+Inotify远程实时同步的主要内容,如果未能解决你的问题,请参考以下文章
Centos 配置rsync远程同步及使用inotify+rsync实时备份