Minio全量、增量备份和还原_minio 导出增量数据,2024年最新插件化框架解读之网络安全系统服务实现原理

文章目录

概述

本文档将详细介绍如何为Minio进行全量和增量备份,以及如何进行数据恢复。我们将使用rsync工具进行备份,并且会在每天定时进行全量备份以及每五分钟进行一次增量备份。还原数据时,可以选择特定日期的备份进行恢复,也可以选择是否还原增量备份数据。

备份策略

每天一次全量备份,五分钟一次增量备份

安装rsync

yum install -y rsync

目录结构说明

# 脚本所在目录
/usr/local/minio/bin
├── backup_env.sh
├── backup_full.sh
├── backup_incremental.sh
└── backup_restore.sh

# 备份文件所在目录
/mnt/backup/minio/data/
├── 2024-03-10_00-00-01.tar.gz
├── 2024-03-11_00-00-01.tar.gz
├── 2024-03-12_00-00-01.tar.gz
├── 2024-03-13_00-00-01.tar.gz
├── 2024-03-14_00-00-01.tar.gz
├── 2024-03-15_00-00-01.tar.gz
├── 2024-03-16_00-00-01.tar.gz
├── 2024-03-17_00-00-01.tar.gz
├── 2024-03-18_00-00-01.tar.gz
└── 2024-03-19_00-00-01
    ├── full
    ├── full_backup_success_flag
    ├── full.log
    ├── incremental
    └── incremental.log


环境变量脚本

在备份和还原脚本中,这些配置变量会被引用,确保您替换脚本中的路径为您的实际值

vim backup_env.sh

#!/bin/bash
# Minio安装目录
MINIO\_HOME="/usr/local/minio"
# 待备份目录
SOURCE\_DIR="${MINIO\_HOME}/data"
# 备份文件存储目录
BACKUP\_DIR="/mnt/backup/minio/data"
# 备份数据保留天数
RETENTION\_PERIOD=7

全量备份脚本

该脚本创建全量备份,清理过期备份。

vim backup_full.sh

#!/bin/bash
# 全量备份脚本
set -e
set -x
#获取当前脚本所在路径
CUR\_PATH=$(cd `dirname $0`; pwd)
# 导入配置文件中的公共变量
source ${CUR\_PATH}/backup_env.sh

# 定义备份目录及日志文件
DATE\_STR="$(date '+%Y-%m-%d\_%H-%M-%S')"
DATE\_BACKUP\_DIR="${BACKUP\_DIR}/${DATE\_STR}"
FULL\_BACKUP\_DIR="$DATE\_BACKUP\_DIR/full"
FULL\_LOG\_FILE="${DATE\_BACKUP\_DIR}/full.log"

# 创建全量备份目录
if [ ! -d "$FULL\_BACKUP\_DIR" ]; then
    mkdir -p "$FULL\_BACKUP\_DIR"
fi

# 全量备份并记录耗时到日志文件中
(time rsync -av --delete "$SOURCE\_DIR" "$FULL\_BACKUP\_DIR")  >"${FULL\_LOG\_FILE}" 2>&1

# 检查全量备份是否成功
if [ $? -eq 0 ]; then
        touch ${DATE\_BACKUP\_DIR}/full_backup_success_flag

        # 压缩其它全量备份文件
        echo "压缩其它全量备份文件..." >>"${FULL\_LOG\_FILE}"

        old\_backup\_file=$(find "$BACKUP\_DIR" -maxdepth 1 -type d -not -name "$DATE\_STR"|grep -v "$BACKUP\_DIR"'$')
        if [ -z "${old\_backup\_file}" ]; then
                echo "暂无旧备份文件" >>"${FULL\_LOG\_FILE}"
        else
                echo "待处理旧备份文件:" >>"${FULL\_LOG\_FILE}" 
                echo "$old\_backup\_file" | xargs -I {} echo {} >>"${FULL\_LOG\_FILE}" 
                echo "压缩旧备份文件..." >>"${FULL\_LOG\_FILE}" 
                echo "$old\_backup\_file" | xargs -r -I {} sh -c 'tar -czf {}.tar.gz -C {} -P .'
                echo "压缩成功!" >>"${FULL\_LOG\_FILE}" 

                echo "删除旧备份文件..." >>"${FULL\_LOG\_FILE}" 
                echo "$old\_backup\_file" | xargs -r -I {} rm -rf {}
                echo "删除成功!" >>"${FULL\_LOG\_FILE}" 
        fi

        echo "全量备份:${DATE\_BACKUP\_DIR},成功" >>"${FULL\_LOG\_FILE}"
else
        echo "全量备份:${DATE\_BACKUP\_DIR},失败" >>"${FULL\_LOG\_FILE}"
fi

# 清理过期备份
find "$BACKUP\_DIR" -ctime +$RETENTION\_PERIOD -exec rm -rf {} \;

set +x

命令解析

(time rsync -av --delete "$SOURCE_DIR" "$FULL_BACKUP_DIR") >"${FULL_LOG_FILE}" 2>&1

