X86
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
ARM
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
注意启动显示的 appkey secretkey是默认登录账户,密码
docker X86
docker pull minio/minio
docker run -i -t -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123123123 -v /data:/data minio/minio server /data
docker arm jessestuart/minio
docker run -i -t -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123123123 -v /data:/data jessestuart/minio server /data
-p 80:9000 设置80外部访问端口
API文档:https://docs.min.io/docs/python-client-api-reference
from minio import Minio
from minio.error import ResponseError
mc = Minio('127.0.0.1:9000',
access_key='admin',
secret_key='123123123',
secure=False)
注意带上端口
mc.list_buckets() 列出所有bucket
mc.make_bucket('lcl') 创建lcl的bucket;如果是多节点还可以考虑这个location="us-east-1"
mc.fput_object('loli','x.png','X_80.png') 第一个参数是bucket名,第二个为上传后的文件名,第三个为文件位置,返回一个etag的串码'f7b865265606c41b0e07779d3317e0a8'
mc.remove_bucket('lcl')删除bucket
列出说有bucket的文件对像:
c=mc.list_objects('lcl') 第一个参数为bucket名,第二为前前缀prefix='asda'可以省,第三个为recursive(True(递归列表)/False(目录列表 默认)),
c为迭代对象,c中每一个都含有:
bucket_name
object_name (记得UTF8,object_name.encode('utf8'))
is_dir
size
etag
last_modified(修改时间戳)
z=mc.get_object('bucket名称','object_name文件保存名','request_headers','sse服务器端
返回:object urllib3.response.HTTPResponse
加密标头(可选,默认为无)')
with open('my-testfile', 'wb') as file_data:
for d in z.stream(32*1024):
file_data.write(d)
直接保持文件
z=mc.fget_object('lcl','x.png','本地文件路径',,'request_headers','sse服务器端加密标头(可选,默认为无)')
返回:szie etag content_type metadata last_miodified
reomve_object('bucketname','object_name') 单
reomve_objects('bucketname','object_name的列表') 多
生成url GET
from datetime import timedelta
#timedelta 最长7天,days,seconds,minutes,hours
presigned_get_object('bucketname','object_name',expires=timedelta(days=1))
生成一个一天时间的链接
PUT使用presigned_put_object
from minio import Minio
from datetime import timedelta
mc = Minio('192.168.0.102:9000',access_key='admin',secret_key='a123xds456',secure=False)
c=mc.presigned_get_object('loli','ua.pdf',expires=timedelta(days=1),response_headers={"response-content-disposition":"attachment; filename=z.pdf"})
print(c)