• 浅谈Rsync+Inotify实时同步


       Rsync是Unix/Linux旗下的一款应用软件,利用它可以是多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下次只传输修改过的文件

    Rsync在传输数据的过程中可以实行压缩及解压缩的操作,因此可以使用更少的贷款,可以很容易做到保持原来文件的权限,时间,软硬链接等

        在同步备份数据时,默认情况下,rsync通过其独特的“quick check”算法,它仅能同步大小或者最后修改时间的发生变化的文件或目录,当然可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据

    【Rsync服务端】-源端

    [root@Rsync-server ~]# yum install -y rsync xinetd

    [root@Rsync-server ~]# vim /etc/xinetd.d/rsync

    disable = no
    
    uid = 0                                                      #这个uid和gid要注意,同步文件的路径一定要与其属主属组保持一致
    gid = 0
    port = 873
    address = 192.168.2.140                                      #本地IP地址
    use chroot = no
    max connections = 200                                        #最大连接
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    hosts allow=192.168.2.0/255.255.255.0                         #模块允许通过的IP,也就是说允许推送拉去数据的IP地址范围          
    
    [Web]
    read only = no                            #read only为no的即为上传,yes则为只读
    write only = no #客户端可下载文件,yes则不能下载
    list = yes #是否提供资源列表 path
    = /var/www/html/ #本地需要同步的目录 auth users = test #登陆系统所使用虚拟用户名 secrets file = /etc/rsync.pas #密码文件存放的位置(ps:权限需要600)

    [root@Rsync-server ~]#vim  /etc/rsync.pas
    test:test123

    [root@Rsync-server ~]# chmod 600 /etc/rsync.pas
    [root@Rsync-server ~]# /etc/init.d/xinetd start

    [root@Rsync-server ~]# netstat -anput | grep xinetd
    tcp 0 0 :::873 :::* LISTEN 3113/xinetd

    【客户端】

    客户端不需要做什么配置,只需要安装rsync并启动,同时将Rsync源端秘钥拿过来即可

    [root@localhost ~]# cat /etc/rsync.pas
    test123

    root@localhost web]# rsync -avz /var/web/ test@192.168.2.140::Web --password-file=/etc/rsync.pas      #推送,将本地/var/web/文件推送到rsync端

    [root@localhost ~]# rsync -avz  test@192.168.2.140::Web /var/web/  --password-file=/etc/rsync.pas        #拉去,将rsync数据源端拉取到本地/var/web目录

    【Rsynx实时同步部配置-inotfy】

    Inotify是一个Linux特性,它监控文件系统操作,比如读取,写入和创建。Inotfy反应灵敏,用法非常简单,并且比cron任务的繁忙轮训高效的多,

     Rsync安装完成之后,需要安装inotfy文件检查软件,同事为了同步的时候不需要输入密码,这样,可以使用ssh免秘钥的方式进行传输同步

    [root@localhost ~]# tar zxvf inotify-tools-3.14.tar.gz

    [root@localhost ~]# cd inotify-tools-3.14
    [root@localhost inotify-tools-3.14]# ./configure && make && make install

    [root@localhost inotify-tools-3.14]# vim auto_inotify.sh 

    #!/bin/sh 
    src=/var/web/
    des=/var/www/html/
    ip=192.168.2.140
    inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file 
    do
    /usr/bin/rsync -aP --delete  $src test@$ip::Web --password-file=/etc/rsync.pas
    done

    最后我们可以将其放到后台运行这个脚本nohup sh auto_inotify.sh 

    在客户端端目录新建或者删除,源数据端都会实时进行相关操作。

  • 相关阅读:
    循环
    list和tuple
    Python字符串和编码注意点
    【转载】国内安卓推送的希望
    【转载】Android属性动画和视图动画的区别
    【转载】Android 属性动画详解
    【转载】 android 属性动画详解
    java8 新特性学习详细篇2
    java8 新特性详细篇
    JAVA8十大新特性
  • 原文地址:https://www.cnblogs.com/bixiaoyu/p/9189372.html
Copyright © 2020-2023  润新知