该命令用于使用rsync工具进行数据同步,并将同步过程中的输出信息(包括标准输出和错误输出)重定向到指定的日志文件中。命令详细解释如下:

  • time: 这是一个Unix/Linux命令,用于测量并显示命令执行所花费的时间。
  • rsync: 是一个强大的文件同步工具,用于在本地或远程之间进行数据备份或同步。
  • av: 这是rsync的选项组合,其中:
    • a:归档模式,相当于 rlptgoD 的组合,保留源文件的所有属性(如权限、时间戳、软硬链接等)并递归处理目录。
    • v:详细输出模式,会让rsync运行时显示详细的同步信息。
  • -delete:这是一个rsync选项,表示在目标目录中删除那些源目录不存在的文件和目录,使得目标目录与源目录保持一致。
  • "$SOURCE_DIR""$FULL_BACKUP_DIR":分别为源目录和目标目录,它们是变量引用,实际执行时会替换为具体的路径。
  • > "${FULL_LOG_FILE}": 将命令的标准输出重定向到${FULL_LOG_FILE}这个文件中,即同步过程中的详细信息会被记录在这个日志文件里。
  • 2>&1:这是将标准错误输出重定向到标准输出的语法,也就是说,任何错误信息也会被写入到${FULL_LOG_FILE}这个日志文件中。

综上所述,此命令的作用是:通过rsync工具以归档模式递归地同步源目录至目标目录,同时删除目标目录中源目录没有的文件,并将整个同步过程(包括详细信息和错误信息)都记录到指定的日志文件中,并且还显示了整个操作的执行时间。

增量备份脚本

该脚本会基于最新的全量备份创建增量备份

vim backup_incremental.sh

#!/bin/bash
# 增量备份脚本
set -e
set -x
#获取当前脚本所在路径
CUR\_PATH=$(cd `dirname $0`; pwd)
# 导入配置文件中的公共变量
source ${CUR\_PATH}/backup_env.sh

# 获取全量备份的最新目录
LATEST\_BACKUP=$(find "${BACKUP\_DIR}" -type f -name "full\_backup\_success\_flag" -exec dirname {} \;| grep -v '\_restore\_temp$' | xargs ls -td | head -n 1)
LATEST\_FULL\_BACKUP="${LATEST\_BACKUP}/full"
INCREMENTAL\_LOG\_FILE="${LATEST\_BACKUP}/incremental.log"

# 定义增量备份目录
DATE\_STR="$(date '+%Y-%m-%d\_%H-%M-%S')"
INCREMENTAL\_BACKUP\_DIR="${LATEST\_BACKUP}/incremental/${DATE\_STR}"

# 检查全量备份是否存在
if [ -f "${LATEST\_BACKUP}/full\_backup\_success\_flag" ]; then
        # 创建增量备份目录
        if [ ! -d "$INCREMENTAL\_BACKUP\_DIR" ]; then
                mkdir -p "${INCREMENTAL\_BACKUP\_DIR}"
        fi

        echo "开始增量备份:${INCREMENTAL\_BACKUP\_DIR}" >>"${INCREMENTAL\_LOG\_FILE}"
        # 增量备份并记录耗时到日志文件中
        (time rsync -av --delete --link-dest="$LATEST\_FULL\_BACKUP" "$SOURCE\_DIR" "$INCREMENTAL\_BACKUP\_DIR")  >>"${INCREMENTAL\_LOG\_FILE}" 2>&1

        # 检查增量备份是否成功
        if [ $? -eq 0 ]; then
                echo "增量备份:${INCREMENTAL\_BACKUP\_DIR},成功" >>"${INCREMENTAL\_LOG\_FILE}"

                # 只保留最新的10个增量备份
                #find "${LATEST\_BACKUP}/incremental" -maxdepth 1 -type d -exec stat -c "%Y %n" {} \; | sort -n | grep -vE "\\${LATEST\_BACKUP}/incremental\$" | head -n -1 | awk '{print $2}'| xargs rm -rf
                prepare\_delete\_file=$(find "${LATEST\_BACKUP}/incremental" -maxdepth 1 -type d -exec stat -c "%Y %n" {} \; | sort -n | grep -v "${LATEST\_BACKUP}"'/incremental$' | head -n -$INCREMENTAL\_RETENTION\_COUNT | awk '{print $2}')

                if [ -z "${prepare\_delete\_file}" ]; then
                        echo "暂无要删除的备份文件" >>"${INCREMENTAL\_LOG\_FILE}"
                else
                        echo "待删除备份文件:" >>"${INCREMENTAL\_LOG\_FILE}" 


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/e3874e9c29bab10a1233b2d1dafe9f6e.png)
![img](https://img-blog.csdnimg.cn/img_convert/e724b9b90a197831cc2894c491ee16bb.png)
![img](https://img-blog.csdnimg.cn/img_convert/278620a1115d29b29b8a1f15c3f50532.png)
![img](https://img-blog.csdnimg.cn/img_convert/6a3105687c4b19a6d1c14413da2d6d71.png)
![img](https://img-blog.csdnimg.cn/img_convert/6a0301356c1708d4b8306feca9699ded.png)
![img](https://img-blog.csdnimg.cn/img_convert/c227099d136bc5947a9a3a6faa3cd5c4.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)**
![img](https://img-blog.csdnimg.cn/img_convert/2502cc464036da97cd006fff71403159.png)




本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。


最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。


最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。


![](https://img-blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)



### 学习路线图


 其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。


相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。


![](https://img-blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)


#### 网络安全工具箱


当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份**我自己整理的网络安全入门工具以及使用教程和实战。**


![](https://img-blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)


#### 项目实战


最后就是项目实战,这里带来的是**SRC资料&HW资料**,毕竟实战是检验真理的唯一标准嘛~


![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/746e5cc6838c8d5d29dade1d83a9ec46.png)

检验真理的唯一标准嘛~


![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-I9ct0JsX-1712970540386)]

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值