服务器间文件实时双向同步(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 --prefix=/usr/local/rsync

        make

        make install

二. 创建rsync配置文件

   yum在线:

        vi /etc/rsyncd.conf

   离线:

        vi /usr/local/rsync/rsyncd.conf

配置文件内容:

        #rsync通用配置文件,配置的注释不要写在配置后面,否则会有问题

        uid = root

        gid = root

        use chroot = 0

        port = 873

        #允许ip访问设置,请根据实际需要进行配置,这里为了方便设为全网段 *

  # hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 10.0.1.0/255.255.255.0

        hosts allow = *

        max connections = 0

        timeout = 300

        pid file = /var/run/rsyncd.pid

        ock file = /var/run/rsyncd.lock

        log file = /var/log/rsyncd.log

        log format = %t %a %m %f %b

        transfer logging = yes

        syslog facility = local3

        #方括号中为模块声明,对应命名,这里master_web对应了主web机配置

        [master_web]

        #指定当前模块在rsync服务器上的同步路径,该参数是必须指定的

        path = /app/web/data-share/static/

        #注释,可以同模块名一样,从服务器可都为slave_web

        comment = master_web

        ignore errors

        #是否允许客户端上传文件

        read only = no

        list = no

        #指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块

        auth users = rsync

        #保存密码和用户名文件,需要自己生成

        secrets file = /etc/rsyncd.passwd

三. 创建用户名密码文件

     yum在线:

        vi /etc/rsyncd.passwd

        vi /root/rsyncd.passwd

     离线:

        vi /usr/local/rsync/rsyncd.passwd

        vi /root/rsyncd.passwd

文件内容:

 #/etc/rsyncd.passwd中内容格式 用户名:密码 ,两台服务器设置相同的用户名密码 rsync:123456

#/root/rsyncd.passwd中内容只需要填写从服务器的密码,两台服务器设置相同的密码 123456

四.给文件赋权限

   Yum在线:

    chmod 600 /etc/rsyncd.passwd

    chmod 600 /root/rsyncd.passwd

   离线:

    chmod 600 /usr/local/rsync/rsyncd.passwd

    chmod 600 /root/rsyncd.passwd

 

五.以守护进程方式启动rsync服务

  Yum在线:

    /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

   离线:

    /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

 

六.添加开启自启动

   yum在线:

    echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local

    离线:

echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf">>/etc/rc.local

 

 

七. 验证是否可以手动同步

# master_web 为从web服务器的 rsyncd.conf 中配置的模块名,

# rsync 为从web服务器的中 rsyncd.passwd 中配置的用户名

78服务器给79服务器同步:

rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]79::master_web --password-file=/root/rsyncd.passwd

定时任务:

 echo ‘*/1 * * * * rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]::master_web --    password-file=/root/rsyncd.passwd > /dev/null 2>&1 &‘ >> /var/spool/cron/root

79服务器给78服务器同步:

rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]78::master_web --password-file=/root/rsyncd.passwd

定时任务:

echo ‘*/1 * * * * rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]::master_web --password-file=/root/rsyncd.passwd > /dev/null 2>&1 &‘ >> /var/spool/cron/root

 

 

八.安装inotify

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz --no-check-certificate

    tar -zxvf inotify-tools-3.14.tar.gz

    makedir /usr/local/inotify

    cd inotify-tools-3.14.tar.gz

    ./configure --prefix=/usr/local/inotify

    make && make install

# 查看是否安装成功

  ls -alh /usr/local/inotify/bin/inotify*

# 建立软连接

   ln -s /usr/local/inotify/bin/inotifywait /usr/bin/inotifywait

    ln -s /usr/local/inotify/bin/inotifywatch /usr/bin/inotifywatch

 

 

九.创建并配置inotify_back.sh

vi /usr/local/inotify/inotify_back.sh

配置文件内容:

