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