Linux 架构篇 知识心得04 rsync备份实例
2021/10/24 7:09:40
本文主要是介绍Linux 架构篇 知识心得04 rsync备份实例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
RSYNC实用案例
客户端需求: 1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02 2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02 3.客户端最后将备份的数据进行推送至备份服务器 4.客户端每天凌晨1点定时执行该脚本 5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间 服务端需求: 1.服务端部署rsync,用于接收客户端推送过来的备份数据 2.服务端需要每天校验客户端推送过来的数据是否完整 3.服务端需要每天校验的结果通知给管理员 4.服务端仅保留6个月的备份数据,其余的全部删除
1.客户端运行脚本
#!/bin/bash DIR=/backup IP=$(hostname -i) TIME=$(date +%F) SRC=$DIR/nfs_${IP}_${TIME} #客户端需求: #1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02 [ -d $SRC ] || mkdir $SRC #2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02 tar -czf $SRC/${TIME}.backup.tar.gz `find /etc/ -type f` &>/dev/null #建立文件校验文件 md5sum /$SRC/${TIME}.backup.tar.gz >/$SRC/${TIME}.md5sum #3.客户端最后将备份的数据进行推送至备份服务器 rsync -avz /backup/ rsync_backup@rsync::backup --password-file=/etc/rsync.passwd #4.客户端每天凌晨1点定时执行该脚本 # 通过 crontab -e 设置定时任务: 0 1 * * * /bin/bash /root/kehuduan.sh #5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间 find $DIR/ -mtime +7 |xargs rm -rf
2.服务端运行脚本
#!/bin/bash DIR=/backup IP="172.16.1.31" TIME=$(date +%F) SRC=$DIR/nfs_${IP}_${TIME} #服务端需求: #1.服务端部署rsync,用于接收客户端推送过来的备份数据 rpm -q rsync &>/dev/null [ $? -ne 0 ]|| yum install rsync -y &>/dev/null #2.服务端需要每天校验客户端推送过来的数据是否完整 md5sum -c $SRC/${TIME}.md5sum >$SRC/result.txt #3.服务端需要每天校验的结果通知给管理员 mail -s "${TIME}备份文件 校验结果" 446010175@qq.com <$SRC/result.txt &>/dev/null #4.服务端仅保留6个月的备份数据,其余的全部删除 find $DIR/ -mtime +180 |xargs rm -rf
3.rsync结合inotify案例(客户端)
3.1 安装inotify
[root@web01 ~]# yum -y install inotify-tools
3.2 inotify的参数
-m 持续监控 -r 递归 -q 静默,仅打印时间信息 --timefmt 指定输出时间格式 --format 指定事件输出格式 %Xe 事件 %w 目录 %f 文件 -e 指定监控的事件 access 访问 modify 内容修改 attrib 属性修改 close_write 修改真实文件内容 open 打开 create 创建 delete 删除 umount 卸载
3.3 测试命令
/usr/bin/inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /backup # inotify 自动监测脚本,实现监控/backup目录以及无差异同步(重要) [root@backup ~]# vim rsyn-inotify.sh #!/bin/bash dir=/backup /usr/bin/inotifywait -mrq --format '%w %f' -e create,delete,attrib,close_write $dir | while read line;do cd $dir && rsync -az -R --delete . rsync_backup@172.16.1.31::backup --password-file=/etc/rsync.passwd >/dev/null 2>&1 done &
3.4 客户端实现
#!/bin/bash DIR=/backup IP=$(hostname -i) TIME=$(date +%F) SRC=$DIR/nfs_${IP}_${TIME} INOTIFY_DIR=/backup/ # 自动监测命令,检查目标目录是否有更新 inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib ${INOTIFY_DIR} |while read line do #已知确认的是每日产生一个打包压缩文件,若已产生文件,就不需要循环监测(只监测一次) if [ -f $SRC/${TIME}.backup.tar.gz ];then continue fi #客户端需求: #1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2021-08-03 [ -d $SRC ] || mkdir $SRC #2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2021-08-03 tar -czf $SRC/${TIME}.backup.tar.gz `find /etc/ -type f` &>/dev/null #建立文件校验文件 md5sum /$SRC/${TIME}.backup.tar.gz >/$SRC/${TIME}.md5sum #3.客户端最后将备份的数据进行推送至备份服务器 rsync -avz /backup/ rsync_backup@rsync::backup --password-file=/etc/rsync.passwd #4.客户端每天凌晨1点定时执行该脚本 # 通过 crontab -e 设置定时任务: 0 1 * * * /bin/bash /root/kehuduan.sh #5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间 find $DIR/ -mtime +7 |xargs rm -rf done &
3.5 服务端实现??
#!/bin/bash DIR=/backup IP="172.16.1.31" TIME=$(date +%F) SRC=$DIR/nfs_${IP}_${TIME} INOTIFY_DIR=/backup/ #服务端需求: #1.服务端部署rsync,用于接收客户端推送过来的备份数据 rpm -q rsync &>/dev/null [ $? -ne 0 ]|| yum install rsync -y &>/dev/null inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib ${INOTIFY_DIR} | while read line do echo $line if [ -f $SRC/result.txt ];then continue fi if [ -d $SRC ];then if [ ! -f $SRC/${TIME}.md5sum ];then continue fi fi #2.服务端需要每天校验客户端推送过来的数据是否完整 #3.服务端需要每天校验的结果通知给管理员 md5sum -c $SRC/${TIME}.md5sum >$SRC/result.txt if [ $? -ne 0 ];then echo "$SRC 文件校验失败" >>$SRC/result.txt else mail -s "${TIME}备份文件 校验结果" 446010175@qq.com <$SRC/result.txt &>/dev/null fi #4.服务端仅保留6个月的备份数据,其余的全部删除 find $DIR/ -mtime +180 |xargs rm -rf done
这篇关于Linux 架构篇 知识心得04 rsync备份实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法