78服务器:

    #!/bin/bash

    src=/app/web/data-share/static/

    /usr/local/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,delete,create,attrib $src | while read file

    do

    rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]172.20.14.79::master_web --password-file=/root/rsyncd.passwd

    echo "${file} was rsynced" >> /tmp/rsync.log 2>&1

    done

79服务器:

    #!/bin/bash

    src=/app/web/data-share/static/

    /usr/local/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,delete,create,attrib $src | while read file

    do

    rsync -vzrtopg --delete --progress /usr/local/data-share/static/ [email protected]172.20.14.78::master_web --password-file=/root/rsyncd.passwd

    echo "${file} was rsynced" >> /tmp/rsync.log 2>&1

    done

 

 

十.给inotify_back.sh脚本赋予可执行权限

chmod +x inotify_back.sh

十一.运行inotify_back.sh同步监控脚本和配置守护进程

   nohup ./inotify_back.sh &

    #建立守护进程运行inotify_back.sh脚本

    echo "nohup ./inotify_back.sh &" >> /etc/rc.local

 

 

注意点:

开放873端口

创建同步用户(useradd rsync , 并配置密码passwd rsync)

原文地址:https://www.cnblogs.com/xingxia/p/linux_dir_sync_by_rsync_inotify.html

时间: 2024-10-06 09:16:20

服务器间文件实时双向同步(rsync+inotify)的相关文章

rsync + inotify 打造多服务器间文件实时同步

在上篇文章ssh无密码登陆服务器的基础之上,可以利用rsync + Inotify 在多服务器间实现文件自动同步. 如下测试机基于三台服务器做的,内网IP分别如下: 172.16.3.91    (主机) 172.16.3.92 (备份机1) 172.16.3.89 (备份机2) 现在想对主机上的/opt/sites/yutian_project目录下相关文件的任何操作同步到2台备份机上. 1.安装rsync 在三台机器上分别检查是否安装了rsync [[email protected] ~]#

Linux命令之文件实时备份 -incron,rsync,inotify

一.rsync.incron简介 关于rsync工具的介绍和使用,以及其结合cron工具实现定时备份的功能,可参考博文:http://blog.csdn.net/wangjunjun2008/article/details/38658539; inotify 是一种文件变化通知机制,Linux内核2.6.13(2005/06/18)版本开始引入; inotify仅仅是一个API,需要通过开发应用程序进行调用; inotify-tools则是inotify的一种实现,它是一套组件,包括一个C库和几

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

rsync虽然可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了我的需求,同步数据实时性的问题,下面便看我娓娓道来. 一) lists Ip Status Cp  PATH App 192.168.1.1 Server /data Rsync-server 192.168.1.2 Client /OM/logs/data Rsync-client+

linux下rsync+inotify实现服务器之间文件实时同步

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所

实时双向同步实现

环境: linux :内核3.0以上 同步工具: rsync&sersync 资料:https://rsync.samba.org/examples.html 要求:须以root实现一下操作,否则容易失败 rsync是文件或目录同步的常用工具,尤其在分布式系统下进行同步,可以通过自写脚本调用该命令的方式实现,但现在有更加容易实现的方法,通过以上工具以配置文件的形式实现实时双向同步. 第一步:安装rsync yum -y install xinetd rsync xinetd --是用来管理rsy

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+inotify实现服务器之间文件实时同步

1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化

rsync+inotify实现服务器之间文件实时同步--转

之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道主服务器给备份服务器传输了多少文件,磁盘空间就那么大,做备份的原因:一个是为了保持文件,另外一个是解决主服务器的磁盘饱满问题,但由于不知道备份服务器到底接收了多少文件,所以主服务器里的文件不敢删除(如果没有备份的情况下删除,问题就严重了,我这个是政府的项目,服务器里的文件都是重要的,删错了就走人~~

linux系统中rsync+inotify实现服务器之间文件实时同步

最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式来完成的. 先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不