• Rsync扩展


    Rsync多模块

    【修改rsyncd.conf配置多模块】

    ######by chaoge   rsyncd.conf
    
    uid = rsync
    gid = rsync
    fake super = yes
    use chroot = no
    max connections = 200
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.178.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    
    [backup]
    comment = This is chaoge backup!
    path = /backup/
    ######
    [data]    # 新增的模块
    path=/data/        # 新增的备份目录
    

      【2.创建目录且授权】

    [root@rsync01 ~]# mkdir -p /data
    [root@rsync01 ~]# chown -R rsync.rsync /data
    [root@rsync01 ~]# ls -ld /data/
    drwxr-xr-x. 2 rsync rsync 6 Mar 12 10:31 /data/
    

      【3.重启rsync服务】

    [root@rsync01 ~]# systemctl restart rsyncd
    

      【4.客户端同步测试】

    [root@nfs01 ~]# mkdir -p /data
    [root@nfs01 ~]# touch /data/爱的魔力转圈圈.txt
    
    [root@nfs01 ~]# rsync -avz /data rsync_backup@192.168.178.148::data
    sending incremental file list
    data/
    data/爱的魔力转圈圈.txt
    
    sent 136 bytes  received 39 bytes  350.00 bytes/sec
    total size is 0  speedup is 0.00
    

      【5.rsync服务端查看数据】

    [root@rsync01 ~]# ls /data/data/
    爱的魔力转圈圈.txt
    

      

    排除指定目录和文件数据复制、

    【1.准备好Rsync服务端工作】

    1.准备好测试的文件夹目录
    cd /backup/
    mkdir {a..d}
    touch a/1 b/2 c/3 d/4
    
    
    yum install tree -y
    
    # 备份目录下有如下文件
    [root@rsync01 backup]# tree
    .
    ├── a
    │   └── 1
    ├── b
    │   └── 2
    ├── c
    │   └── 3
    ├── chaoge.txt
    └── d
        └── 4
    

      【2.在客户端上拉取文件,且排除a c目录机器内部文件,以及b目录下的2文件,其他文件进行同步】

    1.准备好一个测试的目录,用于数据同步  
    ls /mnt
    
    
    2.执行同步且排除文件的命令
    [root@nfs01 ~]# rsync --exclude=a --exclude=b/2  --exclude=c -avzP rsync_backup@192.168.178.148::backup /mnt --password-file=/etc/rsync.password
    
    3.检查同步的文件,是否正确
    [root@nfs01 ~]# tree /mnt
    /mnt
    ├── b
    ├── chaoge.txt
    └── d
        └── 4
    

      

    方法二,在Rsync服务端配置

    1.修改rsync服务端配置文件,添加如下配置,排除指定目录
    exclude=a c b/2
    
    2.重启服务
    [root@rsync01 backup]# systemctl restart rsyncd
    

      【在客户端验证拉取,仍然能够看到同样的结果】

    [root@nfs01 ~]# rsync --exclude=a --exclude=b/2  --exclude=c -avzP rsync_backup@192.168.178.148::backup /mnt --password-file=/etc/rsync.password^C
    [root@nfs01 ~]#
    [root@nfs01 ~]#
    [root@nfs01 ~]# rsync -avzP rsync_backup@192.168.178.148::backup /mnt
    

      

    服务器之间数据无差异复制

     

    实现该同步方式,主要是是同rsync的 --delete参数

    【1.本地推送式删除】

    # 保持/mnt下内容和/tmp完全一致,删除其他多余文件
    [root@rsync01 tmp]# rsync -avzP --delete /tmp/  /mnt/
    

     

    【2.拉取数据无差异同步】

    注意rsyncd.conf配置文件,之前配置过排除文件的参数

    rsync -avzP --delete rsync_backup@192.168.178.148::backup /mnt/ --password-file=/etc/rsync.password
    

      

    --delete参数就是保证客户端和服务端的数据完全一致,这可能是个危险的命令!

    【3.推送数据无差异同步】

    [root@nfs01 ~]# rsync -avz  --delete /tmp/ rsync_backup@192.168.178.157::backup --password-file=/etc/rsync.password[root@nfs01 ~]# rsync -avz  --delete /tmp/ rsync_backup@192.168.178.157::backup --password-file=/etc/rsync.password
    

      

    --delete参数总结与生产环境

    1. Rsync推送企业工作场景:数据备份,上传

    本地有的资料,远端机器完全一致
    在使用场景是备份、上传情况下,一般不用加上--delete参数,除非是NFS服务的实施复制,数据必须完全一致性
    

    2. Rsync拉取场景:代码发布,下载

    Rsync断点续传

    Rsync支持大文件断点续传,参数如下

    --partial  
    默认情况rsync传输中断后,将会删除所有部分传输的文件,某些情况下用户希望能保留已经
    传输的内容,该参数告知rsync保留部分已传输的文件,可以使得剩余文件部分传输
    
    --partial-dir=DIR
    保留部分传输文件,这是个更好的参数,能够指定目录保存部分数据,而不是写入目标文件
    下次传输的时候,rsync将使用该目录的数据,来恢复整体数据传输,结束后删除该目录
    

      【断点续传案例】

    1.加上断点续传指定目录参数,传输中断,部分数据也保存在了指定目录,传输结束后,会删除该文件
    [root@nfs01 tmp]# rsync -avzP --partial-dir=/tmp/ /tmp/1  rsync_backup@192.168.178.157::backup
    

      

    Rsync限速

    限速参数
    --bwlimit=KBPS
    该参数允许最大传输速率是多少KB/s,设置为0则不限速
    

      在某公司,白天高峰期某DBA人员在数据库服务器通过rsync复制百G数据到备份服务器,导致数据库服务器

    带宽占满,造成用户无法访问。

    这就应该用rsync限速功能,限制复制速度在带宽的1/3这样,就能解决该问题。

    当然,尽量别在高峰期做大数据复制行为。

    1.快四生成1G文件
    dd if=/dev/zero of=test1  bs=10M count=128
    
    2.不限速传输形式
    [root@nfs01 tmp]# rsync -avzP /tmp/test1 rsync_backup@192.168.178.157::backup
    sending incremental file list
    test1
        495,026,176  36%   91.26MB/s    0:00:09  ^C
    rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(638) [sender=3.1.2]
    
    3.限速传输
    [root@nfs01 tmp]# rsync -avzP --bwlimit=10 /tmp/  rsync_backup@192.168.178.157::backup
    

      

      

    生产经验

    rsync默认增量复制,与oss的数据复制的时候,注意参数,无法用-a参数,因为涉及到权限问题,-a是保持属性,

    rsync -r

  • 相关阅读:
    [OPENCV]CvMat,Mat和IplImage之间的转化和拷贝
    [计算机视觉]掩膜(mask)
    服务器被黑给我上了一课
    Nginx安装
    lvs fullnat部署手册(一)fullnat内核编译篇
    MySQL小误区:关于set global sql_slave_skip_counter=N 命令的一些点
    mysql主从复制跳过错误
    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案
    This function has none of DETERMINISTIC, NO SQL解决办法
    Ansible 1.9.0发布 来一起看看这个配置管理新贵
  • 原文地址:https://www.cnblogs.com/abc1234567/p/14191175.html
Copyright © 2020-2023  润新知