最近公司里需要将生产环境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:跳过失败项,继续同步,不中断。

MinIO数据导出的更多相关文章

  1. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. mssqlserver数据导出到另外一个数据库

    mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...

  4. 在SQL Server中将数据导出为XML和Json

        有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做 ...

  5. Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...

  6. pb将datawindow数据导出EXCEL

    PB有dw有自带功能可以将数据导出成excel,但是head却是字段名称,这样不直观. 所见即所得的方式是,将dw保存成html然后将后缀名改成xls,但这样的方式还有些问题就是会错列,解决的方法是将 ...

  7. 百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里?

    好多人在问:如何将百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里? 现在,很多人都在网络上找商家,联系业务. 百度地图里有很多的商家联系 ...

  8. 数据导出Excel中文乱码

    数据导出到EXCEL提供用户下载,当记录数大于5行时不会出现乱码.但只要不退出Excel,再删除除记录,当记录数小于5行时,导出也不会出现乱码.当然一旦退出Excel再导出就会出现乱码了. 可以试试 ...

  9. sqlserver 2008 数据库表结构脚本及数据导出

    sqlserver2008  在xp上尝试安装了 sqlserver2008 express版本,但是和公司的sqlserver2008 r2 版本不兼容.升级的时候,出了问题.所以换了中思路,将数据 ...

  10. Hive几种数据导出方式

    Hive几种数据导出方式 今天我们再谈谈Hive中的几种不同的数据导出方式.可以根据导出的地方不一样,将这些方式分为三种: (1).导出到本地文件系统: (2).导出到HDFS中: (3).导出到Hi ...

随机推荐

  1. 什么是 Java 中的常量池?

    Java 中的常量池 Java 中的常量池(Constant Pool)是用于存放程序中常量(如字符串.数字.类.方法等)的内存区域.常量池的主要作用是提高内存的使用效率和性能,避免重复创建相同的常量 ...

  2. live555开发笔记(二):live555创建RTSP服务器源码剖析,创建rtsp服务器的基本流程总结

    前言   基于Live555的流媒体服务器方案源码剖析,了解基本的代码搭建步骤.   Demo    关于.h264与.265      没深入研究,但是h264的后缀名.264替换为.h264文件, ...

  3. Axure RP大数据可视化大屏原型组件源文件

    Axure RP大数据可视化大屏原型模板 大数据BI分析上大屏,在很多大企业和政府单位客户都需要,高新区市场监控等,那使用Axure RP做交互原型是必不可少的,有了大屏原型模板可做出不同风格和行业的 ...

  4. 流的使用之“如何将List<String>转为Map”

    流的使用之"如何将List<String>转为Map" ProductIllegalCustom query = new ProductIllegalCustom(); ...

  5. codebuddy模型基于Python的实时音视频直播系统开发:多线程采集、WebSocket传输与JWT安全认证实践

    我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 我现在需要帮用户解决一个Pyt ...

  6. The Eclipse executable launcher was unable to locate its companion shared library

    win10,笔者是安装eclipse2018.03的情况下,想安装java2019EE遇到的路径问题 1.解决方法 找到配置文件 打开,用记事本打开的话会糊成一行,建议用其他方式打开,例如笔者所用的N ...

  7. Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)题解A~D

    A - Cut 题意: 将数组的后k个字符移到前面 思路: 可以用rotate()函数让数组中的元素滚动旋转 rotate(v.begin(), v.begin() + n - k, v.end()) ...

  8. RBMQ案例四:路由模式

    使仅订阅消息的子集成为可能.例如,我们将能够仅将关键错误消息定向到日志文件(以节省磁盘空间),同时仍然能够在控制台上打印所有日志消息.   通过路由来匹配对应的消息 一.消息发布端 #!/usr/bi ...

  9. odoo14本地windows安装报错汇总

    odoo14安装libsass报错C++啥的解决办法:pip install wheel: pip install libsass-0.20.1-......whl 注意:whl版本应与python版 ...

  10. 通用jar包部署脚本

      在<Linux下部署Spring Boot 项目 jar包>中,小编介绍了一步一步发布jar包的方法,这里提供一个通用Shell脚本,傻瓜式发布Spring Boot项目.   通过W ...