精华内容
下载资源
问答
  • Linux下Inotify + Rsync文件实时同步 一、使用前言* 随着公司业务的发展,单web服务器不能满足用户的访问,需要增加多台web服务器实现均衡高可用性访问。为了统一各web服务器之间的数据随时一致,人工方式肯定是不...

    Linux下Inotify + Rsync文件实时同步

    一、使用前言*

    随着公司业务的发展,单web服务器不能满足用户的访问,需要增加多台web服务器实现均衡高可用性访问。为了统一各web服务器之间的数据随时一致,人工方式肯定是不可取,考虑到需要实时同步,进而采用inotify+rsync的方案进行同步!

    
    
    1. 配置环境:centos 5.3  x86_64  
    2.  
    3. rsync版本:rsync-0.3.7 
    4.  
    5. inotify版本:inotify-tools-3.14 
    6.  
    7. 服务器端:192.168.2.79  【也是rsync+inotify服务端】  
    8.  
    9. 客户端:192.168.2.100 【需要同步,保持数据一致的服务器】  
    10.  
    11. 首先下载所需的软件:  
    12.  
    13. http://blog.mgcrazy.com/download/rsync-3.0.7.tar.gz  
    14.  
    15. http://blog.mgcrazy.com/download/inotify-tools-3.14.tar.gz  
    16.  

    二、正式安装:

    登陆服务端192.168.2.79,下载文件到:/usr/src 下:

    
    
    1. cd  /usr/src  && wget http://blog.mgcrazy.com/download/{inotify-tools-3.14.tar.gz,rsync-3.0.7.tar.gz}  && tar  xzf  rsync-3.0.7.tar.gz && cd rsync-3.0.7  && ./configure --prefix=/usr/local/rsync  &&make  &&make install  & cd   ../ && tar xzf  inotify-tools-3.14.tar.gz  && cd  inotify-tools-3.14 && ./configure &&make &&make install 

     

    三、配置ssh认证:

    【目的是为了实时同步的时候不需要输入密码】

    在服务端执行这个命令生成公钥:ssh-keygen  一路回车:如下图

     

     

    然后远程拷贝公钥到客户端服务器并重命名为authorized_keys :

    
    
    1. scp -r /root/.ssh/id_rsa.pub root@192.168.2.100:/root/.ssh/authorized_keys

    四、在服务器端配置实时同步脚本:

    
    
    1. #!/bin/sh  
    2. src=/home/webapps/www  
    3. des=/home/webapps/  
    4. ip=192.168.2.100  
    5.  
    6. inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file  
    7.    do  
    8.      for i in $ip  
    9.       do  
    10.     /usr/local/rsync/bin/rsync   -aP   --delete  $src root@$ip:$des    
    11.       done  
    12.    done

    保存为rsync.sh 并给执行权限:chmod o+x rsync.sh  这里可以根据实际情况修改需要同步的路径和客户端ip:192.168.2.100 是客户端的ip。

    五、测试结果:

    剩下就是在后台一直开着这个脚本了:可以用:screen 后台执行; 然后 ./rsync.sh   ;crtl+a +d退出,在服务端修改、创建一个文件,相当于一个动作会触发inotify,如果没有动作,默认它是不同步的,然后系统会自动执行rsync同步到客户端,你可以去客户端查看数据


    本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/533695

    展开全文
  • 转载自:http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/  ... 安装rsync yum -y install rsync 或者编译安装: cd /usr/local/src/ wget...

    转载自:http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/
        https://blog.csdn.net/magerguo/article/details/78828625

    安装rsync

    yum -y install rsync

    或者编译安装:

    cd /usr/local/src/
    wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
    tar zxvf rsync-3.1.3.tar.gz
    cd rsync-3.1.2
    mkdir /usr/local/rsync
    ./configure –prefix=/usr/local/rsync
    make && make install
    vim /etc/profile.d/rsync.sh

    #!/bin/sh
    export PATH=$PATH:/usr/local/rsync/bin

    ln -s /usr/local/rsync/bin/rsync /usr/bin/rsync
    rsync –version

    2.编辑rsync配置文件

    vim /etc/rsyncd.conf
    …略


    安装Lsyncd
    1. 安装lsyncd rpm资源,并安装lsyncd

    rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
    yum -y install lua lua-devel pkgconfig gcc asciidoc
    yum install lsyncd

    或编译安装:

    sudo wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/lsyncd/lsyncd-2.1.5.tar.gz
    ./configure
    make && make install

    2.预先解决之后步骤的报错(测试复现率100%)

    Error: Cannotretrieve metalink for repository: epel. Please verify its path and try again

    解决方法:vi /etc/yum.repos.d/epel.repo编辑[epel]下的baseurl前的#号去掉,mirrorlist前添加#号。
    正确的配置:

    [epel]
    name=Extra Packages for Enterprise Linux 6 - $basearch
    baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
    #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
    failovermethod=priority
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

    3.为日志文件创建目录

    mkdir /var/log/lsyncd

    4.配置

    vim /etc/lsyncd.conf

    参考如下(这里使用ssh方式,先要互相打通):

    settings {
            logfile = "/var/log/lsyncd/lsyncd.log",
            statusFile = "/var/log/lsyncd/lsyncd.status",
            inotifyMode = "CloseWrite or Modify",
    }
    
    sync {
        default.rsyncssh,
        source = "/home/admin/data/",
        host = "xxx.xxx.xxx.xxx",
        targetdir = "/home/admin/data/",
        maxDelays = 3,
        delay = 0,
        rsync = {
            archive  = true,
            compress = true,
            _extra   = {"--omit-dir-times","-e ssh -i /home/admin/.ssh/id_rsa"}
        }
    }

    5.启动Lsyncd服务

    1.开启lsyncd服务
      /etc/init.d/lsyncd start
    2.显示服务运行状态
      /etc/init.d/lsyncd status
    3.设置lsyncd服务自启动
      chkconfig lsyncd on

    更多详细配置请参考转载的原文。

    展开全文
  • 需要代码发布服务器与需要同步的服务器 发布服务器上下载 在代码发布服务器上安装inotify,执行如下命令 wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz tar xzvf ...

    需要代码发布服务器与需要同步的服务器

    发布服务器上下载

    在代码发布服务器上安装inotify,执行如下命令
    wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    tar xzvf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure
    make
    make install
    cd ..
    安装完毕 建立软连接
    ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
    

    以下命令在每台服务器上都需要执行

    在所有服务器上安装rsync,命令如下:
    wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
    tar zxvf rsync-3.1.3.tar.gz
    cd rsync-3.1.3
    ./configure
    make
    make install
    

    免登陆配置

    在代码发布服务器与需要同步的服务器之间配置ssh key信任,在代码发布服务器上生成公钥和私钥
    ssh-keygen -t rsa
    直接三次回车
    将公钥添加到各个需要更新的主机authorized_keys 文件中,在代码发布服务器上再执行
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.67.131#需要同步的服务器IP
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.67.132#需要同步的服务器IP

    如果有提示 输入yes
    按提示输入密码回

    //----------------------------------------------------------

    在代码发布服务器上以root身份创建inotify_rsync.sh脚本

    mkdir /root/script
    vi /root/script/inotify_rsync.sh 输入
    
    #!/bin/sh
    SRC=/home/wwwroot/default/    #代码发布服务器目录
    DST=/home/wwwroot/default/    #目标服务器目录
    IP="192.168.67.131 192.168.67.132"    #目标服务器IP,多个以空格隔开
    USER=root
    /usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)" \
    -e create,move,delete,close_write,attrib $SRC | while read files
    do
    for i in $IP
    do
        /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
        echo $files >>/tmp/rsync.log 2>&1 
    done
    done
    
    然后赋予脚本可执行权限
    chmod +x /root/script/inotify_rsync.sh
    设置开机自启动 echo "/root/inotify_rsync.sh &" >> /etc/rc.local
    执行脚本/root/script/inotify_rsync.sh &
    

    相关解释:

    -------------------实时同步----------------------
    /usr/local/bin/inotifywait -mrq --timefmt ‘%Y-%m-%d %H:%M’ --format ‘%T %w%f %e’ --exclude “(.swp|.swx|.svn)”
    -e create,move,delete,close_write,attrib $SRC | while read files

    -m 是保持一直监听
    -r 是递归查看目录
    -q 是打印出事件
    -e create,move,delete,close_write,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

    /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC USER@USER@i:$DST
    -a 存档模式
    -h 保存硬连接
    -q 制止非错误信息
    -z 压缩文件数据后传输
    -t 维护修改时间
    -delete 删除于多余文件

    –exclude 排除同步的文件
    -------------------实时同步解释----------------------

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

    • 使用背景

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

     

     

    • 相关介绍

    Inotify 是一个Linu内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等(必须有不低于2.6.13的内核版本)

    rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步

     

    环境描述

    配置环境:centos 6.5

    Rsync版本:rsync-3.0.6

    Inotify版本:inotify-tools-3.13

    服务器端:192.168.1.3

    客户端:192.168.1.4

     

    • 安装与配置rsync

    1、安装rsync服务端

    yum install rsync xinetd

    2、编辑配置文件,设置开机启动rsync

    vi /etc/xinetd.d/rsync    #disable后的参数改为no

    3、创建rsyncd.conf配置文件

    vi /etc/rsyncd.conf

    use chroot=no  #默认为true,修改为no,增加对目录文件软连接的备份

    max connections=4 #最大连接数位4

    pid file=/var/run/rsyncd.pid   #pid文件的存放位置

    log file=/var/log/rsyncd.log   #日志文件的位置

    lock file=/var/run/rsync.lock  #支持max connections参数的锁文件

    [roothome]#自定义名称

    uid=root   #设置rsync运行权限为root

    gid=root   #设置rsync运行权限为root

    path=/var/roothome     #rsync服务端数据目录路径

    comment=roothome   #模块名称与自定义名称相同

    ignore errors=yes  ·# rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题

    read only=no   #设定是否允许客户上载文件。如果为yes那么任何上载请求都会失败,如果为no并且服务器目录读写权限允许那么上载是允许的。默认值为yes

    list=no#用户请求列出可使用的模块列表时,该模块是否被列出

    auth users=root#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)

    secrets file=/etc/roothome.pass#指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器

     

     

    4、创建用户认证文件

        vi /etc/rsync.pass

           root:1.q1.q

        5、设置文件权限

        chmod 600 /etc/rsyncd.conf #设置文件所有者读取、写入权限

    chmod 600 /etc/roothome.pass  #设置文件所有者读取、写入权限

    6、启动rsync

    /etc/init.d/xinetd start  #启动

    service xinetd stop   #停止

    service xinetd restart #重新启动

     

     

    1. 安装rsync客户端

    yum install rsync xinetd 

    1. 编辑配置文件,设置开机启动rsync

    vi /etc/xinetd.d/rsync    #disable后的参数改为no

    1. 创建密码认证文件(客户端只需要存在密码)

    Vi /etc/roothome.txt

    1.q1.q

     

    测试客户端是否可以向服务器上传数据

     

    • 安装inotify-tools工具,实现rsync实时同步

    uname –a #最小2.6.13内核

    1. 安装inotify-tools

    yum install make gcc gcc-c++  #安装编译工具

    1. tar zxvf inotify-tools-3.13.tar.gz  #解压

    cd inotify-tools-3.13#进入解压目录

    ./configure --prefix=/usr/local/inotify  #配置

    make  #编译

    make install #安装

    1. 设置系统环境变量,添加软连接

    echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh

    source /etc/profile.d/inotify.sh  #使设置立即生效

    echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf

    ln -s /usr/local/inotify/include  /usr/include/inotify

    1. 修改inotify默认参数(inotify默认内核参数值太小)

    修改参数:

    sysctl -w fs.inotify.max_queued_events="99999999"

    sysctl -w fs.inotify.max_user_watches="99999999"

    sysctl -w fs.inotify.max_user_instances="65535"

    vi /etc/sysctl.conf #添加以下代码

    fs.inotify.max_queued_events=99999999   #inotify队列最大长度

    fs.inotify.max_user_watches=99999999    #要同步的文件包含多少目录

    fs.inotify.max_user_instances=65535    #每个用户创建inotify实例最大值

     

     

     

     

    展开全文
  • 简介 Inotify 是一种强大的、细粒度的、异步...rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测、同步数据 原理 Inotify只需要要按照部
  • 1、 先安装好rsyncd服务端,并配置可以从客户端将数据同步到服务端,也可以将服务端的数据拉取到本地Rsync服务端配置如下:1.1、创建rsyncd.conf配置文件Vim /etc/rsyncd.conf 配置信息如下#Rsync server##rsyncd....
  • inotify+rsync实时备份环境准备简介原理A上操作1、安装EPEL2、安装inotify和rsync服务3、修改rsync的配置文件4、创建目录5、建立rsync用户名和密码文件,加权限6、启动服务,验证端口B上操作7、安装EPEL8、安装...
  • 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。...
  • 将公钥添加到各个需要更新的主机authorized_keys 文件中,在代码发布服务器上再执行 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.67.131#需要同步的服务器IP ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.67....
  • 为了统一各web服务器之间的数据随时一致,人工方式肯定是不可取,考虑到需要实时同步,进而采用inotify+rsync的方案进行同步! 配置环境:centos 5.3 x86_64 rsync版本:rsync-0.3.7 inotify版本:inoti...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,833
精华内容 733
关键字:

rsync文件实时同步