提示:使用MinIO的一些心得
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
总结一些使用心得:参考MinIO的命令行使用
1.MinIO Client配置
在进行如下上传与删除操作时,需要先配置MinIO Client。如下操作:
1、使用命令给客户端添加一个服务端
./mc alias set minio http://125.220.153.22:9006 rssample ypfamily608
成功标志是
Added minio successfully.
2、查询所有bucket
./mc ls minio
一旦可以查询出来已有的所有的桶,即说明mc配置成功,可以进行下一步操作
2.MinIO上传文件
如果上传的是 单个文件 或者 单个文件夹下的多个文件,可以 直接用图形化管理界面上传 就行。
但是如果上传的是多个文件夹,还是得用linux的命令行方式才行。
如下图所示,关键是mc这个配置文件,只有到拥有该文件的目录下运行linux的命令,才是对MinIO有效的,当然,可以将该文件进行迁移到任意目录下。
然后在具体一些MinIO命令可以参考MinIO Client完全指南
这里以上传多个文件夹为例子,使用的是 mc cp --recursive 源文件夹目录 目标文件夹目录 命令
注意得是,目标文件夹目录指的是 minio/桶名称/文件夹路径 一定不能忘了加 minio
并且minio的路径设置与linux不同,如果将/xxx/example1文件夹放到minio/xxx/example1下面,必须在minio有一个一模一样的example1文件夹才行,因为/xxx/example1只是将example1里面的内容传输,不包括example1本身。
(base) geocube@gisweb1:~/oge$ ./mc cp --recursive /mnt/storage/oge_COG_testData/Sentinel/Sentinel2/ minio/oge/Sentinel/Sentinel2/
值得注意的是,minio提供了另外一种命令是mirror。当你觉得cp命令的性能不好时时,可以使用,用法与cp大同小异
mc mirror
- 用途:用于同步两个目录或存储桶之间的内容。这包括复制文件,也包括删除目标目录中在源目录中不存在的文件。
- 最佳适用场景:适合于数据备份、数据同步,或者当你需要保持两个目录或存储桶内容一致时。
- 行为:可以通过命令行选项(比如
--overwrite
)来控制是否覆盖目标中的同名文件。 - 增量复制:默认进行增量复制,仅复制有变化的文件。
./mc mirror --overwrite=false rssample/pytdml baiduCloud/pytdml
mc cp
- 用途:用于将文件或目录从一个位置复制到另一个位置。
- 最佳适用场景:当你需要复制特定文件或目录,而不需要源和目标之间完全同步时。
- 行为:默认会覆盖目标位置的同名文件,除非手动检查。
- 单次操作:通常用于一次性的复制操作。
3.MinIO删除文件
使用如下命令,即可删除minio中指定文件,切记不用使用-r
,会有大bug
./mc rm --force minio/oge/Landsat/Landsat8/xxx.tif
使用如下命令,即可删除minio中指定文件夹,切记不用使用-r
,会有大bug
./mc rm --recursive --force minio/oge/Landsat/Landsat8
4.MinIO启动与关闭
MinIO的启动可以使用如下脚本.sh。
#! /bin/bash
echo "XX服务器密码" | sudo -S iptables -AINPUT -ptcp --dport 9006 -jACCEPT
PID=$(echo "XX服务器密码" | sudo -S netstat -nlp | grep :9006 | awk '{print $7}' | awk -F"/" '{ print $1 }')
if [ -z $PID ]
then
echo The MinIO is already stopped
echo The MinIO is starting
echo "XX服务器密码" | sudo -S rm loadSc.log
echo "XX服务器密码" | sudo -S MINIO_ROOT_USER=MinIO账号 MINIO_ROOT_PASSWORD=MinIO密码 nohup ./minio server --address 0.0.0.0:9006 --console-address 0.0.0.0:9007 http://服务器ip/mnt/storage/RssampleData1 http://服务器ip/mnt/storage/RssampleData http://服务器ip/mnt/storage/RssampleData http://服务器ip/mnt/storage/RssampleData1 >>/home/rssample/loadSc.log 2>&1 &
echo start end
else
echo The MinIO is already started, now restarting
rm loadSc.log
echo kill $PID
echo "XX服务器密码" | sudo -S kill -9 $PID
echo "XX服务器密码" | sudo -S MINIO_ROOT_USER=MinIO账号 MINIO_ROOT_PASSWORD=MinIO密码 nohup ./minio server --address 0.0.0.0:9006 --console-address 0.0.0.0:9007 http://服务器ip/mnt/storage/RssampleData1 http://服务器ip/mnt/storage/RssampleData http://服务器ip/mnt/storage/RssampleData http://服务器ip/mnt/storage/RssampleData1 >>/home/rssample/loadSc.log 2>&1 &
echo restart end
fi
但是有可能使用这个脚本时,报错说“已经有某个特定进程占用了该端口”,其实就是使用这个脚本后,可能某些内部进程为“僵尸进程”,这时候只要彻底关闭MinIO的进程即可,使用下面的命令:
- 查找进程:
ps aux | grep minio
这个命令会列出所有含有"minio"的进程。
- 杀死所有MinIO进程:
kill $(pidof minio)