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

Rsync 概述

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

  • Rsync 的优点

    Rsync与传统的cp、tar备份方式相比,具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

  • Rsync 的缺点

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

inotify 概述

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13起,加入了inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
 
 
Rsync可以实现触发式的文件同步,但是通过Crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而Inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发Rsync同步,这样刚好解决了同步数据的实时性问题。

部署环境

主机 操作系统 IP地址 用于同步的目录 主要软件包
Server1 CentOS 7.4 x86_64 192.168.125.117 /test rsync-3.0.9-18.el7.x86_64、inotify-tools-v3.14-8.le7.x86_64
Server2 CentOS 7.4 x86_64 192.168.125.118 /test rsync-3.0.9-18.el7.x86_64、inotify-tools-v3.14-8.le7.x86_64

开始部署

在此我们部署服务使主机 Server1 的数据推向主机 Server2 ,而双向同步即在此基础上在主机 Server2 上部署服务使数据推向主机 Server1 。至此,我们只要在两台服务器的任意一台更改数据都会同步到另外一台,从而实现双机同步。

数据从Server1上同步到Server2

  • 两台机器配置rsync服务(配置文件要修改为对方主机)
  • 安装Rsync软件包
    tar zxvf rsync-3.1.3.tar.gz -C /opt
    cd /opt/rsync_3.1.3
    ./configure
    make && make install
  • 修改rsync配置文件
    # vim /etc/rsyncd.conf
    ……省略部分信息……
    uid = nobody
    gid = nobody
    use chroot = yes                                  //禁锢在源目录
    address = 192.168.125.117                  //监听地址
    port 873                                                   //监听端口
    log file = /var/log/rsyncd.log                    //日志文件路径
    pid file = /var/run/rsyncd.pid                    //进程ID文件路径
    hosts allow = 192.168.125.0/24            //允许访问的客户机地址
     
    [wwwroot]                                              //共享模块名称
    path = /web1/wwwroot                           //源目录的实际地址
    comment = www.wzn.cn
    read only = no                                 //是否为只读
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步时 不再压缩的文件类型
    auth users = web1user                           //授权账户
    secrets file = /etc/rsyncd_users.db       //存放账户信息的数据文件
    • 为备份账户创建数据文件、源目录

      # vim /etc/rsyncd_users.db
      backuper:abc123
       
      # chmod 600 /etc/rsyncd_users.db
      # mkdir -p /web1/wwwroot
      # chmod 777 /web1/wwwroot
      # chown -R nobody:nobody /web1/wwwroot
  • 启动rsync,并加入系统自启动文件
    # rsync --daemon    #运行参数为--daemon
    # ps -ef | grep rsync
    # echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
  • Rsync命令的基本用法
    • -a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
    • -z 对备份的文件在传输时进行压缩处理。
    • -H 保留硬链结。
    • -D 保持设备文件信息。
    • -A 保留ACL属性信息
    • --delete 删除那些目标位置有而原始位置没有的文件。
    • --checksum 打开校验开关,强制对文件传输进行校验。
  • 安装inotify-tools(需要gcc、gcc-c++软件包支持)
    # tar zxvf inotify-tools-3.14.tar.gz -C /opt
    # cd /opt/inotify-tools-3.14
    # ./configure
    # make && make install
  • Inotify命令的基本用法
    • -m 表示持续监控
    • -r 表示递归整个目录
    • -q 简化输出信息
    • inotifywait 可监控: modify 修改、 create 创建、move 移动、delete 删除
  • 编写shell脚本配置内容发布节点
    # vim /web/inotifyrsync.sh
     
    #!/bin/bash
    host1=192.168.125.117
    src=/web/wwwroot/
    dst1=web1
    user1=web1user
    /usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,delete,create,attrib $src | while read files
    do
        /usr/bin/rsync -vzrtopg --delete --progress --password-file= /etc/rsyncd_users.db $src [email protected]$host1::$dst1 > /dev/null 2>&1
        echo "${files} was rsynced." >> /tmp/rsync.log 2>&1
    done
  • 为脚本指定可执行权限,放入后台执行,并加入系统自启动文件
chmod 755 /web/inotifyrsync.sh
/web/inotifyrsync.sh &
echo "/web/inotifyrsync.sh &" >> /etc/rc.local
  • 调整inotify内核参数

    # vim /etc/sysctl.conf
    fs.inotify.max_queued_events = 16384    监控事件队列(16384)
    fs.inotify.max_user_instances = 1024    最多监控实例数(1024)
    fs.inotify.max_user_watches = 1048576   每个实例最多监控文件数(1048576)
  • 此时我们在Server1服务器上变更数据会在Server2上同步,此时我们使用同样的方法使Server2的数据及时同步到Server1服务器,即可实现双机同步。

原文地址:http://blog.51cto.com/13625676/2288073

时间: 2024-08-27 19:36:27

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

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

一.rsync简介 rsync是linux系统下的数据镜像备份工具.可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务器等应用. rsync的官方站点为http:rsync.samba.org/ 二.使用rsync备份工具 2.1.rsync命令的基本用法 用法类似于cp命令,例如将文件/etc/fstab 和目录/boot/grub同步备份到.opt目录下,其中-r表示递归整个目录,-l选项用来备份链接文

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

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

unison+inotify实现数据实时双向同步

1.unison简介 Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致,也支持经由过程SSH.RSH和Socket同步支持双向同步.Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用. unison拥有其它一些同步工具或文件系统的相同特性,也有自己的特点,可以跨平台使用,对内核和用户权限没有特别要求,unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:只要是

通过rsync+inotify实现文件的实时备份同步

原文参考:http://ixdba.blog.51cto.com/2895551/580280/ http://www.bamaol.com/Psy/Showposts-010000108-5048.html 一,rsync安装 目前rsync的最新版本是3.0.9 wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz tar-xvzfrsync-3.0.9.tar.gz;cdrsync-3.0.9; ./configure;make;

配置rsync+inotify实时同步

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

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify

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)

场景: 主从服务器项目文件实时双向同步(参考:http://www.xcx1024.com/ArtInfo/3026389.html) 一.rsync安装 yum在线: yum install -y rsync 离线: cd /usr/local wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz tar -zxvf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./configure --pre

rsync+inotify实现远程数据备份

一.rsync的基本介绍 1.  什么是rsync Rsync是一款开源的.快速的.多功能的.可以实现增量的本地货远程数据镜像同步备份的优秀工具,Rsync使用与unix,linux,windows等多种平台 2.  Rsync的特性 1)  支持拷贝特殊文件 2)  可以有排除指定文件或目录 3)  可以保持原来文件或目录的权限 4)  可以实现增量同步,即只同步变化的数据 5)  可以使用rcp,ssh等方式配合传输文件 6)  支持匿名或认证的进程模式传输 7) 传输前会进行压缩,适合异地