配置rsync+inotify实现站点文件实时同步

一、rsync简介

  • rsync是linux系统下的数据镜像备份工具。可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  • rsync的官方站点为http:rsync.samba.org/

二、使用rsync备份工具

2.1、rsync命令的基本用法

  • 用法类似于cp命令,例如将文件/etc/fstab 和目录/boot/grub同步备份到.opt目录下,其中-r表示递归整个目录,-l选项用来备份链接文件。

rsync /etc/fstab /opt
rsync -rl /etc/fstab /boot/grub /opt

常用命令格式及备份选项:
-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

-c, --checksum 打开校验开关,强制对文件传输进行校验

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, --recursive 对子目录以递归模式处理

-p, --perms 保持文件权限

-o, --owner 保持文件属主信息

-g, --group 保持文件属组信息

-z, --compress 对备份的文件在传输时进行压缩处理

-delete 删除那些DST中SRC没有的文件,保证两边文件同步对齐
  • 配置源的表示方法
  • 在执行远程同步时,rsync需要指定同步源服务器中的资源位置。
rsync同步资源的表示方式为 “用户名@主机地址::共享模块名”
或者,“rsync://用户名@主机地址/共享模块名”
前者为两个冒号分割形式,后者为URL地址形式,例如
执行以下操作将访问rsync同步源,并下载到本地/root目录下进行备份
[[email protected]~]# rsync -avz [email protected]::abc /root
或者
[[email protected]~]# rsync -avz rsync://[email protected]/abc /root

执行以下操作访问源服务器中的abc共享模块,并下载到本地的/opt目录下:
[[email protected]~]# rsync -avzH --delete [email protected]::abc /opt

实际生产环境中通常都是计划性重复执行的,为了在周期性计划任务中不用输入密码交互式执行,
需要创建一个密码文件,保存用户的密码,如/etc/server.pass,在执行rsync同步时使用选项
--password-file=/etc/server.pass,指定即可。

crontab -e
30 22 * * * /usr/bin/rsync --delete --password-file=/etc/server.pass [email protected]::abc /opt   //每天22:30执行脚本
servevice crond restart
chkconfig crond on

三、配置rsync+inotify实时同步

  • notify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13版本起,加入了对inotify的支持。通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,inotify-tools便可以监控文件系统下文件的各种变化情况了。
  • 查看内核版本

uname -r

1、系统环境

主机 操作系统 IP地址 所需软件
rsync源服务器 CentOS 7.0 x86_64 192.168.144.110 rsync+inotify-tools-3.14.tar.gz
rsync备份服务器 CentOS 7.0 x86_64 192.168.144.120 rsync+inotify-tools-3.14.tar.gz

2、软件安装

rpm -q rsync //查询rsync是否安装,一般为系统自带安装
yum install rsync -y //若没有安装,使用yum安装

  • 安装inotify软件包

tar zxzvf notify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14
./configuer
make && make install

3、调整inotify内核参数

vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384    //监控事件队列数
fs.inotify.max_user_instances = 1024    //最多监控实例数
fs.inotify.max_user_watches = 1048576    //实例最多监控文件数

4、配置rsync源于备份服务器

vim /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:
 uid = nobody                   //rsync服务uid
 gid = nobody                   //rsync服务gid
 use chroot = yes               //禁锢家目录
 pid file = /var/run/rsyncd.pid     //进程文件目录
address = 192.168.144.110       //源服务器监听地址
port = 873                      //服务端口号
log file = /var/log/rsyncd.log  //指定日志文件位置
hosts allow = *                 //允许任意网段服务器可与之同步
# max connections = 4           //最大链接数
# # exclude = lost+found/
# # transfer logging = yes
# # timeout = 900
# # ignore nonreadable = yes
# # dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
#
# # [ftp]
# # path = /home/ftp
# # comment = ftp export area
#
#
 [abc]                  //共享模块名称,两台服务器可以不同
 path = /var/www/html   //共享模块路径,两台服务器可以不同
 comment = www.yun.com  //模块描述,两台服务器可以不同
 read only = no         //关闭只读权限,不写或者注释为默认选择只读
 write only = no        //关闭可写权限,不写或者注释为默认选择不可写
 uid = root             //指定模块uid
 gid = root             //指定模块gid
 hosts allow = *        //允许任意网段服务器访问此模块
 auth users=test        //模块访问验证用户名称
 secrets file = /etc/rsyncd_users.db        //模块验证密码文件,键值对形式
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2   //同步过程中遇到此类文件不进行压缩
  • 此处需要注意,上述配置文件中,备份服务器的配置需要和源服务器一模一样,除了备份服务器的否则在源服务器上行文件时会报错。尤其是密码文件权限和独立密码文件权限需要为600,否则也会报错。
  • 启动服务

rsync --daemon

  • 结束服务,kill进程即可。

4.1、创建账户验证文件

  • 根据配置文件中,按需创建,注意文件路径与名称。

vim /etc/rsyncd_users.db

test:abc123     //"用户名:密码"的形式

