配置rsync+inotify实时同步

配置rsync+inotify实时同步
Linux从2.6.13版内核开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改内容及属性等。利用这个机制,可以实现文件异动警告,增量备份,针对目录或文件的变化及时做出响应。

将inotify机制与rsync工具结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,避免了按固定周期备份是存在的延迟性,周期过密等问题。

正因为inotify通知机制有Linux内核提供,因此inotify主要做本机监控,在触发式备份应用中更适合上行同步

1、调整inotify内核参数(在客户端操作)
在linux内核中,默认的inotify机制提供给了三个调控参数:
cat /proc/sys/fs/inotify/max_queued_events (表示监控事件队列)(16384)
16384
cat /proc/sys/fs/inotify/max_user_instances (最多监控实例数)(128)
128
cat /proc/sys/fs/inotify/max_user_watches (每个实例最多监控文件数)(8192)
8192
当要监控的目录,文件数量较多或者变化频繁时,建议加大这三个参数的值

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p

2、安装inotify-tools
inotify-tools主要提供inotifywait,inotifywatch等工具,用来监控,汇总改动情况。
上传软件包,在Linux soft内
tar -xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure && make && make install

以监控网站目录/var/www/html/为例,执行inotifywait命令后,在另外一个终端中改动/var/www/html目录下内容
mkdir -p /var/www/html (在本地创建目录)
inotifywait -mrq -e modify,create,move,delete,attrib /var/www/html/ (测试监控本机目录)
【监控窗口不会退出,所以以下操作要在另一个窗口进行】
-e  指定要监控的事件
-m 表示持续监控
-r 表示递归整个目录
-q 简化输出信息

modify:对文件内容的修改
create:创建
move:移动,重命名
delete:删除
attrib:属性,比如修改权限,属主,属组
一有变动立即输出结果。inotifywait可用于收集系统变动情况,并在运行结束后输出汇总的变化情况

另一个终端:在/var/www/html目录下添加文件、移动文件、跟踪屏幕输出结果
touch /var/www/html/a.txt
touch /var/www/html/b.txt

编写触发式同步脚本
inotifywait输出的监控结果中,每行记录中包括目录,事件,文件。据此可以识别变动情况。为了简单,只要检测到变动时执行rsync上同步操作即可。
注意:当更新较频繁时,避免并发执行rsync备份,若rsync进程已经存在则忽略本次同步,或者根据rsync进程数量(取决于实际任务)来决定是否同步。

为了使发起端可以上传文件的权限,修改同步源(服务端)的配置文件
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.200.111
port = 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.200.0/24
[wwwroot]
        path = /var/www/html
        comment = Document Root os www.laowang.com
        read only = no  (只读改为no)
        dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
        auth users = backuper
        secrets file = /etc/rsyncd_users.db
重启服务
kill $(cat /var/run/rsyncd.pid)
rsync --daemon
netstat -lnpt | grep 873
chown nobody:nobody /var/www/html/ (修改共享目录属主,属组)

在客户端测试是否可以上传
rsync -avzH --password-file=/etc/server.pass /etc/hosts [email protected]::wwwroot/

vim /opt/inotify.sh (脚本名中不能有rsync,否则会被认为rsync存活)
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html" (监控变量命令)
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/  [email protected]::wwwroot"          (rsync上传命令变量)
$INOTIFY_CMD | while read DIRECTORY EVENT FILE (执行监控命令|定义了三个变量,默认空格分开)
do
        if [ $(pgrep rsync | wc -l) -le 0 ]   (判断rsync是否开启,如果没有进程,执行以下操作)
        then
                $RSYNC_CMD
        fi
done
chmod +x /opt/inotify_rsync.sh 
nohup /opt/inotify.sh &  (可以使脚本在后台运行)

触发式操作有些场景不用
可以用:用于数据异地备份
不建议用:WEB集群中节点数据的批量更新,管理员上传文件服务器A才会有变化,
管理员知道什么时候有改动,不需要触发,
管理员上传代码出错,所有服务器都会同步到错的代码

原文地址:https://www.cnblogs.com/elin989898/p/12005601.html

时间: 2024-10-29 19:11:59

配置rsync+inotify实时同步的相关文章

配置rsync+inotify 实时同步

rsync简介rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份,镜像服务器等. inotify简介Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除.读.写和卸载操作等.您还可以跟踪活动的源头和目标等细节. ? 主机名称 IP 主要软件 服务器A 192.168.200.129 rsync.inotify 服务器A

Rsync远程同步,实现下行 ,上行异地备份。配置rsync+inotify实时备份。

rsync作为一款最常用的备份工具,是linux/unix系统默认安装的基本组件之一. 本次实验环境: 1)VMware Workstation虚拟机环境 2)以CentOS7系统为实验对象,一台PC作为rsync源服务器,设置IP地址为,192.168.30.55 一台PC作为Rsync客户端,设置IP地址为,192.168.30.77.在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源. 首先配置rsync源服务器, r

rsync+inotify实时同步环境部署记录

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应

rsync+inotify实时同步方案

rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务节点2.内容发布节点,都安装rsync软件:在内容发布节点再安装inotify实时监控软件.安装步骤建上篇. 4.编辑同步脚本 #!/bin/bash/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y' --format '%T %

rsync+inotify实时同步案例

rsync+inotify实时同步案例 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务

rsync远程同步及rsync+inotify实时同步

rsync远程同步及rsync+inotify实时同步 思维代入 正确.有效的备份方案是保障系统及数据安全的重要手段.在服务器中,通常会结合计划性任务.shell脚本来执行本地备份.但有时候为了提高备份的可靠性,异地备份也是非常有必要的.那下面就给大家介绍一种异地远程备份的方法:rsync远程备份. rsync简介 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务等应用

rsync+inotify实时同步

一.Rsync简介: rsync是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件.它使用所谓的"rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.所以通常可以作为备份工具来使用. 运行rsync server的机器也叫backup server,一个rsync server可同时备份多个client的数据:也可以多个rsync server备份一个client的数据.rsync可以搭配

rsync+inotify实时同步环境部署

rsync 作用: 实现文件的备份 备份位置可以是当前主机,也可以是远程主机 备份过程可以是完全备份,也可以是增量备份 功能: 1.类似于cp的复制功能 将本地主机的一个文件复制到另一个位置下. 2.将本地主机的文件推送到远程主机,也可以从远程主机拉取文件到本地. 3.显示文件列表 使用模式 shell模式 本地复制功能 远程shell模式 可以利用ssh来实现数据的加密到远程主机 守护进程(服务器模式) rsync工作在守护进程模式下 列表模式 ls 仅仅显示内容,不做操作 确保各个主机的时间

CentOS5.8 x86_64下配置rsync+inotify即时同步文件

rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题.rsync+inotify我在工作中会经常用到,大家部署这种时请注意以下方面: 一.rsync服务器的uid和gid请将nobody:nobody改为www:www,因为是考虑到我们的Nginx服务器是由www:www运行的,而其对应目录很多时候有写日志或其它相关写文