Rsync扩展
Rsync多模块
前文都是访问单个的rsync模块,访问同步的目录/backup,rsync支持同时从其他目录拉取资料呢?当然可以
【修改rsyncd.conf配置多模块】
######by chaoge rsyncd.confuid = rsyncgid = rsyncfake super = yesuse chroot = nomax connections = 200pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.logignore errorsread only = falselist = falsehosts allow = 192.168.178.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets 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文件,其他文件进行同步】
--exclude=文件 # 匹配排除文件
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
至此可以看出同步的过程以及tree命令可以清晰看出同步的文件结果
方法二,在Rsync服务端配置
1.修改rsync服务端配置文件,添加如下配置,排除指定目录
exclude=a c b/2
2.重启服务
[root@rsync01 backup]# systemctl restart rsyncd
3.在客户端验证拉取,仍然能够看到同样的结果
[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参数总结与生产环境
Rsync推送企业工作场景:数据备份、上传
本地有的资料,远端机器完全一致 在使用场景是备份、上传情况下,一般不用加上--delete参数,除非是NFS服务的实施复制,数据必须完全一致性Rsync拉取场景:代码发布、下载
Rsync无差异同步还可以用于负载均衡下的Web服务器之间的同步,或者NFS共享数据的同步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
<a name="Znnix"></a>
## Rsync限速
限速参数 —bwlimit=KBPS 该参数允许最大传输速率是多少KB/s,设置为0则不限速
限速参数<br />--bwlimit=KBPS<br />该参数允许最大传输速率是多少KB/s,设置为0则不限速···<br />在某公司,白天高峰期某DBA人员在数据库服务器通过rsync复制百G数据到备份服务器,导致数据库服务器带宽占满,造成用户无法访问。<br />这就应该用rsync限速功能,限制复制速度在带宽的1/3这样,就能够解决该问题<br />当然,尽量别在高峰期做大数据复制行为!
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
