在实施备份前,需完成以下基础配置:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
mc alias set命令配置MinIO服务器的访问信息,简化后续命令:mc alias set myminio http://<minio-server-ip>:9000 <ACCESS_KEY> <SECRET_KEY>
<minio-server-ip>、<ACCESS_KEY>、<SECRET_KEY>为实际值(如minio-server为本地服务则用localhost)。mc是MinIO官方提供的工具,支持增量备份、同步删除等功能,适合日常备份。
mc cp -r myminio/<source-bucket> /path/to/backup/
mc mirror myminio/<source-bucket> /path/to/backup/
mc mirror --delete myminio/<source-bucket> /path/to/backup/
rsync是Linux系统自带的文件同步工具,适合本地目录备份或远程服务器备份(需安装rsync)。
rsync -avz --progress /path/to/minio/data/ /path/to/backup/
-a(归档模式,保留权限和时间戳)、-v(显示进度)、-z(压缩传输)。rsync -avz -e ssh /path/to/minio/data/ user@remote-server:/path/to/backup/
若MinIO通过Docker部署,可直接备份其数据卷(默认卷路径为/data)。
docker stop <minio-container-name>
docker cp <minio-container-name>:/data /path/to/backup/
docker start <minio-container-name>
通过MinIO的REST API编写脚本(如Python),实现自动化备份和灵活控制。
minio库遍历Bucket并下载对象:from minio import Minio
import os
# 配置MinIO客户端
client = Minio(
    "minio-server:9000",
    access_key="<ACCESS_KEY>",
    secret_key="<SECRET_KEY>",
    secure=False
)
# 创建本地备份目录
backup_dir = "/path/to/backup/"
os.makedirs(backup_dir, exist_ok=True)
# 遍历Bucket中的对象
objects = client.list_objects("<source-bucket>", recursive=True)
for obj in objects:
    # 创建对象对应的目录结构
    object_path = os.path.join(backup_dir, obj.bucket_name, obj.object_name)
    os.makedirs(os.path.dirname(object_path), exist_ok=True)
    # 下载对象
    client.fget_object(obj.bucket_name, obj.object_name, object_path)
第三方工具如restic、borgbackup支持加密备份、去重存储、跨平台恢复等功能,适合企业级场景。
# 初始化备份仓库
restic init --repo /path/to/restic/repo
# 登录仓库(设置密码)
restic login
# 备份MinIO数据目录
restic backup /path/to/minio/data
使用cron设置定时任务,实现定期自动备份(如每天凌晨2点执行)。
crontab -e
/path/to/backup_script.sh):0 2 * * * /path/to/backup_script.sh
backup_script.sh):#!/bin/bash
# 使用mc同步备份
mc mirror myminio/<source-bucket> /path/to/backup/
# 记录日志
echo "$(date): Backup completed" >> /var/log/minio_backup.log
chmod +x /path/to/backup_script.sh
cron日志(/var/log/syslog)或脚本自带的日志(如上述backup_script.sh中的日志),确认备份任务是否成功执行。find命令:find /path/to/backup/ -type d -mtime +30 -exec rm -rf {} \;
mc lock命令),或使用MinIO的版本控制功能(mc version enable)。