美文网首页
2020-02-24 Rsync功能应用拓展

2020-02-24 Rsync功能应用拓展

作者: 阿丧小威 | 来源:发表于2020-02-24 17:08 被阅读0次

    1. 多模块复制应用

    修改rsyncd.conf配置实现多模块配置
    1)最简单的实现,可以在配置文件结尾加如下内容(特殊底纹部分):

    [root@backup ~]# cat /etc/rsyncd.conf
    #rsync_config_____________start
    #create by zheng
    uid = rsync
    gid = rsync
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    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.9.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup/
    [data]    ---新模块
    path = /data/    ---新备份目录
    

    2)建立目录并授权

    [root@backup ~]# mkdir -p /data
    [root@backup ~]# chown -R rsync.rsync /data
    [root@backup ~]# ls -ld /data
    drwxr-xr-x 2 rsync rsync 6 2月  20 11:45 /data
    

    3)重启Rsync服务(只要修改配置,就考虑重载服务)

    [root@backup ~]# systemctl restart rsyncd
    

    4)从客户端访问测试

    [root@nfs01 ~]# mkdir /data
    [root@nfs01 ~]# cd /data/
    [root@nfs01 data]# touch oldboy.txt
    [root@nfs01 data]# rsync -avz /data rsync_backup@192.168.9.5::data
    Password: 
    sending incremental file list
    data/
    data/oldboy.txt
    sent 125 bytes  received 47 bytes  12.74 bytes/sec
    total size is 0  speedup is 0.00
    

    5)然后在服务端查看

    [root@backup ~]# ls /data/
    data
    

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

    2.1 实践准备工作(Rsync服务器端操作)

    [root@backup backup]# cd /backup/
    [root@backup backup]# mkdir {a..d}
    [root@backup backup]# touch a/1 b/2 c/3 d/4
    [root@backup backup]# tree /backup/
    /backup/
    ├── a
    │   └── 1
    ├── b
    │   └── 2
    ├── c
    │   └── 3
    └── d
        └── 4
    4 directories, 4 files
    

    这里建立了a、b、c、d4个目录,目录下的文件分别为1、2、3、4,其中/backup目录为Rsync服务器端指定的备份同步目录。

    2.2 实践复制数据并排除指定目录和文件

    这里以在Rsync客户端(nfs01:192.168.9.6)上执行拉取文件的操作,即从服务器端同步文件到客户端为例进行操作,推送的方式是一样的。
    方法一:通过Rsync客户端命令加命令行参数实现
    同步数据过程中,假定要排除a、c目录(包括内部文件)及b目录下的2文件,其他同步,实践操作过程如下:

    [root@nfs01 ~]# rsync --exclude=a --exclude=b/2 --exclude=c -avzrtopP \
    > rsync_backup@192.168.9.5::backup/ /mnt --password-file=/etc/rsync.password
    receiving incremental file list
    ./
    b/
    d/
    d/4
                  0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/4)
    sent 81 bytes  received 175 bytes  24.38 bytes/sec
    total size is 0  speedup is 0.00
    [root@nfs01 ~]# tree /mnt
    /mnt
    ├── b
    └── d
        └── 4
    2 directories, 1 file
    

    通过rsync同步的过程及使用tree命令可以清晰地看出仅b目录本身和d目录及内部的文件同步过来了。

    --exclude=PATTERN    ---表示分别排除匹配上的文件信息
    --exclude-from=FILE    ---表示将要匹配的文件或目录信息汇总写入到一个文件中
    

    排除文件的编写形式如下,以上文中利用--exclude参数排除文件和目录的方式为例,如果改为--exclude-from的排除方法,排除文件的命令如下:

    [root@nfs01 ~]# vim exclude-file.txt
    a
    b/2
    c
    [root@nfs01 ~]# rsync --exclude-from=./exclude-file.txt -avzP rsync_backup@192.168.9.5::backup/ /mnt/ --password-file=/etc/rsync.password
    receiving incremental file list
    sent 49 bytes  received 122 bytes  16.29 bytes/sec
    total size is 0  speedup is 0.00
    [root@nfs01 ~]# tree /mnt
    /mnt
    ├── b
    └── d
        └── 4
    2 directories, 1 file
    

    方法二:通过在服务器端(IP:192.168.9.5)配置rsyncd.conf参数实现

    vi /etc/rsyncd.conf
    exclude=a c b/2
    说明:仅增加了一行  内容为:exclude=a c b/2,exclude为排除目录或文件的参数,表示排除a、c目录及b目录的2文件。文件和目录之间用空格隔开,所有目录及文件为相对于模块的目录。
    

    执行重启命令后测试,结果依然是仅b目录本身和d目录及内部的文件同步过来了。
    客户端rsync命令排除总结
    1)利用客户端rsync命令排除单个文件的命令如下:

    rsync -avz --exclude=a /data1/ rsync_backup@192.168.9.5::oldboy --password-file=/etc/rsync.password
    

    2)利用客户端rsync命令排除多个文件的命令如下:

    rsync -avz --exclude={a,b} /data1/ rsync_backup@192.168.9.5::oldboy --password-file=/etc/rsync.password
    rsync -avz --exclude=a --exclude=b /data1/ rsync_backup@192.168.9.5::oldboy --password-file=/etc/rsync.password
    rsync -avz --exclude={a..g} /data1/ rsync_backup@192.168.9.5::oldboy --password-file=/etc/rsync.password
    

    从文件中排除文件的命令如下:

    rsync -avz --exclude-from=paichu.log /data1/ rsync_backup@192.168.9.5::backup/ --password-file=/etc/rsync.password
    

    3)在服务器端指定排除参数的写法是:在/etc/rsyncd.conf里加exclude=a b test/oldboy.txt参数及要排除的文件,不推荐在服务器端进行配置,不灵活。

    3. 主机之间数据无差异复制说明

    要实现这种同步方式就要使用Rsync的--delete参数了。所谓的无差异复制,就是不管是拉取还是推送,都要保持两边的数据完全一致。

    Rsync无差异复制示意图

    1)本地推送式删除示例:

    mkdir null
    rsync -avzP --delete null/ /mnt/    ---null为空,因此/mnt内的数据会被删。
    

    2)拉取数据无差异同步方式的命令如下:

    rsync -avz --delete rsync_backup@192.168.9.5::backup /test/ --password-file=/etc/rsync.password
    ---BACKUP服务器端没有的数据,/test里有的都会删除,和BACKUP模块里的保持一致。
    

    拉取方式表示远程服务器端变化的文件,如删除了文件,那么,本地客户端的数据要保持和服务器端一致,即服务器端删除了什么内容,本地客户端就会删除什么内容,始终和服务器端保持数据一致。
    这个命令非常危险,使用不当会造成本地目录及文件,甚至是/根目录数据丢失。因此要特别注意小心使用。
    3)推送数据无差异同步方式的命令如下:

    rsync -avz --delete /test/ rsync_backup@192.168.9.5::backup --password-file=/etc/rsync.password
    

    推送方式表示本地客户端变化的文件,如删除了文件,那么,远程服务器端的数据要保持和客户端数据一致,即本地客户端删除什么内容,服务器端就会删除什么内容,始终和客户端保持数据一致。该命令同样非常危险,使用不当会造成远程服务器端目录及文件丢失。因此要特别注意小心使用。
    针对无差异同步--delete拉取和推送知识总结及生产场景应用
    1)Rsync推送企业工作场景,数据备份、上传。
    本地有什么,远端就有什么,本地没有的远端有也要删除,这会造成服务器端的目录数据丢失,备份和上传场景下一班不需要--delete功能,除非是像NFS实时复制数据到备份服务器上必须要保持两边一致的情形。
    2)Rsync拉取企业工作场景:代码发布、下载。
    远端有什么,本地(客户端)就有什么,远端没有的本地有也要删除。这会造成本地目录数据丢失。适用于无差异复制的两台服务器之间,要求数据必须一致,且实时性又不是很高的情况,如两台负载均衡下面Web服务器之间的同步,或者高可用双机配置之间的同步、NFS共享数据的实时复制等。Rsync无差异同步非常危险,而且有很多的替代方案,因此,生产场景没有特殊的需求,应避免使用。

    相关文章

      网友评论

          本文标题:2020-02-24 Rsync功能应用拓展

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