minio客户端使用记录

背景

上一篇写的使用“Linux使用shell脚本实现目录创建与文件传输”的方式实现上传minio服务器的方案,审核不通过,需要换成mc的方式。

安装并运行

我这里使用的是docker的方式:

[root@zxj ~]# docker pull minio/mc

运行拉取下来的镜像,创建容器:

[root@zxj ~]# docker run -it --entrypoint=/bin/sh minio/mc

然后再运行容器的时候,报了一个错:
> WARNING: IPv4 forwarding is disabled. Networking will not work.

1. 解决方案:
删除掉之前运行的程序,然后执行命令:
vi /etc/sysctl.conf

2. 然后再文件中添加:
net.ipv4.ip_forward=1

3. 重启network服务
systemctl restart network && systemctl restart docker

4. 查看是否成功:	
[root@zxj ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

如果返回的是1,则代表成功了。

再次运行镜像创建容器:

[root@zxj ~]# docker run -it --entrypoint=/bin/sh minio/mc

运行后直接进入容器,就可以在内运行 mc 命令了。

连接minio服务器

在容器内执行命令,并且能看到成功的提示:

sh-4.4# mc config host add minio http://192.168.xx.xx:9000 username password --api s3v4

mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `minio` successfully.

其中add 后面的参数为远程minio服务器的别名,后面连接的时候能用的到,紧接着是 IP地址,IP地址之后是minio服务器的账号和密码,最后的–api为签名(可选项 默认为 s3v4)。

一些简单的命令

  1. 连接成功之后可以mc ls + minio别名查看minio服务器下的桶:
sh-4.4# mc ls minio
  1. 查询桶下的文件:
mc ls minio/sonardown

其中minio是 minio云服务器的别名,后面的sonardown为桶的名称。

  1. 给文件生成临时下载URL
mc share download minio//sonardown/zhangxujiexitong/zxjPipeline/1608456352427/

注意,默认为7天

  1. 文件系统和对象存储之间做同步
sh-4.4# mc mirror /root/ minio/sonardown/

把root文件夹下的文件同步到minio服务服务器的某个桶上。

  1. 再minio服务器上创建桶 或 目录
sh-4.4# mc mb minio/zhangxujietest/45678/rrrr

  1. 拷贝一个文件上传至minio服务器
sh-4.4# mc cp /app/data/mytest.txt minio/zhangxujietest/45678/rrrr/

mc实现文件上传

由于是docker启动的容器,现在想要实现mc上传文件至minio服务器,我认为第一步就是再启动容器之前建立一个和容器对应的数据卷,这样才方便上传数据,我这里测试建立文件夹:

mkdir -p /app/data/
vi mytest.txt

然后删除之前启动好的容器,从新建立绑定数据卷的容器:

docker run -v /app:/app -it --entrypoint=/bin/sh minio/mc

自动进入容器,然后看到容器内的根目录同样有一个/app/data/mytest.txt 的文件,表示同步成功,现在要做的就是把这个txt文件上传至minio服务器。

由于是从新建立的容器,因此需要从新使用mc config host add minio http://192.168.xx.xx:9000 username password --api s3v4命令和minio服务器建立关系。

执行命令传输文件:

mc cp /app/data/mytest.txt minio/zhangxujietest/45678/rrrr/

然后在minio服务器中即可看到该文件。

变为shell脚本

接下来就是把这些命令变成shell脚本了。。

此处踩坑 一小时 - - !

坑1 :
我用Notepad++编辑器在windows上编辑的脚本,拉到 linux 上运行报错:

-bash: ./uploadfile.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

原因: Windows系统中的换行符是**\n\r**,Linux系统中的换行符是**\n**,因此需要将**\r**替换为空白。
解决方案:

# sed -i 's/\r$//' xxx.sh

坑2:
脚本中执行docker命令,-c参数 要使用双引号,不然会获取不到 脚本中的动态参数。

最终脚本:

#!/bin/sh


source_file=$1
target_path=$2

echo "docker exec -it 55924203cd8b /bin/bash -c 'mc cp ${source_file} ${target_path}'"
docker exec -it 55924203cd8b /bin/sh -c "mc cp ${source_file} ${target_path}"

运行脚本:

./uploadfile.sh /app/shell/zhangxujie.txt minio/zhangxujietest/45678/rrrr/

执行成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值