使用 rsync 实现生产数据的增量备份

0x01 使用实例

利用rsync完成增量备份的脚本:

[root@yunwei-beifen beifen]# cat beifen-tool/rsync-100-20-**-**.sh
#!/bin/bash

execute_id=`uuidgen`

log_file="/nfsc/pocdev_vol_000094/beifen-data/100-20-**-**-log.d/`date '+%Y%m%d'`-execute.log"

echo 'Rsync script started time is :' `date` $execute_id >> $log_file

#删除DST端中在SRC已经删除或者不存在的目录,同时排除LOG目录,以降低备份服务器硬盘空间的占用
rsync -azuv --exclude-from='./rsync-100-20-**-**-Exclude.list' --bwlimit=1024 --delete --delete-after root@100.20.**.**:/home/admin /root/beifen/beifen-data/100-20-**-** >> $log_file

echo 'Rsync script finished time is :' `date` $execute_id >> $log_file
[root@yunwei-beifen beifen]#

日志目录排除清单:

[root@yunwei-beifen beifen]# cat beifen-tool/rsync-100-20-**-**-Exclude.list 
www/data/administrator/logs
...
atlassian/******/logs
...
.jenkins/logs
...
[root@yunwei-beifen beifen]#

定时任务设置:

[root@yunwei-beifen beifen]# crontab -l
30 02 * * * /bin/bash /nfsc/pocdev_vol_000094/beifen-tool/rsync-100-20-**-**.sh &> /dev/zero
[root@yunwei-beifen beifen]#

上述的脚本和定时任务配置,达到的效果是:在每天的凌晨两点半,开始比较备份服务器与生产服务器的数据(排除无用且数据量较大的日志),并按照对比的结果,将生产服务器昨日新产生的数据同步到备份服务器中,将生产服务器中已经删除的文件也在备份服务器中删除掉,以保证两端数据完全相同,同时输出同步日志到备份服务器相应的目录。备份机是私有云中的一台虚拟机,备份数据会写入到私有云中的NAS存储,备份脚本与日志也都保存在NAS存储中。

0x02 参数解释

这里只简要解释脚本中使用到的rsync参数:

rsync -azuv SRC/ DST/ :把SRC目录中的文件,同步到DST目录中。

参数 作用解释
-a 保留被同步文件的所有元数据,并递归
-z 传输文件时进行压缩以节省带宽
-u 跳过目标目录中更新的文件
-v 输出同步的细节
–exclude-from=’./rsync-100-20-**-**-Exclude.list’ 从指定文件中读取需要排除的目录、文件
–bwlimit=1024 限速传输,单位为KB/s
–delete 删除目标目录比源目录多余的文件
–delete-after 定义–delete动作的执行时机,即在所有文件传输完成后开始删除
–progress 在传输过程中显示进度

使用 rsync 实现生产数据的增量备份
https://srezone.open-space.cc/article/2279620328.html
作者
Richard Li
发布于
2021年7月7日
许可协议