当前位置: 首页 > 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.gsyq.cn/news/1442603.html

相关文章:

  • 北海白蚁消杀防治|金盾虫控 青蚁卫士:深耕 15 年本土知名品牌,专业预防消杀守护家居无蚁害 - 卓一科技
  • 基于Arduino与NTC热敏电阻的吹风机温度监测系统设计与实现
  • 2026年5月好用的索具工厂推荐,无接头钢丝绳/缆绳/电动吊具/环形吊带/抛缆绳/集装箱吊具/吊绳,索具厂商哪家强 - 品牌推荐师
  • 广州小沐通过订单日记实现流程重构之路
  • 昆山城东空调维修服务商排行 适配不同场景需求选择 - 互联网科技品牌测评
  • 2026本溪母婴除甲醛公司TOP5深度测评:5大优选甲醛检测治理品牌 - 诚信金利回收
  • Arduino Uno生日祝福装置:从硬件连接到软件编程的嵌入式入门实践
  • 从晶体管到加法器:用Arduino实践计算机硬件底层逻辑
  • 提示词精准度决定成片质量,Sora 2景观类视频生成成功率提升63%的9条黄金指令,仅限首批内测用户掌握
  • 3大痛点1个方案:REPENTOGON如何彻底改变《以撒的结合》模组开发体验
  • 中国象棋AI分析终极指南:5步免费打造你的智能棋力提升系统
  • 微信开发者工具Linux版:原生编译架构与跨平台兼容性深度解析
  • Zotero元数据格式化插件深度解析:如何通过40+规则实现学术文献的自动化规范化管理
  • Unity3D书页卷曲效果插件:快速创建专业级翻页交互的完整指南
  • 终极VC++运行库修复指南:3步解决Windows依赖问题
  • 2026工业风扇厂家推荐:高性价比降温方案速选​ - 合昌环境科技
  • Win11Debloat:Windows系统优化的终极解决方案
  • Illustrator脚本大师:20+高效工具提升设计工作流90%
  • 【评测】GEO效果工具的使用流程与结果展示
  • 大模型|大模型中的Pre-Retrieval 预检索优化
  • 打卡信奥刷题(3350)用C++实现信奥题 P9519 pay
  • 5分钟终极指南:如何用untrunc免费快速修复损坏的MP4视频文件
  • 浅谈RAG前的语义缓存层(3) —— 还是得让大模型兜底
  • MSC新规征求意见稿:细胞库检定要求升级,你注意到这五项了吗?
  • YACReader终极指南:三步打造你的专业漫画图书馆
  • 荧光法溶解氧仪源头厂家推荐榜:2026国产十大优选品牌深度评测与选型指南 - 仪表品牌榜
  • 新建分类
  • 突破60帧束缚:Genshin_StarRail_fps_unlocker带你体验240Hz流畅游戏世界
  • 从零到一:全面解析加密货币交易所的开发与搭建
  • 数字时代知识保存:从百科全书备份到长期存储技术实践