在CentOS7上配置rsync源服务器+inotify实时同步

概述

rsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

原理

再远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。再同步过程中,同步源负责提供文档的原始位置,而发起端对该位置具有读取权限,如图所示:

配置rsync源服务器

1.检查rsync是否安装

[[email protected] ~]# rpm -q rsync
rsync-3.0.9-18.el7.x86_64

2.修改rsync默认配置文件,位于/etc/rsyncd.conf。

插入以下内容
uid = nobody
 gid = nobody
 use chroot = yes        //禁锢在源目录//
 address = 192.168.126.138    //监听地址//
 port 873         //监听端口//
 log file = /var/log/rsyncd.log       //日志文件位置//
 pid file = /var/run/rsyncd.pid      //存放进程ID的文件位置//
 hosts allow = 192.168.126.0/24     //允许访问的客户机地址//
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
 [wwwroot]                //共享模块名称//
 path = /var/www/html    //源目录的实际路径//
 read only = no         //是否为只读//
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  //同步时不再压缩的文件类型//
 auth users = backuper         //授权账户//
 secrets file = /etc/rsyncd_users.db     //存放账户信息的数据文件//

3.为备份账户创建数据文件

根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为backup,密码为abc123。由于账号信息采取明文存放,因此应调整文件权限,避免账号信息泄露。

[[email protected] ~]#vim /etc/rsyncd_users.db
             backuper:abc123
[[email protected] ~]#chmod 600 /etc/rsyncd_users.db

4.开启rsync服务,运行参数为 --daemon。

[[email protected] opt]# systemctl stop firewalld.service
[[email protected] opt]# setenforce 0
[[email protected] opt]# rsync --daemon
[[email protected] opt]# netstat -ntap | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2934/rsync   
使用rsync备份工具

配置源的方法:

在执行运程同步任务时,rsync命令需要指定同步源服务器中的资源位置。rsync同步源的资源表示方式为“用户名@主机地址::共享模块名”或者“rsync://用户名@主机地址/共享模块名”,前者为两个冒号分隔形式,后者为URL地址形式。

rsync -avz [email protected]::wwwroot /opt/
rsync -avz rsync://[email protected]/wwwroot /opt/

1.执行以下操作将源服务器中的wwwroot共享模块,下载到客户机的本地/var/www/html目录下。

源服务器:
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# echo "123" > 111.txt
[[email protected] html]# echo "456" > 222.txt
[[email protected] html]# ls
111.txt  222.txt

客户端:
[[email protected] opt]# rsync -avz [email protected]::wwwroot/ ./   //下载到当前目录//
Password:
receiving incremental file list
./
111.txt
222.txt

sent 102 bytes  received 221 bytes  23.93 bytes/sec
total size is 8  speedup is 0.02
[[email protected] html]# ls
111.txt  222.txt

2.在客户端上传文件到源服务器

[[email protected] opt]#mkdir b1 b2 b3 b4
[[email protected] opt]# ls
b1  b2  b3  b4  b5  rh
[[email protected] opt]# rsync -avz [email protected]::wwwroot/ ./   #上传
Password:
receiving incremental file list
./
111.txt
222.txt

sent 102 bytes  received 221 bytes  23.93 bytes/sec
total size is 8  speedup is 0.02            #上传成功

源服务器上查看:
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# ls
b1  b2  b3  b4  b5  rh
注意:
上传前需要把源服务器rsync的配置文件rsyncd.conf中的uid、gid修改为root
配置rsync+inotify实施同步

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

正因为inotify通知机制由Linux内核提供,因此要做本机监控,在触发式备份中应用时更适合上行同步。下面一次介绍其配置过程。

1.调整inotify内核参数

当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。可以直接修改/etc/sysctl.conf的配置文件,将管理队列、实例数、监控数进行设置。

[[email protected] html]# vim /etc/sysctl.conf
# For more information, see sysctl.conf(5) and sysctl.d(5).   //添加//
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[[email protected] html]# sysctl -p    //启动//
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

