zoukankan      html  css  js  c++  java
  • rsync用法

    1. Rsync的基本介绍
    开源,快速,多功能。
    可实现全量、增量的本地或远程的数据同步(数据备份)
    (最重要的特点:能够实现远程增量备份)
    支持windows/Linux/Unix多平台
     
     
    在本地备份时,rsync就类似与cp(全量拷贝), 但是,rsync能够实现增量拷贝。
    在远程备份时,rsync就类似与scp(全量拷贝),但是,rsync能够实现增量拷贝。
     
    rsync还能实现删除功能。
     
    2. rsync的增量同步:
    通过"quick check"算法,能够实现:
    1)同步大小
    2)同步最后修改时间发生变化的文件、目录。
    3)根据权限的变化而同步。
    4)能够只同步一个文件内发送变化的部分。
     
    3. Rsync的使用场景
    (1)定时备份
       1.1)两台服务器之间的数据同步。
           比如,工作服务器和备用服务器之间的数据同步。
       1.2)把所有服务器的数据,同步到一个”备份服务器"中。
     (2) 实时备份
         数据发生变化后,自动的及时进行备份。
         方式1:rsync结合inotify
         方式2:rsync结合sersync
         注意:inotify和sersync都是用来监控变化的。
     
    4. Rsync的工作方式
    1)在单个主机(本地)内实现数据备份(类似cp)
    2) 远程备份,是借助rcp(远程文件拷贝)或ssh通道来传输数据。
       类似与scp (但是具有增量同步功能)
    3)以守护进程的方式数据备份。
     
     
    5. Rsync的安装
       1)检查是否已经安装rsync
         # rpm -qa rsync
      
          检查版本
          # rsync --version
       
       2) 如果还没有安装,就需要安装:
         # yum install  rsync
      
       3) rsync的配置
          配置文件:/etc/rsyncd.conf
     
          如果不使用守护进程的方式来使用rsync,就不需要配置rsync
      
    6. Rsync实现本地备份
      1)备分一个文件
      # rsync /data/test.txt   /tmp
        把/data/目录下的test.txt, 备份到/tmp目录下。
       
      2)备份一个目录(文件夹)
      # rsync -r /data/user_data  /tmp 
        把/data目录下的文件夹user_data, 备份到/tmp目录下。
        注意:user_data目录本身以及该目录下的所有文件, 都备份到/tmp目录下   
      
      # rsync -r  /data/user_data/  /tmp
        把/data/user_data/下面的所有文件(包括子目录),都备份到/tmp目录下
     
        注意: 
        rsync -r  /data/user_data/  /tmp 
        和
        rsync -r  /data/user_data/  /tmp/ 
        是等效的!   
     
      3)能够删除
        注意: #  rsync -r  /root/user_data  /tmp/
                  将把user_data目录下所有文件以及这个目录本身,拷贝到/tmp目录下。
                  如果/tmp目录下,已经有user_data文件夹了,
                  那么/tmp/user_data中存在但是/root/user_data没有的文件,不会删除!
                  那如何删除呢?
     
                  使用 --delete
                
                  rsync -r --delete /root/user_data  /tmp/
               
      补充:rsync的常用选项,
         -r 用于对目录的备份。即对子目录做递归处理。
         -t 用来保持文件的时间信息
         -o 用来保持文件的属主信息
         -P 用来显示同步的过程和进度信息
         -D 用来保持设备文件信息
         -l 用来保持软链接
         -v 输出详细信息 
         -z 在传输时之前,进行压缩,对端接收后将自动解压。
         -e 指定使用的通道(比如使用ssh通道)
         -a 就是相当与 -rtopgDL
            实际同步时,常常使用-avz
          
         --bwlimit 用来限制速度
             比如: --bwlimit=100k
          用于排除文件
          --exclude 
         --exclude-from
      
    7. 使用Rsync实现远程同步(基于ssh通道)
       注意:使用ssh通道,传输的是增量拷贝的内容
     
       实例:
       推(上传)
       rsync -r -e  -avz 'ssh -p 50000'  /data  liubei@192.168.1.120:~
       说明: -e 'ssh -p 50000' 表示使用ssh通道进行传输
     
       拉(下载)
       rsync -ravz -e 'ssh -p 50000'  liubei@192.168.1.120:~/data    /tmp
       
       补充:
       查询某个服务的端口号
       1)netstat -lntup  |  grep 服务名
         比如:
         # netstat -lntup | grep ssh
       2) lsof -i  |  grep 服务名
         比如:
         # lsof -i | grep ssh
     
    8. 以守护进程的方式启动rsync
       必须先编辑好rsync的配置文件
        
       #vim  /etc/rsyncd.conf
    ---------------------------------
    uid = rsync        用户名id
    gid = rsync        用户组id
    use chroot = no    安全选项,在内网,一般选择no
    max connections = 200   同时可并发访问的客户端数量
    timeout = 300            超时时间
    pid file = /var/run/rsyncd.pid   存放rsync进程的进程号 
    lock file = /var/run/rsync.lock  锁文件,用来实现互斥
    log file = /var/log/rsyncd.log
    日志文件,如果不指定该文件,默认日志文件就是/var/log/messages
    [data]     自定义模块,以后客户端同步时,可以指定模块名
    path = /data/    该模块的根目录
    ignore error     忽略错误
    read only = false  可写
    list = false       可列表
    host allow = 192.168.1.0/24   哪些主机可以连接到该服务器
    host deny = 0.0.0.0/32        哪些主机不可以连接到该服务器
    auth users = rsync_backup     rsync的虚拟用户
    secrets file = /etc/rsync.password    该虚拟用户的密码保存在哪个文件
    -------------------------------------
     
    该配置文件如果某一个有语法错误,那么后面的配置就无效!
    就使用默认配置! 
     
      
    9. 启动Rsync
      以守护进程的方式启动Rsync
      # rsync  --daemon
     
      检查是否成功:
      1)查看rsync的日志
         cat /var/log/rsyncd.log
     
      2) ps -ef | grep rsync
         查看rsync这个进程是否启动
     
      3)netstat -lntup | grep rsync
     
    10. 根据配置文件,完善相关设置
      1)创建rysnc用户
         useradd  rsync -s /sbin/nologin
      2) 创建模块指定的目录
         mkdir  /data
         并授权给rsync以只读的权限
         chown  -R rsync.rsync  /data
      3) 设置虚拟帐号的密码文件
         echo "rsync_backup:123456" > /etc/rsync.password
         表示,虚拟帐号rsync_backup的密码是123456
          
         并降低这个密码文件的权限
         chmod 600 /etc/rsync.password
     
      4) 关闭防火墙,或则让防火墙开放rsync的端口(873)
         否则,远程的客户端无法连接进来。
     
      5)关闭selinux
         selinux, 是内核强制访问控制安全系统。
         开启selinux后,一些软件可能受到影响。
     
         检查是否已经关闭selinux
         # getenforce
          
         关闭selinux:
         修改/etc/sysconfig/selinux
         把 SELINUX=enforcing
         修改为: SELINUX=disabled
         再重启系统
     
    11) 可以在开机时就自动把Rsync设置为守护进程
         echo "/usr/bin/  /etc/rc.local
     
    12) 客户端的设置
        (1)先检查是否已经安装rsync
         (2) 设置密码
             以使用守护进程rsync时,需要使用虚拟用户rsync_backup
             所以,在客户端,需要设置这个虚拟账户所使用的密码
            
             echo "123456" > /etc/rsync.password
             chmod 600  /ect/rsync.password
       
    13) 在客户端使用Rsync
          方式1:(推荐)
        
          推(上传)
          rsync -avz -r /data  rsync_backup@192.168.1.4::data --password-file=/etc/rsync.password
          表示,把本地的/data目录,通过守护进程Rsync,上传到Rsync服务器192.168.1.4,
                保存到服务器端的data模块的根目录
     
          拉(下载)
          rsync -avz -r  rsync_backup@192.168.1.4::data /tmp --password-file=/etc/rsync.password 
           
          方式2:
          rsync -avz -r  rsync://rsync_backup@192.168.1.4/data  /tmp --password-file=/etc/rsync.password      
          注意:192.168.1.4/data 中data是Rsync服务器端的模块名
    
    11. rsync的排除选项
      rsync的各种选项,在3个模式下都可以使用。
     
      --exclude
      --exclude-from
     
      1) --exclude的使用
        在同步时,希望某些文件(文件夹)不被同步。
       
        rsync -r  --exclude=5.txt  /data  /tmp/
        把/data目录同步到/tmp下,同时排除5.txt(使用相对路径)
     
        rsync --exclude={3.txt,5.txt,6.txt}  -r /data /tmp/
        排除了多个文件,中间用逗号分隔,外面用{ }括起来
     
        rsync --exclude={3..6}.txt  -r /data /tmp/
        排除3.txt,4,txt,...6.txt
     
        注意:被排除的文件,使用相对路径!
     
      2) --exclude-from
        当需要排除很多而且文件名没有规律的文件时,可以使用--exclude-from
        rsync -r --exclude-from=/root/mylist /data  /tmp
        排除文件存放在/root/mylist文件中.
        --------------/root/mylist-----------------
        1.txt
        5.txt
        a.txt
        d.txt
       -------------------------------------------
        
       注意:--exclude-from后的文件,使用绝对路径。
             该文件内存放需要排除的文件,
             一个文件占用一行(使用相对路径)
     
    12. 在rsync的服务器端也可以设置排除
        在rsync的配置文件中设置。
        --------------/etc/rsyncd.conf--------------
        ........
        exclude = 1.txt 6.txt c.txt
        .......
        --------------------------------------------
        多个文件之间使用空格分隔,使用相对路径
        
        在服务器端配置后,就永久有效,而且在客户端就不需要使用--delete选项。
     
        注意:一般都在客户端使用排除选项。
     
    有差异同步和无差异同步
       一般同步时,可能造成客户端和服务端的数据不一致,即有差异同步。
       使用 --delete选项,即可实现无差异同步!
     
       推(上传)
       使用--delete, 可以删除服务的部分文件。
       使用场景:备份。
     
       拉(下载)
       使用--delete, 可以删除本地的部分文件。
       使用场景:主要用于代码发布。
     
    rsync共享多个目录
      即服务器端配置多个模块。
      /etc/rsyncd.conf
      -------------------------
      各模块的公共配置
      [模块名]
      该模块的配置
      [模块名]
      该模块的配置
      [模块名]
      该模块的配置
      -------------------------
      注意, 以及配置必须在模块内定义
      ignore errors
      host allow = 192.168.1.0/24
      host deny = 0.0.0.0/32
       
    rsync守护进程方式下的常见错误排查
    1)首先应该查看 rsync的日志文件
       根据日志中的错误提示解决。
    2)再检查rsync的配置文件
       注意某些配置必须在模块内定义
    3)检查模块的根目录需要对rsync用户授权
    4)本地的密码文件的权限不能太高,应该是600
    5) 防火墙
       先关闭防火墙 
  • 相关阅读:
    批量下载B站视频
    MATLAB安装
    printf小结
    hdoj 1874 dijkstra
    斐波那契而数列
    PAT数列排序
    感想
    物理定律的适用范围
    本博客的文章曾经恢复过,但迅速被部分删除(不知名的原因)
    (废墟重建)程序员如何学习书本上的例子 how programmers learn examples of books
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/12063800.html
Copyright © 2011-2022 走看看