Rsync

1  什么是Rsync?

       Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。

 2  Rsync的特性如下

  • 支持拷贝特殊文件如链接文件,设备等
  • 可以有排除(tar?find?)指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p
  • 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)
  • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
  • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
  • 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像                                                                                                                                                                              
  • 3 Rsync一共几种模式?

    • 单个主机本地之间的数据传输(此时类似于cp命令的功能)
    • 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)
    • 以守护进程(socket)的方式传输数据(这个是rsync自身的重要功能)
    • 4  rsync 命令常用参数选项说明
    •  -v,--verbose 详细模式输出,传输时的进度等信息 
    •  -z,--compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。 
    •  -a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgD1(字母1)

       

      -r,--recursive

      对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r

      -t,--times

      保持文件时间信息

      -o,--owner

      保持文件属主信息

      -p,--perms

      保持文件权限

      -g,--group

      保持文件属组信息

      -P,--progress

      显示同步的过程及传输时的进度等信息

      -D,--devices

      保持设备文件信息

      -l,--links

      保留软链接

      -e,--rsh=COMMAND

      使用的信道协议(remote shell),指定替代rsh的shell程序。例如:ssh --exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样)

      --bwlimit=RATE

      limit socket I/O bandwidth

      二, 开始部署rsync服务--Rsync服务器端A-Server操作过程:

       1. 配置rsyncd.conf

        首先确认软件是否安装:(which rsync)

    •         没有就安装 :            rpm -qa rsync

    •   然后创建rsyncd.conf文件,并添加如下内容(文件默认不存在)

    •   uid = rsync# (用户)
    • . gid = rsync#  (组)

      . use chroot = no# 程序安全设置

      . max connections = 200. # 客户端连接数

      . timeout = 300 # 超时时间

      . pid file = /var/run/rsyncd.pid# 进程号文件位置

      . lock file = /var/run/rsync.lock# 进程锁

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

      . [backup]

        path = /backup/ # 使用目录

      . ignore errors # 有错误时忽略

       

    • . read only = false#可读可写(true或false)

      . list=false# 阻止远程列表(不让通过远程方式看服务端有啥)

      . hosts allow = 192.168.232.0/24#允许IP

      . hosts deny = 0.0.0.0/32 #禁止IP

       

    • . auth users = rsync_backup # 虚拟用户

        secrets file = /etc/rsync.password#存放用户和密码的文件

    • rsyncd.conf参数

      参数说明

      uid=rsync

      rsync使用的用户。

      gid=rsync

      rsync使用的用户组(用户所在的组)

      use chroot=no

      如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系

      max connections=200

      设置最大连接数,默认0,意思无限制,负值为关闭这个模块

      timeout=400

      默认为0,表示no timeout,建议300-600(5-10分钟)

      pid file

      rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止

      lock file

      指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制

      log file

      不设或者设置错误,rsync会使用rsyslog输出相关日志信息

      ignore errors

      忽略I/O错误

      read only=false

      指定客户端是否可以上传文件,默认对所有模块为true

      list=false

      是否允许客户端可以查看可用模块列表,默认为可以

      hosts allow

      指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接

      hosts deny

      指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接

      auth users

      指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问

      secrets file

      指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位

      [backup]

      这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护

      path

      这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题

       

    • 1. 案例:某DBA做数据同步,带宽占满,导致用户无法访问网站。

       
      1. rsync -avz dbfile 10.0.0.41:/backup #没有给带宽做限制
      2. rsync -avz --bwlimit=100 dbfile 172.16.1.41:/backup #限定了带宽
    • 1. 创建共享目录及添加rsync程序用户

    •     useradd -M -s /sbin/nologin rsync #创建rsync用户

      2 启动服务:

    •     rsync --daemon

      3 将A-Server上的/backup文件夹更改属主rsync

    •       chown -R rsync /backup
    • 4 创建rsync虚拟账户名和密码

    •     echo "rsync_backup:123456" >/etc/rsync.password
    • 5  将账户密码文件的权限设置为600(必须否则失败)

    •    chmod 600 /etc/rsync.password
    • 6  加入开机启动
    •     echo "rsync --daemon" >> /etc/rc.local
    • 开始部署rsync服务--Rsync客户端B-Server

    • 1 只需要创建密码文件     echo "123456" > /etc/rsync.password

    • 2 将密码文件的权限设置为600(必须否则失败)     chmod 600 /etc/rsync.password

    •  Rsync 优缺点

       

      1. rsync优点:

      1,增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)。 
      2,远程SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务

       

      2.rsync缺点:

      1,大量小文件时候同步的时候,比对时间较长,有的时候,同步过程中,rsync进程可能会停止,僵死了。 
      2,同步大文件,10G这样的大文件有时也会出问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial)等参数实现传输 
      3,一次性远程拷贝可以用scp,大量小文件要打成一个包再拷贝。(重要)

    •  

posted @ 2018-11-06 14:21  韩大伟  阅读(1446)  评论(1编辑  收藏  举报