[MinIO]mcでよく使いそうなコマンド_オブジェクト操作関連

2022.11.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • ローカル上に構築するS3互換ストレージとしてMinIOを利用しています。
  • そのストレージ内の情報をGUIだけでなくコマンドラインで確認したい時に利用できるのがmcというクライアントツールです。
  • 今回はmcを試せる環境を用意しながら、よく使うコマンドをまとめていきます。

環境

  • mac OS Monterey 13.0
  • Docker 20.10.17
  • Docker Compose 2.11.1

準備

対象ストレージの用意

  • 今回は操作対象となるMinIOストレージをDocker Composeで用意します。
    • ※既に用意されている場合はスキップしてください。
  • まず以下のコマンドで必要なファイルを作成します。
mkdir ~/minio-sample
cd ~/minio-sample
touch docker-compose.yml
  • 作成後、以下の内容をdocker-compose.ymlに記述します。
version: '3.7'
services:
  minio:
    container_name: minio
    command: ['server', '/data', '--console-address', ':9001']
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=adminpass
    image: quay.io/minio/minio:latest
    ports:
      - '9000:9000'
      - '9001:9001'
    volumes:
      - ./minio_data:/data
    restart: unless-stopped
  • 記述後、以下のコマンドでコンテナを起動します。
# コンテナ起動
docker compose up -d

# 起動確認
docker ps
  • 起動後、localhost:9000にアクセスしてMinIOのログイン画面が表示され、docker-compose.ymlで以下の情報でログインできることを確認します。
    • MINIO_ROOT_USER : admin
    • MINIO_ROOT_PASSWORD : adminpass

mcのインストール及び接続設定

  • 次にMinIOクライアントツールのmcを簡単に試すため、こちらもDockerで用意します。
    • ※既にmc利用環境が整っている場合はスキップしてください。
  • 以下のコマンドでコンテナ起動して、その中に入ります。
# 起動
docker run -it --entrypoint=/bin/sh minio/mc

sh-4.4#
  • コンテナ内に入ったら、以下のコマンドで対象のMinIOストレージをmc接続先にエイリアスとして設定します。
    • ※aliasのset部分の「ユーザー名」「パスワード」は自身の環境の値を設定してください。
# mc構成設定
mc alias set myminio http://host.docker.internal:9000 admin adminpass

# 確認
mc alias list

myminio
  URL       : http://host.docker.internal:9000
  ***************************
  • 適切に設定できたら準備は以上です。

操作

  • ※以下の操作はmcコンテナ内での操作です。

バケット作成

  • 上記で用意した初期状態では空のため以下のコマンドでバケットを作成します。
# mc mb 対象エイリアス/バケット名
mc mb myminio/sample

ファイル及びディレクトリのアップロード

  • 以下のコマンドでバケットに既存ファイル及びディレクトリをアップロードします。
# 対象ファイルの用意
seq 10 > sample.txt

# 対象ディレクトリの用意
mkdir sub
seq 10 | tee sub/{1,2}.txt >/dev/null 

# ファイルのアップロード
# mc cp 対象ファイル エイリアス/バケット名
mc cp sample.txt myminio/sample

# ディレクトリのアップロード
# mc cp -r 対象ディレクトリ エイリアス/バケット名
mc cp -r sub myminio/sample

# 確認
# mc ls エイリアス/バケット名
mc ls myminio/sample

標準入力でファイルに書き込み

  • 以下のコマンドで標準入力からオブジェクトを作成することも可能です。
# mc pipe エイリアス/バケット名/オブジェクト名
seq 1000 | mc pipe myminio/sample/data.txt

# 確認
mc ls myminio/sample

中身確認

  • 以下のコマンドでストレージ上のオブジェクトの中身を確認します。
# mc cat エイリアス/バケット名/オブジェクト名
mc cat myminio/sample/sample.txt

1
2
3
******

一部だけ確認

  • 大きいファイル等の先頭や最後だけ確認したい時は以下のコマンドを利用します。
# 最初の10行
# mc head エイリアス/バケット名/オブジェクト名
mc head myminio/sample/data.txt

# 最初の20行
mc head -n 20 myminio/sample/data.txt

# 最後の10行
# mc自体にtailはないのでパイプでつないでOSのtailコマンドを利用
mc cat myminio/sample/data.txt | tail

ディレクトリ構造の確認

  • ストレージ内のディレクトリ構成をtree形式で確認したい時は以下を利用します。
# mc tree -f エイリアス
mc tree -f myminio

検索

  • ストレージ内を検索する時は以下のコマンドを利用します。
# 基本の検索
# mc find エイリアス --name "検索語"
mc find myminio --name "*.txt"

# オブジェクト名のみの抜き出し
mc find myminio --name "sample.txt" --print {base}

# サイズの出力
mc find myminio --name "sample.txt" --print {size}

# URLでの出力
mc find myminio --name "sample.txt" --print {url}

http://host.docker.internal:9000/sample/sample.txt?****

まとめ

  • mcを利用することでAWS CLI等のようにコマンドラインでストレージを操作できるため、CI等にも活用できます。
  • 他にも便利なコマンドが豊富にあるため適宜利用していきます。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。