当前位置: 首页 > news >正文

使用minio客户端mc工具迁移指定文件到本地

如果需要筛选MinIO桶中的特定文件进行迁移,可以使用MinIO Client(mc)工具结合一些命令行技巧来实现。以下是具体步骤:

1、安装 MinIO Client(mc)

wget https://dl.min.io/client/mc/release/linux-amd64/mc -P /usr/local/bin/

chmod +x /usr/local/bin/mc

2.、配置源和目标MinIO服务

使用`mc alias set`命令为源MinIO和目标MinIO服务设置别名。
 

mc alias set source http://source-minio-server:9000 source-access-key source-secret-key

mc alias set destination http://destination-minio-server:9000 destination-access-key destination-secret-key

3.、筛选并迁移特定文件

假设你想迁移源存储桶`source-bucket`中以`特定前缀`开头的文件到目标存储桶`destination-bucket`。

方法1:使用`mc find`和`mc cp`组合

1. 使用`mc find`命令列出符合条件的文件。

2. 使用`mc cp`命令将这些文件复制到目标存储桶。

mc find source/source-bucket --name "特定前缀*" | xargs -I {} mc cp {} destination/destination-bucket/
- `mc find source/source-bucket --name "特定前缀*"`:列出源存储桶中以`特定前缀`开头的所有文件。

- `xargs -I {}`:将`mc find`的输出作为`mc cp`的输入。

- `mc cp {} destination/destination-bucket/`:将每个文件复制到目标存储桶。

方法2:使用`mc mirror`和`--include`选项

如果你需要同步整个存储桶,但只想包含特定模式的文件,可以使用`mc mirror`命令的`--include`选项。

mc mirror --include "特定前缀*" source/source-bucket destination/destination-bucket

- `--include "特定前缀*"`:只迁移以`特定前缀`开头的文件。

方法3:使用脚本

为了后续方便迁移指定大量文件,我这里使用mc cp 并编写shell脚本实现

执行脚本前先按照前面第一步下载安装好mc,然后执行这一句设置好要从哪台minio服务器上迁移文件:

1、先指定minio服务器

​
/usr/local/bin/mc alias set 别名(任意起一个别名) http://minioIP:port  账号/密码

​

2、创建file_list.txt文件

内容填写要下载的文件名,每个文件名占用一行:

脚本如下:

#!/bin/bash

# 定义 MinIO 别名和存储桶

MC_ALIAS="sytyminio" #(上一步任意起的别名)

BUCKET="syty" #(文件所在的桶名)


# 本地目录

LOCAL_DIR="/data_2/3-26" #(文件下载后的存放路径)


# 文件列表路径

FILE_LIST="$LOCAL_DIR/file_list.txt" #要下载的文件名


# 确保本地目录存在

mkdir -p "$LOCAL_DIR"


# 读取文件列表并逐个下载

while IFS= read -r FILE; do

    # 跳过空行

    if [[ -z "$FILE" ]]; then

        continue

    fi

    echo "Downloading: $FILE"

    /usr/local/bin/mc cp "$MC_ALIAS/$BUCKET/$FILE" "$LOCAL_DIR/"


    # 检查下载是否成功

    if [[ $? -ne 0 ]]; then

        echo "Failed to download: $FILE"

    else

        echo "Successfully downloaded: $FILE"

    fi

done < "$FILE_LIST"

echo "Download process completed!"

http://www.dtcms.com/a/111730.html

相关文章:

  • C++设计模式-策略模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
  • [GN] Python3基本数据类型 -- 与C的差异
  • 灭火器离位检测:智能视觉守护安全
  • Java异步编程实战:线框-管道模型的设计与实现
  • LabVIEW 中数字转字符串常用汇总
  • MoE Align Sort在医院AI医疗领域的前景分析(代码版)
  • Linux错误(6)X64向量指令访问地址未对齐引起SIGSEGV
  • 光流 | Farneback、Horn-Schunck、Lucas-Kanade、Lucas-Kanade DoG四种光流算法对比(附matlab源码)
  • web漏洞靶场学习分享
  • 19685 握手问题
  • 恒盾C#混淆加密卫士 - 混淆加密保护C#程序
  • 基于DrissionPage的Taptap热门游戏数据爬虫实战:从Requests到现代爬虫框架的迁移指南(含完整代码复制)
  • QML输入控件: TextArea的样式定制
  • 【python】速通笔记
  • AutoDL内网穿透、SSH连接本地VSCode
  • Windows10 中打开“网络 Internet”时状态页崩溃闪退解决方法
  • 计算机网络-TCP的拥塞控制
  • 软件工程面试题(二十六)
  • c++项目 网络聊天服务器 实现
  • 前端开发工厂模式的优缺点是什么?
  • 系统与网络安全------Windows系统安全(9)
  • YOLOv12 从预训练迈向自主训练,第一步数据准备
  • docker部署kkfileview
  • 在 Android Studio 中运行安卓应用到 MuMu 模拟器
  • 时间序列入门
  • SEO关键词与长尾词高效组合
  • Unity URP渲染管线详解
  • ggscitable包通过曲线拟合深度挖掘一个陌生数据库非线性关系
  • 基于 .NET 8 + Lucene.Net + 结巴分词实现全文检索与匹配度打分实战指南
  • U-Boot Sandbox特性应用案例