昨天有一个项目用到Minio来做资源存储,在网上找一些资料,没有一个比较完整的教程,我们知道要从本地批量上传文件到MinIO,可以使用MinIO提供的客户端工具mc(MinIO Client),或者通过编写代码使用MinIO的SDK(如PythonJavaGo等语言的SDK)来实现,今天,我就整理一份自己的操作流程,仅供大家的学习参考。

1.安装Minio

我用docker直接安装在宝塔上,其他安装方式自己可以试试



2.上传文件到Minio


我以用官方提供的mc客户端来上传的,其他上传方式,需要的朋友可以自己去尝试一下


以下是使用mc命令行工具和Python SDK两种方法的简要说明:

2.1使用mc命令行工具批量上传文件


window系统

‌安装mc工具‌:

首先,你需要从MinIO的官方网站或GitHub仓库下载并安装mc工具。


在本地D盘创建一个文件夹662p (其他位置也可以)


‌配置mc‌:


打开cmd后切换到对应的文件夹

mc config host add myminio http://10.247.49.20:9000 Access Keys Secret Key
其中http://localhost:9000 是你安装minio的上传地址,ACCESSKEY和SECRETKEY是你的MinIO访问密钥和秘密密钥。

开始上传文件



mc cp --recursive D:\662p\ myminio/test

其中662p是你本地文件夹,test是你minio的Buckets


Linux系统

‌安装mc工具‌:
首先,你需要从MinIO的官方网站或GitHub仓库下载并安装mc工具。

‌配置mc‌:
使用mc alias set命令为MinIO服务器设置别名,这样你就可以在后续命令中方便地引用它。例如:

sh
mc alias set myminio http://localhost:9000 ACCESSKEY SECRETKEY

其中http://localhost:9000 是你安装minio的上传地址,ACCESSKEY和SECRETKEY是你的MinIO访问密钥和秘密密钥。

‌创建存储桶(如果尚未创建)‌:
使用mc mb命令创建一个新的存储桶。例如:

sh
mc mb myminio/mybucket

‌批量上传文件‌:
使用mc cp命令将本地文件或目录复制到MinIO存储桶中。如果你想要批量上传一个目录中的所有文件,可以使用通配符或指定目录。例如:

sh

mc cp /path/to/local/files/* myminio/mybucket

或者,如果你想要上传整个目录(包括子目录):

sh

mc cp -r /path/to/local/directory myminio/mybucket

2.2其他方式上传

使用Python SDK批量上传文件

‌安装MinIO Python SDK‌:
使用pip安装MinIO Python SDK(minio包)。

sh

pip install minio


‌编写Python脚本‌:
编写一个Python脚本来连接到MinIO服务器,并批量上传文件。以下是一个简单的示例:

python

from minio import Minio
from minio.error import S3Error
import os

# MinIO服务器的URL、访问密钥和秘密密钥
url = "http://localhost:9000"
access_key = "YOUR-ACCESSKEY"
secret_key = "YOUR-SECRETKEY"

# 初始化MinIO客户端
client = Minio(url, access_key=access_key, secret_key=secret_key, secure=False)

# 指定要上传的本地目录和存储桶名称
local_directory = "/path/to/local/directory"
bucket_name = "mybucket"

# 确保存储桶存在
try:
    client.make_bucket(bucket_name)
except S3Error as e:
    print(f"Bucket {bucket_name} already exists or error: {e}")

# 遍历本地目录并上传文件
for root, dirs, files in os.walk(local_directory):
    for file in files:
        file_path = os.path.join(root, file)
        object_name = os.path.relpath(file_path, local_directory)
        try:
            client.fput_object(bucket_name, object_name, file_path)
            print(f"Uploaded {file_path} to {bucket_name}/{object_name}")
        except S3Error as e:
            print(f"Error uploading {file_path}: {e}")


在这个脚本中,os.walk函数用于遍历本地目录的所有文件和子目录,client.fput_object方法用于将每个文件上传到MinIO存储桶中。请确保将YOUR-ACCESSKEY和YOUR-SECRETKEY替换为你的实际访问密钥和秘密密钥。

通过这两种方法,你可以轻松地从本地批量上传文件到MinIO存储桶中。


评论 0

暂无评论
0
0
0
立即
投稿
发表
评论
返回
顶部