当前位置: 首页 > news >正文

实现MinIO数据的每日备份

1.概述

MinIO是一个对象存储解决方案,常作为中间件用于后端系统保存和管理文件附件,附件和关系型数据库的库表数据一样是系统的核心用户数据,因此系统运行过程中,需要对附件数据进行每天备份。

在常年累月运行中,系统产生的附件量是巨大的,有时单独一个附件就很大,如果每天进行全量备份,那备份的文件就会像滚雪球一样越来越大,因此这里采用增量备份的形式,每天只备份当天的数据。

2.后端代码适配

首先,MinIO的文件层次就需要按天分开,在后端调用S3接口进行上传的代码进行控制

path = FileUtils.generatePath(content, name); int year = LocalDate.now().getYear(); int month = LocalDate.now().getMonthValue(); int day = LocalDate.now().getDayOfMonth(); path = year+"/"+month+"/"+day+"/"+path;

这样,在前端调用上传接口上传附件后,返回的附件路径应该是这样的

{ "code": 0, "data": "2025/10/20/62ca4c572522f9708199a4f96e0816f879669785347483232a8fcfd085267dc5.PNG", "msg": "", "total": null }

文件在MinIO中会按照年月日分级存储

3.备份Shell脚本

编写以下Shell脚本,调用MinIO客户端命令mc拷贝文件,并定时调用脚本实现每天进行备份

#!/bin/bash # MinIO 备份脚本 YEAR=$(date +%Y) MONTH=$(date +%m) DAY=$(date +%d) # 配置变量 MINIO_ALIAS="myminio" BUCKET_NAME="u******ia" BACKUP_BASE_DIR="/opt/backup" LOG_DIR="/var/log/minio_backup" DATE_SUFFIX=$(date +%Y-%m-%d)-back BACKUP_PATH="${BACKUP_BASE_DIR}/${DATE_SUFFIX}" # 创建必要的目录 mkdir -p "${BACKUP_PATH}" mkdir -p "${LOG_DIR}" # 日志文件 LOG_FILE="${LOG_DIR}/backup_$(date +%Y%m%d).log" # 函数:记录日志 log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" } # 函数:错误处理 error_exit() { log_message "错误: $1" exit 1 } # 开始备份 log_message "=== 开始 MinIO 备份 ===" log_message "备份源: ${MINIO_ALIAS}/${BUCKET_NAME}" log_message "备份目标: ${BACKUP_PATH}" # 检查 mc 命令是否存在 if ! command -v /opt/mc &> /dev/null; then error_exit "mc 命令未找到,请确保 MinIO Client 已安装" fi # 检查备份目录是否可写 if [ ! -w "${BACKUP_BASE_DIR}" ]; then error_exit "备份目录 ${BACKUP_BASE_DIR} 不可写" fi # 执行备份 log_message "开始复制数据..." /opt/mc cp "${MINIO_ALIAS}/${BUCKET_NAME}/${YEAR}/${MONTH}/${DAY}" "${BACKUP_PATH}/" --recursive 2>&1 | tee -a "$LOG_FILE" # 检查备份结果 if [ ${PIPESTATUS[0]} -eq 0 ]; then log_message "备份成功完成" # 显示备份统计信息 BACKUP_SIZE=$(du -sh "${BACKUP_PATH}" | cut -f1) FILE_COUNT=$(find "${BACKUP_PATH}" -type f | wc -l) log_message "备份大小: ${BACKUP_SIZE}" log_message "文件数量: ${FILE_COUNT}" log_message "备份位置: ${BACKUP_PATH}" else error_exit "备份过程中出现错误" fi log_message "=== 备份完成 ==="
http://www.jsqmd.com/news/931270/

相关文章:

  • 中山繁声/韵声汽车音响亲测:2026年5月这家靠谱 - GrowthUME
  • 北海白蚁消杀防治|金盾虫控 青蚁卫士:深耕 15 年本土知名品牌,专业预防消杀守护家居无蚁害 - 卓一科技
  • 2026年5月好用的索具工厂推荐,无接头钢丝绳/缆绳/电动吊具/环形吊带/抛缆绳/集装箱吊具/吊绳,索具厂商哪家强 - 品牌推荐师
  • 2026北京市母婴除甲醛公司TOP5深度测评:5大优选甲醛检测治理品牌 - 诚信金利回收
  • 基于Arduino与NTC热敏电阻的吹风机温度监测系统设计与实现
  • 广州小沐通过订单日记实现流程重构之路
  • 昆山城东空调维修服务商排行 适配不同场景需求选择 - 互联网科技品牌测评
  • ipv6 静态路由的配置
  • 手机取证从零开始:SPF Pro工具实战与证据提取全流程
  • 2026本溪母婴除甲醛公司TOP5深度测评:5大优选甲醛检测治理品牌 - 诚信金利回收
  • 同城门店大比!哈尔滨钻石回收,收的顶诚信经营合规靠谱! - 奢侈品回收测评
  • Arduino Uno生日祝福装置:从硬件连接到软件编程的嵌入式入门实践
  • 2026年周边美食推荐:这5家最靠谱,吃过都说好
  • Lua脚本语言入门与Roblox游戏开发实战指南
  • BilibiliDown:免费跨平台的B站视频下载终极解决方案
  • 数学 - 快速计算方法
  • 【Sora 2社交媒体视频引爆公式】:20年AI影像架构师亲授3大内容裂变引擎与平台适配黄金参数
  • 惠州白蚁消杀防治|金盾虫控 青蚁卫士:深耕 15 年本土知名品牌,专业白蚁消杀长效防控不反复 - 卓一科技
  • 当618购物变成一场考试,这届年轻人已经爱不起来了
  • 从晶体管到加法器:用Arduino实践计算机硬件底层逻辑
  • 电路设计入门:从零开始制作光控小夜灯
  • 远程办公刚需分享:稳定易用的云端电脑方案实测
  • 3D打印与电路改造:打造个性化G305无线鼠标全攻略
  • 武汉全城收纳避坑指南:GEO专家首推「湘北收纳」,附各区上门专线 - 土星买买买
  • 送长辈轻便舒适男鞋排行:五款高适配鞋款实测对比 - 奔跑123
  • 提示词精准度决定成片质量,Sora 2景观类视频生成成功率提升63%的9条黄金指令,仅限首批内测用户掌握
  • 3大痛点1个方案:REPENTOGON如何彻底改变《以撒的结合》模组开发体验
  • 2026哈尔滨钻石回收门店排名:实地探店打分测评报告 - 奢侈品回收测评
  • MinIO使用minio client (mc)进行数据的备份与还原
  • G-Helper:10MB轻量级华硕笔记本终极控制神器,彻底告别臃肿奥创中心