brew 安装pip_使用轻量级组件(2)- minio安装

本文介绍了在macOS上通过brew安装MinIO对象存储,并详细讲解了如何使用mc命令行工具进行操作,包括设置别名、创建目录等。此外,还展示了使用Python SDK进行文件读写的示例代码,强调了fput_object和put_object的区别。最后,提到了单机版MinIO的存储目录查看方法。
摘要由CSDN通过智能技术生成

安装minio

minio是开源的对象存储组件 ,兼容S3协议。 在安装方式上,支持docker, 包管理器安装,以及源码安装。我使用的是macos 的brew安装。 网上关于minio的安装与使用的文档不少,这里不作过多说明。

MinIO Docs | MinIO快速入门指南​docs.min.io
9d1c461e50ead44bfcf21b555c8cefad.png
brew install minio/stable/minio
mkdir -p ~/develop/minio-data
cd ~/develop/minio-data
minio server ./

minio启动之后会在控制台打印出监听端口及用户名密码等, 依照提示访问就可以。 访问链接 http://127.0.0.1:9000, 账号密码minioadmin/minioadmin。在浏览器中打开这个地址就查询当前bucket列表,文件列表等。

接下来是安装mc命令行

brew install minio/stable/mc
mc --help
mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin
mc mb myminio/abc  # 在myminio中创建新的bucket,名为abc
mc ls myminio   # 列出myminio中文件与目录列表
MinIO Docs | MinIO客户端快速入门指南​docs.min.io

mc 可以替代shell下 一些常用的文件访问命令,比如ls, mkdir, rm等, 它将minio提供服务地址的别名(例如上面的myminio)当作一个文件夹来访问。

  • mc ls 这样不加参数时列出的是当前主机文件系统下的内容,而mc ls myminio列出的是服务端口上的;
  • mc mb abc 在当前主机文件系统下创建目录abc, 而 mc mb myminio/abc是在minio服务端口上创建目录
  • mc alias命令添加的别名保存在文件~/.mc/config.json中。除了刚添加的myminio之外,还有其它几个预设的别名

使用SDK访问minio

这里使用python sdk来实现读写 demo。pip命令直接安装

MinIO Docs | Python Client快速入门指南​docs.min.io
pip install minio

示例代码

#/usr/bin/env python
# encoding: utf-8

# Import Minio library.
from minio import Minio
from minio.error import (ResponseError, BucketAlreadyOwnedByYou,
                         BucketAlreadyExists)
import io

BUCKET_NAME = 'files'

# 初始化minioClient, 提供访问地址, 访问账号与密码
minioClient = Minio('127.0.0.1:9000',
                    access_key='minioadmin',
                    secret_key='minioadmin',
                    secure=False)

# bucket不存时创建
found = minioClient.bucket_exists(BUCKET_NAME)
if not found:
    minioClient.make_bucket(BUCKET_NAME)
    print('created bucket')
else:
    print('bucket exists')


# 创建文件, 直接提供内容。 若从文件路径上传,使用fput_object
name = u'art-001'
content = u'this the content body'
put_result = minioClient.put_object(BUCKET_NAME, name, io.BytesIO(content.encode()), len(content), 'text/plain')
print(put_result)

# 读取内容
try:
    get_response = minioClient.get_object(BUCKET_NAME, name)
    #print(get_response.getheaders())
    print(get_response.read())
finally:
    get_response.close()
    get_response.release_conn()

输出内容

bucket exists
('1c294cd138133f900838c4e0b6fbcd3d', None)
this the content body

python SDK的几点说明:

  1. 上传文件提供fput_object与put_object, 它们的区别是fput_object的第三个参数是文件路径的字符串;而put_object的第三个参数是一个文件对象,需要有read()方法, 上面的代码中使用io.BytesIO(content.encode())来从str创建io对象
  2. put_object返回的是etag与versionId, 在访问文件时主要还是靠传参bucket与name来读取。可以多次put_object调用相同的name, 后面的内容会覆盖之前的。
  3. get_object 返回的是urllib3.response.HTTPResponse 对象, 就和处理普通的http响应没有区别

查看minio存储目录

这里安装的是单机版本的minio, 会将上传的文件直接保存在本机的文件系统里。 回看启动命令: minio server ./ 第二个参数就是保存的目录。

cd ~/develop/minio-data/
ls -l
ls -l files/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值