Amazon S3 互換のMinioをちょっとだけ試す

Amazon S3 互換のMinioを少し試してみました．MinioはGo製でマルチプラットホーム(Linux/Windows/macOS/FreeBSD等)で動作します．

Minio: Private cloud storage

minio/minio: Minio is an open source object storage server compatible with Amazon S3 APIs

Minioダウンロード

いろいろな環境で動作します．Linux amd64だけでもDocker, Snap, 単一バイナリなどが選べます．
今回はお手軽にバイナリで試します．

minio.sha256sumのファイル名はminio.RELEASE.2018-02-09T22-40-05を見ているようなので目diffで……．(minio.ascはminioを見てますね．)

$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio.sha256sum
$ cat minio.sha256sum
98cf1e082368e3f57f2be39dd49b1abffca4068e6d3e859f300ae93b4e5f6a5a minio.RELEASE.2018-02-09T22-40-05Z
$ sha256sum -c minio.sha256sum
sha256sum: minio.RELEASE.2018-02-09T22-40-05Z: そのようなファイルやディレクトリはありません
minio.RELEASE.2018-02-09T22-40-05Z: FAILED open or read
sha256sum: 警告: 一覧にある 1 個のファイルが読み込めませんでした
$ sha256sum minio
98cf1e082368e3f57f2be39dd49b1abffca4068e6d3e859f300ae93b4e5f6a5a minio
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio.asc
$ gpg --verify minio.asc
gpg: 署名されたデータが'minio'にあると想定します
gpg: 2018年02月10日 07時40分19秒 JSTに施された署名
gpg: RSA鍵12C74390F9AAC728を使用
gpg: "Minio Trusted <trusted@minio.io>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg: この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガープリント: 4405 F3F0 DDBA 1B9E 68A3 1D25 12C7 4390 F9AA C728

実行権を付与します．

$ chmod +x minio

ダウンロードページや READMEにはamd64のしか載っていませんが，以下のあたりを見ると386, ARM, ARM64などもあります :)

https://dl.minio.io/server/minio/release/

minio USAGE

$ ./minio -h
NAME:
minio - Cloud Storage Server.

DESCRIPTION:
Minio is an Amazon S3 compatible object storage server. Use it to store photos, videos, VMs, containers, log files, or any blob of data as objects.

USAGE:
minio [FLAGS] COMMAND [ARGS...]

COMMANDS:
server Start object storage server.
gateway Start object storage gateway.
update Check for a new software update.
version Print version.

FLAGS:
--config-dir value, -C value Path to configuration directory. (default: "/home/mk/.minio")
--quiet Disable startup information.
--json Output server logs and startup information in json format.
--help, -h Show help.

VERSION:
2018-02-09T22:40:05Z

Minioをサーバとして実行

ストレージに/media/mk/diskを指定して実行しています．

$ ./minio server /media/mk/disk
Created minio configuration file successfully at /home/mk/.minio

Drive Capacity: 4.5 GiB Free, 466 GiB Total

Endpoint: http://192.168.2.200:9000 http://172.17.0.1:9000 http://127.0.0.1:9000
AccessKey: AUI0SRSWF5NOG1JLQNX6
SecretKey: LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1ZW84

Browser Access:
http://192.168.2.200:9000 http://172.17.0.1:9000 http://127.0.0.1:9000

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://192.168.2.200:9000 AUI0SRSWF5NOG1JLQNX6 LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1ZW84

Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
.NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide

この状態で http://localhost:9000/ にアクセスすると以下のような画面にアクセスできてファイルの閲覧やダウンロードが出来ます．
※同じネットワークからも見えちゃうので注意．

Minio Client(mc)

Minio Client(mc)というコマンドラインクライアントもあるそうなので試してみます．
＃mcというとファイラーと名前が当ってしまいますね． -> Midnight Commander

minio/mc: Minio Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage.

Minio

例によってこの辺を見ると各種環境のものがあります．

https://dl.minio.io/client/mc/release/

$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc
$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc.sha256sum
$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc.asc
$ sha256sum -c mc.sha256sum
sha256sum: mc.RELEASE.2018-02-09T23-07-36Z: そのようなファイルやディレクトリはありません
mc.RELEASE.2018-02-09T23-07-36Z: FAILED open or read
sha256sum: 警告: 一覧にある 1 個のファイルが読み込めませんでした
$ cat mc.sha256sum
7367d2e7e14aea6ef1928c75d5965e7124f8027254007ccf7c51cbd83ed73386 mc.RELEASE.2018-02-09T23-07-36Z
$ sha256sum ./mc
7367d2e7e14aea6ef1928c75d5965e7124f8027254007ccf7c51cbd83ed73386 ./mc
$ gpg --verify ./mc.asc
gpg: 署名されたデータが'./mc'にあると想定します
gpg: 2018年02月10日 08時07分39秒 JSTに施された署名
gpg: RSA鍵12C74390F9AAC728を使用
gpg: "Minio Trusted <trusted@minio.io>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg: この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガープリント: 4405 F3F0 DDBA 1B9E 68A3 1D25 12C7 4390 F9AA C728
$ chmod +x ./mc

mc USAGE

$ ./mc --help
NAME:
mc - Minio Client for cloud storage and filesystems.

USAGE:
mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
ls List files and folders.
mb Make a bucket or a folder.
cat Display file and object contents.
pipe Redirect STDIN to an object or file or STDOUT.
share Generate URL for sharing.
cp Copy files and objects.
mirror Mirror buckets and folders.
find Search for files and objects.
stat Stat contents of objects and folders.
diff List differences in object name, size, and date between folders.
rm Remove files and objects.
events Manage object notifications.
watch Watch for file and object events.
policy Manage anonymous access to objects.
admin Manage Minio servers
session Manage saved sessions for cp command.
config Manage mc configuration file.
update Check for a new software update.
version Print version info.

GLOBAL FLAGS:
--config-folder value, -C value Path to configuration folder. (default: "/home/mk/.mc")
--quiet, -q Disable progress bar display.
--no-color Disable color theme.
--json Enable JSON formatted output.
--debug Enable debug output.
--insecure Disable SSL certificate verification.
--help, -h Show help.

VERSION:
2018-02-09T23:07:36Z

minioのurl, アクセスキー, シークレットキーを設定します．

$ ./mc config host add myminio http://192.168.2.200:9000 AUI0SRSWF5NOG1JLQNX6 LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1Z
W84
Added `myminio` successfully.

lsしてみます．サブディレクトリは./mc ls s3 myminio/SUBDIRな感じで．

$ ./mc ls s3 myminio mc: <ERROR> Unable to list folder. The AWS Access Key Id you provided does not exist in our records.
[2015-10-14 19:34:12 JST] 0B ac100-simple-repart/
[2014-03-01 02:29:12 JST] 0B backup/
[2014-04-09 10:49:46 JST] 0B cubox-i/
[2016-03-10 13:04:52 JST] 0B flash-tmp/
[2015-10-14 19:34:48 JST] 0B image/
[2014-05-05 05:53:24 JST] 0B kobo/
[2015-10-14 19:34:26 JST] 0B nakasi-lmy47v/
[2014-02-28 00:14:16 JST] 0B opencocon.org/
[2017-12-09 02:28:42 JST] 0B pinebook/
[2017-03-01 19:49:58 JST] 0B raspifw/

多分しばらく前にサポートされたWinSCPやFileZilla Proでもアクセスできるのではないかと思います．

Recent Version History :: WinSCP

FileZilla® Pro Announces New WebDAV Support and Extended Amazon S3 Support – FileZilla Pro