温馨提示×

如何使用MinIO进行Linux数据同步

小樊
42
2025-12-20 13:33:24
栏目: 智能运维

使用 MinIO 在 Linux 上实现数据同步

一 常用方式与适用场景

  • mc mirror:用于在两个对象存储之间做镜像,支持删除目标端多余文件(–remove)、覆盖同名文件(–overwrite)、持续监听变更(–watch),适合跨机房/跨集群的主从复制双向灾备。示例:mc mirror --remove --overwrite --watch src-alias dst-alias。
  • mc sync:用于在两个对象存储之间做增量同步,默认只新增/修改,不会删除目标端多余对象,适合定期对齐单向增量备份。示例:mc sync src-alias/bucket dst-alias/bucket。
  • mc cp -r:用于一次性全量迁移/拷贝(桶或目录),适合初始化迁移临时复制。示例:mc cp -r src-alias/bucket dst-alias/bucket。
  • 一次性目录拷贝到本地/从本地恢复:mc cp -r src dst,适合备份到本地磁盘从本地恢复到对象存储。

二 快速上手步骤

  • 1)安装 mc(MinIO 客户端)
    • 下载并安装到 PATH:wget https://dl.min.io/client/mc/release/linux-amd64/mc && chmod +x mc && sudo mv mc /usr/local/bin/
  • 2)配置别名(alias)
    • mc alias set minioA http://IP_A:9000 ACCESS_KEY SECRET_KEY
    • mc alias set minioB http://IP_B:9000 ACCESS_KEY SECRET_KEY
  • 3)常用同步命令
    • 全量镜像并持续监听(主从):mc mirror --remove --overwrite --watch minioA minioB
    • 仅增量同步(不删目标多余文件):mc sync minioA/bucket minioB/bucket
    • 一次性全量拷贝(初始化/迁移):mc cp -r minioA/bucket minioB/bucket
    • 桶内目录级镜像:mc mirror --remove --overwrite minioA/bucket/path/ minioB/bucket/path/
  • 4)验证
    • mc ls minioB/bucket、mc stat minioB/bucket/object 检查对象是否到位。

三 典型场景与命令示例

场景 命令示例 说明
主从复制(跨机房/跨集群) mc mirror --remove --overwrite --watch minioA minioB 目标端自动对齐源端,源端删除也会在目标端删除
单向增量备份 mc sync minioA/bucket minioB/bucket 只增改,不删目标端多余对象
一次性迁移/拷贝 mc cp -r minioA/bucket minioB/bucket 适合初始化或临时复制
指定桶或目录 mc mirror minioA/bucket1 minioB/bucket1;mc mirror minioA/bucket/path/ minioB/bucket/path/ 桶级或目录级镜像
本地备份/恢复 mc cp -r minioB/bucket /backup/bucket;mc cp -r /backup/bucket minioB/bucket2 备份到本地或从本地恢复到任意桶
一次性全量拷贝所有桶 mc cp -r minioA minioB 目标端需事先存在对应桶,否则会报错
以上命令覆盖日常迁移、备份、恢复与持续同步的主流用法。

四 自动化与运维建议

  • 使用 systemd 将 mirror 常驻后台并开机自启(示例服务单元):
    • ExecStart=/usr/local/bin/mc mirror --remove --overwrite --watch minioA minioB
    • 命令:systemctl daemon-reload && systemctl enable --now minioc.service
  • 使用 cron 做定时增量同步(不删目标多余文件):
    • 0 2 * * * /usr/local/bin/mc sync minioA/bucket minioB/bucket >> /var/log/mc-sync.log 2>&1
  • 重要提示
    • –remove 会删除目标端源端不存在的对象,执行前务必确认方向;建议先在测试环境验证。
    • 使用 mc cp -r 拷贝“所有桶”到目标集群时,目标端需预先创建对应桶,否则会失败。
    • 持续同步建议选 mc mirror --watch;仅对齐增量选 mc sync;一次性迁移选 mc cp -r

0