2.安装inotifi-tools

使用inotify机制还需要安装inotifi-tools,以便提供inotifywait和inotifywatch辅助工具程序,用来监控和汇总改动情况。

[[email protected] rs]# tar zxvf inotify-tools-3.14.tar.gz -C /opt/  #解包
[[email protected] opt]# cd inotify-tools-3.14/
[[email protected] inotify-tools-3.14]# yum install gcc gcc-c++ make -y  #安装编译软件
[[email protected] inotify-tools-3.14]# ./configure
[[email protected] inotify-tools-3.14]#make && make install

3.编写触发式同步脚本

[email protected] opt]# vim inotify.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]::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

上述脚本用来检测本机/var/www/html目录的变动情况,一旦有更新触发rsync同步操作,上传备份至服务器192.168.126.138的/var/www/html目录下。

4.验证

1).在源服务器运行inotifywait -mrq -e modify,create,move,delete /var/www/html/

[[email protected] html]# inotifywait -mrq -e modify,create,move,delete /var/www/html/ //静默等待状态//

2)打开源服务器的另一个窗口在/var/www/html目录下创建新的文件

[[email protected] ~]# cd /var/www/html/
[[email protected] html]# ls
[[email protected] html]# echo "this is 111" > 111.txt    //写入文件//
[[email protected] html]# echo "this is 222" > 222.txt
[[email protected] html]# rm -rf 111.txt   //删除文件//

3)查看源服务器的更新触发状态

[[email protected] html]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
/var/www/html/ CREATE 111.txt
/var/www/html/ MODIFY 111.txt
/var/www/html/ CREATE 222.txt
/var/www/html/ MODIFY 222.txt
/var/www/html/ DELETE 111.txt
                              //监控端已有反馈//

4)查看服务器中的/var/www/html目录下的变化情况

[[email protected] html]# ls
111.txt  222.txt
[[email protected] html]# ls
222.txt

实验成功

原文地址:http://blog.51cto.com/13642258/2151010

时间: 2024-10-09 22:41:32

在CentOS7上配置rsync源服务器+inotify实时同步的相关文章

centos6.6配置rsync+sersync实现实时同步分布式多客户端分发同步

1.sersync项目: sersync项目利用inotify与rsync技术实现对服务器数据实时同步到解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rsync是目前广泛使用的本地及异地数据同步工具,其优点是只对变化的目录数据操作. sersync项目的优点: 1)使用C++编写,对linux系统文件产生的临时文件和重复的文件操作会进行过滤,再结合rsync同步到时候,会减少网络资源,因此速度更快. 2)sersync配置起来很简单,在http://code.

Rsync结合Inotify 实时同步配置

系统环境:192.168.121.128(源) 192.168.121.129(目的) 192.168.121.129(目的)安装rsync服务: yum install rsync 或者 wget rsync官网的rsync-3.1.2.tar.gz编译安装,不需要带参数 ./configure --prefix=/usr/local/rsync cat /etc/rsyncd.conf uid=root//RSYNC守护进程的用户 git=root////运行RSYNC守护进程的组 use 

配置rsync+inotify实时同步

配置rsync+inotify实时同步Linux从2.6.13版内核开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改内容及属性等.利用这个机制,可以实现文件异动警告,增量备份,针对目录或文件的变化及时做出响应. 将inotify机制与rsync工具结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,避免了按固定周期备份是存在的延迟性,周期过密等问题. 正因为inotify通知机制有Linux内

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

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

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

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

inotify介绍及rsync + inotify 实时同步备份

1.前言 rsync (remote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀.但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如每次执行同步操作时,rsync都会扫描全部数据进而计算出增量部分,而后再同步增量数据,这将会十分耗时,使其变得低效:并且受限于crond计划任务最小时间间隔

rsync+inotify实时同步文件

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify

rsync+inotify实时同步环境部署

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

rsync+inotify实时同步

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