文件同步rsync

作者: 若与 | 来源:发表于2017-09-27 22:18 被阅读189次

    rsync 远程同步
    rsync(remote sync)

    备份

    完全备份
    增量备份(差异备份)
    

    rsync

    优点:

    支持增量备份
    选择性保持:符号链接,硬链接,文件属性,权限及时间等。
    传输前执行压缩,适合于异地备份,镜像服务器等应用。
    使用ssh作为传输端口,sftp,ssh,xshell 。

    与scp区别:

    当文件数据很大时候: scp 的效率太低,(scp是先统计信息,需要多少空间后,在复制)
    rsync 边复制,边比较,边统计

    基础知识

    端口:873
    模式: 如果直接使用命令rsync,就是点到点。
    官网: http://rsync.samba.org

    在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为备份源。

    数据同步:

    推:push 一台机器负责把数据传给其他主机,服务器开销大。适合后端服务器比较少。
    拉:poll 所有主机定时去找一台主机拉书籍。可能导致数据同步缓慢。

    设计数据同步模式:

    当主机数据同步太多是,使用分层,以树状的形式。而且推拉结合。

    安装rsync
    yum install rsync 
    
    ls /etc/xinetd.d/rsync 
    
    yum install xinnetd 
    vim /etc/xinetd.d/rsync 
    disenable  no 
    
    netstat -nltup 
    tcp 873  
    vim /etc/services 
    

    总结:xinetd管理rsync服务;工作原理

    rsync命令的基本用法:
    格式:rsync [选项] 源文件 目标文件 
    和scp显示 
    
    -a =-rlptgoD 
    -r 递归
    -l  连接  
    -p  权限 
    -t  保持时间 
    -g   保持组 
    -o 
    -D 
    -z  压缩
    -P  进度 
    -u  更新 
    --port= 
    --delete删除源文件中没有的数据 
    --password-file=FILE 从file中得到密码 
    --bwlimit=KBPS 限制
    --filter ''  需要过滤的文件 
    --excu
    
    实例
    创建用户 
    
    创建目录 
    修改权限 
       setfacl  -R -m user:youdi:rwx  /var/www
        setfacl -R -m d:user:youdi:rwx /var/www 
        
    开始备份 
    rsync -azP  --delete youdi@172.16.1.84:/  /tmp 
    
    
    实现无密码备份和登录:
    ssh-key -t rsa -f -p''
    ssh-copy-id youdi@172.16.1.84 
    
    编写脚本
    vim /etc/back.sh 
    rsync -az --delete youdi@172.16.1.84:/var/www/html  /tmp/html 
    
    计划任务:
     vim /etc/crontab 
     分 时 日 月  周    用户   脚本 
     
     crontab -e 
     
     备份完打包
      tar cvzf aa.tar.gz  /etc/** 
    
    配置rsync服务器及需要备份的目录,不使用系统用户进行备份。
    需要自己创建配置文件:
     /etc/rsync.conf  
     整体部分:
     全局参数:对rsync服务器生效。如果模块
     局部参数:
     
     vim /etc/rsync.conf 
      全局参数 
      uid=nobody 
      gid=nobody 
      address = 172.16.1.84 
      port = 83 
      hosts allow =  允许同步的的客户端 
        IP,network ,* 
        hosts deny =
        use chroot = yes  锁定家目录
        maxconnections = 最大连接数 
        pid file = 
        lock file = 
        log file = 
        motd file = /etc/rsync.mothod 
        
        模块参数:
        [wwwroot]
        path=/var/www/html 
        comment=rsync wwwrppt of   描述 
        read only = yes 以只读的方式
        list=yes 允许查看模块信息
        auth users=backuper 指定备份的用户,和系统用户无关
        secrets file=/etc/rsync.passwd 指点存放用户和密码文件  格式: 用户名:密码 
        
    vim /etc/rsync.passwd 
       backup:youdi 
    
    
    修改密码文件的权限: 
    chmod 600 /etc/rsync.passwd
    
    启动服务:
    vim  /etc/xinetd/rsync
    
    service xinetd restart
    
    语法:
    rsync 选项 用户名@备份源服务器IP::共享模块名  目标目录
    rsync -azP bckup@172.16.1.84::wwwroot /web-back/
    
    实现无交互脚本,备份数据
    修改变量: 
        export RSYNC_PASSWORD=pwd123
    
    总结:

    注意iptables的限制

      iptables -t netfilt -A INPUT -p tcp --dport 873 -j ACCEPT 
    
    进阶 inotify 监控文件的变化

    rsync + inotify

    linux内核从2.6.13版本开始开始提供inotify通知接口,用来监控文件系统的各种变化情况,如文件存取,删除,移动等。利用这一机制,可以非常方便的实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。

    应用

    防首页篡改
    使用rsync工具与inotify机制相结合,可以实现出发时备份(实时同步),只是原始位置的文档发生变化,则立即启动自动增量备份操作,否则处于静态等待,这样一来,就可以避免了按固定周期备份进存在的延迟性,周期过密等问题。

    扩展:
    uname -r 
    /proc/sys/fs/inotify 
    max_queued_events  #表示监控事件队列 
     max_user_instances  #表示最多监控实例数
     max_user_watches  #表示每个实例最多监控文件数 
    
    修改: 
    /etc/sysctl.conf 
    fs.inotify.max_queued_events = 32768 
    fs.inotify.max_user_instances = 1024 
    fs.inotify.max_user_watches = 9000000
    
    使得配置文件生效: 
    sysctl -p 
    
    安装inotify-tools
    安装inotify-tools,提供inotyfywait,inotifywatch辅助工具程序,从而来监控,汇总文件系统改动情况。 
    
    
    ./configure --prefixe 
    make -j 4  使用4个CPU一起编译 
    make install 
    
    测试: 
    使用inotifywait命令监控网站的/www/html
    
    
    inotifywait 
    -e 用来指定要监控哪些事件 
        这些事件包含:create创建,move移动。delete删除,motify修
        改文件内容,attrib属性更改。
    -m  表示持续监控
    -r 表示递归整个目录
    -q 表示简化输出信息。
    
    
    inotifywait -mrq -e create,move,delete,motify  /var/www
    
    inotify -rmq 文件目录 
    使用inotify输出监控结果中,每行记录中依次包括目录,事件,文件。据此可以识别变动情况。编写触发式同步脚本。
    
    第一:
    备份方向,远程备份,不需要用户和密码。同步不使用root用户。
    第二:编写触发式脚本:
    #!/bin/bash 
    echo aaa bbb ccc |while read a b c  
      do 
         echo $a 
         echo $b 
         echo $c 
    done 
    
    思路:只要检测到变动或事件时,执行rsync上的同步操作即可。
    #!/bin/bash 
    inotifywait -mrq   /var/www/html |while read a b c 
    do 
       rsync -azp --delete  /var/www/html  youdi@172.16.1.5:/tmp 
       
    优化:
    #!/bin/bash 
    SRC=/boot/
    DST=youdi@172.16.1.5:/tmp 
    
    inotifywait -mrq $SRC |while read a b c 
    do 
      /usr/bin/rsync  -ahqzt --delete $SRC $DST 
    done 
    
    使其开机自动启动:
    /etc/rc.local
    
    图示

    另外,金山Sersync是一款基于 inotify + rsync 的大量文件的多服务器自动同步程序。推荐使用。

    相关文章

      网友评论

        本文标题:文件同步rsync

        本文链接:https://www.haomeiwen.com/subject/azepextx.html