MinIO数据导出

最近公司里需要将生产环境MinIO数据导出来一份,用于后续工作。导出的过程中尝试了三种方法(最终选择了方法三),内容如下:

方法一:MinIO Web控制台界面下载(适用于少量文件)

通过浏览器访问MinIO服务(http:// :9000),进入对应的Bucket和文件夹,选择对应文件,点击下载。

注意:MinIO 控制台 不支持文件夹整体下载,文件夹只能展开后逐个选择其下的文件进行下载。

方法二:使用python脚本批量导出文件导出

可以用 Python 编写一个脚本,批量下载 MinIO 某个 bucket 中的所有对象(文件)或者某个文件夹中的图片,保存到本地。MinIO 兼容 S3 协议,所以可以使用官方的 boto3 库来操作。

步骤:

  1. 安装依赖:boto3

  2. 配置MinIO地址与访问密钥

  3. 使用 boto3 连接MinIO

  4. 遍历bucket中所有对象并下载

    import boto3
    from botocore.client import Config
    import os

    ====== 配置 MinIO ======

    minio_endpoint = "http://127.0.0.1:9000" # MinIO 服务地址
    access_key = "admin" # 你的 Access Key
    secret_key = "admin" # 你的 Secret Key
    bucket_name = "bucket-test" # 要下载的 bucket 名称
    download_dir = "F:\minio_download_test" # 本地保存目录
    prefix = "fence-manual-capture" # 要下载的文件夹

    ====== 创建本地目录 ======

    os.makedirs(download_dir, exist_ok=True)

    ====== 创建 MinIO 客户端 ======

    s3 = boto3.client('s3',
    endpoint_url=minio_endpoint,
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    config=Config(signature_version='s3v4'),
    region_name='us-east-1')

    ====== 获取并下载所有对象 ======

    paginator = s3.get_paginator('list_objects_v2')
    pages = paginator.paginate(Bucket=bucket_name,Prefix=prefix)

    for page in pages:
    if 'Contents' in page:
    for obj in page['Contents']:
    key = obj['Key']
    local_path = os.path.join(download_dir, key)

    复制代码
             # 创建本地子目录(如果对象名中含有路径)
             os.makedirs(os.path.dirname(local_path), exist_ok=True)
    
             print(f"正在下载: {key} -> {local_path}")
             s3.download_file(bucket_name, key, local_path)

    print("所有文件下载完成!")

方法三:使用MinIO Client(mc)批量导出(推荐)

MinIO官方提供了命令行工具mc,支持同步和下载。

官方文档:https://min.io/docs/minio/linux/reference/minio-mc.html

1.安装mc:

复制代码
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
  1. 配置连接MinIO:

    mc alias set myminio http://<MINIO_HOST>:<PORT> <ACCESS_KEY> <SECRET_KEY>
    #例如 mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin

3.下载桶中的数据到本地

复制代码
mc mirror myminio/mybucket ./local-folder

这条命令会把 mybucket 中的所有文件递归下载到当前文件夹 ./local-folder 中。

可选参数:

  • --overwrite 强制覆盖本地已有文件
  • --remove 会删除本地目标中不在源中的文件(慎用)
  • --continue:跳过失败项,继续同步,不中断。
相关推荐
sg_knight3 天前
如何实现“秒传”与“断点续传”?MinIO + Java 实战进阶篇
java·开发语言·文件管理·minio·ftp·oss·文件传输
分布式存储与RustFS4 天前
AI 数据湖最佳实践:RustFS 支撑大模型训练的存储架构与性能优化
人工智能·性能优化·架构·对象存储·minio·企业存储·rustfs
分布式存储与RustFS7 天前
Windows原生版RustFS:无需Docker,1分钟本地对象存储环境搭建
windows·docker·容器·对象存储·minio·企业存储·rustfs
阿杜杜不是阿木木7 天前
authentik开源身份认证与管理平台-与 MinIO 集成(8)
minio·authentik
sg_knight11 天前
Docker环境下的MinIO安装,以及如何正确配置数据持久化(避坑篇)
运维·docker·容器·minio·ftp·cos·oss
sg_knight11 天前
MinIO自带的Web Console管理后台怎么用?日常管理操作全解
前端·文件管理·minio·ftp·cos·oss
分布式存储与RustFS12 天前
RustFS永久开源承诺深度解读:Apache 2.0协议、商业化边界、社区可信度
开源·apache·数据安全·对象存储·minio·企业存储·rustfs
sg_knight12 天前
CentOS 裸机实操:5分钟完成 MinIO 单机部署与公网访问
linux·python·centos·文件管理·minio·ftp·oss
伟大的大威17 天前
彻底解决 Nginx Proxy Manager 反代 MinIO 报 SignatureDoesNotMatch (S3 签名不匹配) 的终极方案
运维·nginx·minio
是萝卜干呀22 天前
Minio 模拟S3云存储
minio·s3·模拟云存储