简介

  • rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  • 支持:
    • 本地复制
    • 与其他SSH同步
    • 与rsync主机同步

rsyncd 源服务

  • 创建 rsync 配置文件 /etc/rsyncd.conf,内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    # 限制客户端登陆身份为 nobody:nobody
    uid = nobody
    gid = nobody
    # 禁锢在源目录下
    use chroot = yes
    # 指定监听端口,默认监听 tcp 873 端口
    port = 873
    # 指定监听地址,默认监听全部网卡
    address = 192.168.1.101
    # 允许访问的客户端地址
    hosts allow = 192.168.1.0/24
    max connections = 4
    # 日志位置
    log file = /var/log/rsyncd.log
    # PID 文件位置
    pid file = /var/run/rsyncd.pid
    exclude = lost+found/
    transfer logging = yes
    timeout = 900
    ignore nonreadable = yes
    # 同步时不压缩的文件类型
    dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    # 账户文件,每行格式 user:password,权限 600
    secrets file = /etc/rsyncd_users.db
    
    [data1]
    # 源目录实际路径,注意该目录需要对 nobody 用户可读
    path = /path/to/data1
    # 描述
    comment = sth about dir data1
    # 只读
    read only = yes
    # 授权账户
    auth users = backuper
  • 创建备份帐号信息

    1
    2
    
    echo 'backuper:123456' > /etc/rsyncd_users.db
    chmod 0600 /etc/rsyncd_users.db
  • 启动 rsyncd 服务

    1
    
    systemctl start rsyncd

rsync 命令选项

  • -r: 递归模式,包含目录及子目录中所有文件
  • -l: 对于符号链接文件仍然复制为符号链接文件
  • -p: 保留文件的权限标记
  • -t: 保留文件的时间标记
  • -g: 保留文件的属组标记(仅超级用户使用)
  • -o: 保留文件的属主标记(仅超级用户使用)
  • -D: 保留设备文件及其他特殊文件
  • -a: 归档模式,递归并保留对象属性,等同于 -rlptgoD
  • -v: 显示同步过程的详细(verbose)信息
  • -z: 在传输文件时进行压缩(compress)
  • -H: 保留硬连接文件
  • -A: 保留ACL属性信息
  • –delete: 删除目标位置有而原始位置没有的文件
  • –checksum: 根据对象的校验和来决定是否跳过文件
  • –password-file: 指定包含密码的文件

简单使用

  • 本地复制,类似 cp 命令

    1
    
    rsync -a /etc/passwd 123.txt
  • 与其他 ssh 同步

    1
    
    rsync -av root@192.168.1.100:/root/123.txt .
  • 与 rsync 主机同步

    1
    2
    3
    
    rsync -avz backuper@192.168.1.100::data1 /root
    # 或者
    rsync -avz rsync://backuper@192.168.1.100/data1 /root
  • 向同步源服务上传文件时,直接调换源参数和目的参数,注意客户端可写上传目录

参考