











⚠️关键限制(社区版MinIO,遵循S3标准):对象锁(Object‑Lock)只能在创建桶的时候开启,已经存在的旧桶无法后期追加开启对象锁。
如果你的桶已经建好,没有开启对象锁:只能重建桶,使用mc mb --with-lock新建桶,再把旧数据迁移过去。
对象锁开启会自动开启版本控制;版本控制可以后期单独开关。
两个概念区分
--with‑lock,开启后不可关闭。
retention:时间到期自动解锁(COMPLIANCE / GOVERNANCE两种模式)legal‑hold法律保留:永久锁定,手动才能解除,无过期时间。# 创建桶同时开启对象锁(自动开启版本控制)
mc mb --with-lock minio/gitlab-backup
mc mb --with-lock minio/zentao-backup
如果桶已经存在,创建时没有加
--with‑lock,不能直接开启对象锁,处理方案:
mc cp --recursive迁移全部旧对象;--with‑lock创建,确认/开启版本控制
--with‑lock创建的桶,版本控制默认已经打开;可手动确认/重新开启
# 开启版本控制
mc version enable minio/gitlab-backup
mc version enable minio/zentao-backup
# 查看版本状态
mc version info minio/gitlab-backup
COMPLIANCE模式:root管理员也不能删除修改对象,直到到期,备份防勒索首选。
GOVERNANCE模式:有特殊权限账号可以绕过删除,灵活性高。
# 设置桶默认COMPLIANCE模式,默认0d(不强制桶全局过期,由生命周期ilm控制过期)
mc retention set --default COMPLIANCE 0d minio/gitlab-backup
mc retention set --default COMPLIANCE 0d minio/zentao-backup
# 查询桶对象锁配置
mc retention info minio/gitlab-backup
0d含义:桶本身不强制默认保留时长,我们依靠ilm生命周期做过期;月度归档对象单独打标签,用legal‑hold永久锁定。
月度备份打上legal‑hold,永久不可删除,不受生命周期过期影响,必须手动解除才能删,适合归档。
# 开启法律保留(永久锁定对象)
mc legalhold set minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
mc legalhold set minio/gitlab-backup/gitlab-config/gitlab-config-20260901_020000.tar.gz
mc legalhold set minio/zentao-backup/zentao_full_20260901_020000.tar.gz
# 查看对象锁状态
mc legalhold info minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
# 如果未来需要删除归档备份,先关闭legalhold
mc legalhold clear minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
✨集成备份脚本片段:每月1号备份完成,除了打tag,同时执行
mc legalhold set永久锁住月度备份。
Object Locking(对象锁定)开关,开启后自动打开Versioning版本控制。# 1.查看版本控制状态
mc version info minio/gitlab-backup
# 2.查看桶对象锁状态
mc retention info minio/gitlab-backup
#3.查看生命周期ilm规则
mc ilm list minio/gitlab-backup
#4.查看单个对象的锁、法律保留状态
mc retention info minio/gitlab-backup/gitlab-backup/xxx.tar
mc legalhold info minio/gitlab-backup/gitlab-backup/xxx.tar
retention是有时间期限;legal‑hold是永久锁定,二者可以叠加。--noncurrent‑expire‑days清理旧版本,不然磁盘会持续上涨。# 将旧桶全部数据迁移到新开启对象锁的桶
mc cp --recursive minio/old-gitlab-backup/ minio/gitlab-backup/
mc cp --recursive minio/old-zentao-backup/ minio/zentao-backup/
迁移完成后,再配置ilm生命周期规则。
如果你需要,我可以把legalhold永久锁月度备份的片段合并到前面的shell备份脚本完整输出一份。
基于docker 运行的 minio,如何 开启版本、对象锁,请给我具体的操作命令和步骤。
重要前置约束(S3协议硬性限制):
环境:docker运行minio,mc客户端可以部署在宿主机,也可以装在minio容器内部;推荐宿主机安装mc,操作更方便。
miniohttp://127.0.0.1:9000minioadminminioadmindocker-minio# linux下载mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/mc
mc alias set docker-minio http://127.0.0.1:9000 minioadmin minioadmin
验证连通:
mc ls docker-minio
--with-lock)⚠️ 如果你的gitlab‑backup、zentao‑backup桶已经提前创建,没有加
--with‑lock,不能开启对象锁。
处理方式:新建桶,迁移旧数据,废弃旧桶。
# 创建桶,--with-lock 开启对象锁,自动开启版本控制
mc mb --with-lock docker-minio/gitlab-backup
mc mb --with-lock docker-minio/zentao-backup
如果有旧桶需要迁移数据:
# 将旧桶全部数据拷贝到新带锁桶
mc cp --recursive docker-minio/old-gitlab-backup/ docker-minio/gitlab-backup/
mc cp --recursive docker-minio/old-zentao-backup/ docker-minio/zentao-backup/
mc version info docker-minio/gitlab-backup
如果显示 Versioning: Enabled 代表正常。
如果意外关闭,可以手动开启版本:
mc version enable docker-minio/gitlab-backup
mc version enable docker-minio/zentao-backup
# 0d:桶全局不设置强制保留时长,依靠ilm生命周期管理过期
mc retention set --default COMPLIANCE 0d docker-minio/gitlab-backup
mc retention set --default COMPLIANCE 0d docker-minio/zentao-backup
# 查询对象锁配置
mc retention info docker-minio/gitlab-backup
# 清空旧规则
mc ilm rule rm --all docker-minio/gitlab-backup
mc ilm rule rm --all docker-minio/zentao-backup
# 日常备份30天过期,带backup_type=monthly标签跳过过期
mc ilm rule add docker-minio/gitlab-backup \
--tag "backup_type!=monthly" \
--expire-days 30
mc ilm rule add docker-minio/gitlab-backup \
--noncurrent-expire-days 30
mc ilm rule add docker-minio/gitlab-backup \
--expire-delete-marker true
mc ilm rule add docker-minio/zentao-backup \
--tag "backup_type!=monthly" \
--expire-days 30
mc ilm rule add docker-minio/zentao-backup \
--noncurrent-expire-days 30
mc ilm rule add docker-minio/zentao-backup \
--expire-delete-marker true
# 给月度备份开启法律保留,永久锁定,ilm不会删除
mc legalhold set docker-minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
mc legalhold set docker-minio/gitlab-backup/gitlab-config/gitlab-config-20260901_020000.tar.gz
mc legalhold set docker-minio/zentao-backup/zentao_full_20260901_020000.tar.gz
# 查看法律保留状态
mc legalhold info docker-minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
# 未来需要删除归档的时候,先清除锁
# mc legalhold clear docker-minio/gitlab-backup/gitlab-backup/20260901_020000_gitlab_backup.tar
#版本控制
mc version info docker-minio/gitlab-backup
#对象锁保留策略
mc retention info docker-minio/gitlab-backup
#生命周期
mc ilm list docker-minio/gitlab-backup
#进入minio容器
docker exec -it minio bash
#容器内配置mc,访问本机minio服务
mc alias set local http://127.0.0.1:9000 minioadmin minioadmin
#创建带锁桶
mc mb --with-lock local/gitlab-backup
mc mb --with-lock local/zentao-backup
不建议日常使用,容器重建会丢失mc alias配置。优先使用宿主机mc。
http://宿主机IP:9001✅注意:只有新建Bucket界面才有这个开关。已经存在的Bucket,页面没有Object Locking开关,无法开启对象锁,只能重建桶迁移数据。
--with‑lock,无论docker还是物理机,都不能后期打开对象锁,S3协议硬性限制。docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-v /data/minio-data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
minio/minio server /data --console-address ":9001"
--noncurrent‑expire‑days清理旧版本,否则磁盘持续上涨。你之前的shell备份脚本,只需要修改MINIO_ALIAS="docker-minio",其余逻辑完全不变,脚本每月1号自动打tag+legalhold锁月度备份。
如果你需要,我把带legalhold永久锁月度归档完整的最终版备份脚本一次性输出。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。