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备份实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程