Ubuntu上MinIO数据备份的常用方法
mc是MinIO提供的命令行工具,支持高效的数据复制与管理,是备份MinIO数据的首选方式。
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
ACCESS_KEY、SECRET_KEY及服务器地址。mc alias set myminio http://<minio-server-ip>:9000 ACCESS_KEY SECRET_KEY
mc cp -r myminio/source-bucket /path/to/backup/location
mc ls myminio | grep "^\\S" | while read bucket; do
mc cp -r "myminio/$bucket" "/path/to/backup/location/$bucket"
done
mc sync命令确保源与目标数据实时一致(适合定期同步场景)。mc sync myminio/source-bucket /path/to/backup/location
rsync是Linux系统自带的增量备份工具,适合需要高效同步的场景(仅传输变化部分)。
sudo apt-get update && sudo apt-get install rsync
-avz选项保留文件属性、递归复制,--progress显示进度,--delete删除目标端多余文件(保持严格一致)。rsync -avz --progress /var/lib/minio/data/ /path/to/backup/location/
crontab -e
# 添加以下行
0 2 * * * rsync -avz --delete /var/lib/minio/data/ /path/to/backup/location/
若MinIO运行在Docker容器中,可通过备份数据卷实现数据保护。
docker stop minio-container
/data)复制到本地。docker cp minio-container:/data /path/to/backup/location
docker start minio-container
通过MinIO的REST API或SDK(如Python)编写自定义备份脚本,适合需要灵活控制的场景。
minio库遍历桶内对象并下载。from minio import Minio
from minio.error import S3Error
# 配置MinIO客户端
client = Minio(
'minio-server:9000',
access_key='ACCESS_KEY',
secret_key='SECRET_KEY',
secure=False
)
# 备份单个桶
def backup_bucket(bucket_name, backup_path):
try:
objects = client.list_objects(bucket_name, recursive=True)
for obj in objects:
client.fget_object(bucket_name, obj.object_name, f"{backup_path}/{obj.object_name}")
print(f"Backed up {obj.object_name}")
except S3Error as err:
print(f"Error: {err}")
# 执行备份
backup_bucket("source-bucket", "/path/to/backup/location")
backup.py,通过cron定时执行。crontab -e
# 添加以下行(每天凌晨3点执行)
0 3 * * * python3 /path/to/backup.py
restic是一款开源的备份工具,支持增量备份、加密及去重,适合需要长期归档的场景。
sudo apt-get install restic
restic init --repo /path/to/restic/repo
restic login --repo /path/to/restic/repo
restic backup /var/lib/minio/data
crontab -e
# 添加以下行
0 4 * * 0 restic backup /var/lib/minio/data
mc sync减少差异)。mc ls查看备份目录,或通过restic check验证restic仓库)。