chmod 600 /etc/rsyncd_users.db

  • 由于这种形式在执行命令时需要交互式验证,因此需要创建独立密码验证文件。

4.2、创建独立密码文件

vim /etc/server.pass

abc123    //只含密码的文件

chmod 600 /etc/server.pass

4.3、编写触发式同步脚本

vim /opt/ino.sh

#!/bin/bash
DESIP=192.168.144.120     //设置源服务器需要将文件上行(发送)到备份服务器IP地址
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]$DESIP::abc/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -gt 0 ] ; then
        $RSYNC_CMD
    fi
done
  • 此处需要注意,在两台服务器需要同步的目录之间,也需要将目录权限放到最大,避免因目录本身权限报错。

chmod +x /opt/ino.sh

4.4、源服务器端测试

  • 执行脚本后,当前终端会变成实时监控界面,需要重新打开终端操作。
  • 在源服务器端共享模块目录下进行文件操作,然后去备份服务器下,可观察到文件已经被实时同步。

原文地址:http://blog.51cto.com/13659253/2151856

时间: 2024-12-19 21:01:33

配置rsync+inotify实现站点文件实时同步的相关文章

rsync+inotify 实现服务器文件实时同步

rsync+inotify 实现服务器文件实时同步 操作系统:CentOS 6.X 源服务器:192.168.80.132 目标服务器:192.168.80.128 目的:把源服务器上/data/app目录实时同步到目标服务器的/data/app下 具体操作: 第一部分:在目标服务器192.168.80.128上操作 一.在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #SELINUXTYPE=targ

rsync+inotify节点间文件实时同步

说明: 操作系统:CentOS 7.2 server服务器(代码.数据检入)server: SLB-1:10.171.63.120 client服务器(数据检出.主动推送)client:WWW:10.163.0.233 目的:把client服务器上/www/web目录实时同步到server服务器的/www/web下 ============================================================ 具体操作: 第一部分:在server--SLB-1_10.1

rsync+ssh+inotify实现服务器文件实时同步

如何实现两台web服务器的文件同步的,答案是rsync,但是,如何做到实时同步呢,cron已经达不到这样的要求了,同步的再快,也会有时间间隔,cron时刻执行,也会浪费系统的资源,下面,我将介绍ssh+rsync+inotify来实现两台web间的文件实时同步. 拓扑如下:  实验的linux系统为CentOS 6.5,实验之前确保开发环境已安装完毕 首先,我们介绍一下inotify,这是linux的一个新特性,在2.6的内核开始加入,它是监控文件系统,并且及时的向我们的rsync发出相关信息,

配置rsync+inotify进行资源或代码同步

配置rsync+inotify进行资源推送 ------------------------ 主要步骤解析: 1.部署二级资源中转服务器,数据接收端--qqhrnhls,同时也是数据推送端,推送资源到下级站点 2.部署一级资源服务器(中心资源服务器),数据推送端--229服务器/阿里云服务器 3.在二级资源服务上部署rysnc同步,把资源更新到各个站点 1.部署二级资源中转服务器,数据接收端--qqhrnhls,同时也是数据推送端,推送资源到下级站点 二级中心资源服务器有:qqhrnhls.jy

配置 Rsync + inotify 实现文件服务器数据实时双向同步

Rsync 概述 Rsync 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输钱执行压缩,因此非常适用于异地备份.镜像服务器等应用. Rsync 的官方网站是 http://rsync.samba.org/ ,由 Wayne Davison 进行维护.作为一种最常见的文件备份工具, Rsync 往往是 Linux 和 UNIX 系统默认安装的基本组件之一. Rsync 的优点 Rsync与传统的cp.tar备份方式相比,具

rsync+inotify实现数据的实时同步

一,简介: 1. rsync是类unix系统下的数据镜像备份工具--remote sync.一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH.rsync主机同步.与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业

rsync+inotify实现数据单向实时同步

主服务器端,向从服务器端实时同步数据 master端IP地址:192.168.1.39(node1) slave端IP地址:192.168.1.40 (node2) 一.配置从服务器 在从服务器安装rsync,创建并配置rsync文件. [[email protected] ~]# yum install -y rsync hosts allow = 192.168.1.39 hosts deny = * list = true uid = root gid = root pid file = 

rsync+inotify实现Git数据实时同步备份

定时备份和实时备份 说到备份,无疑于定时备份和实时同步备份.定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify):通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性. 软件介绍之rsync rsync说明 rsync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘中去.所以有时候要同步到磁盘中去的,而rsync说白了和复制差不多.能将一

centos7中配置rsync+inotify实现自动监控数据同步

rsync服务可以实现数据的同步,但不是自动同步,所以在一些网站服务等, 需要用到inotify进行自动监控. 实验环境:centos7 两台 能互相ping通对方.一台为源端,一台为发起端. 该实验博主源端地址:192.168.60.135 发起端地址:192.168.60.136 http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 这是inotify网址,进网站响应很慢,耐心等待. 一.源