OCIオブジェクト・ストレージへのファイル転送方法のまとめ

このシリーズの他の記事は、[オラクル・クラウドの個人ブログ一覧 ](https://qiita.com/letian/items/10152a4fec813c1b7d98)からご覧いただけます。

__初めに__
OCIオブジェクトストレージへのファイル転送には、さまざまな方法があり、それぞれに利点と制限があります。どの方法をいつ利用するか迷っている方に向けて、各種方法を比較しました。少しでもお役に立てれば幸いです。
# 転送方法のまとめ

|提供者|タイプ|ツール|対応OS|認証方式|料金|備考|
|--|--|--|--|--|--|--|
|<strong>オラクル</strong>|Web ブラウザ|[OCIコンソール](#1-ociコンソール)|制限なし|ユーザ・パスワード|無償|
|同上|CLI|[OCI CLI](#2-oci-cli)|Linux, MacOS, Windows|APIキー|無償||
|同上|Mount|[Storage Gateway](#3-oci-storage-gateway)|Linux|APIキー|無償|<strong>End of life</strong>|
|<strong>他社</strong>|CLI/Mount|[Rclone](#4-rclone)|Linux, MacOS, Windows, FreeBSD|アクセスキー・秘密キー|無償|オーペンソース|
|同上|GUI|[WinSCP](#5-winscp)|Windows|アクセスキー・秘密キー|無償|オーペンソース|
|同上|GUI|[Cloudberry Explorer](#6-cloudberry-explorer)|Windows, MacOS|アクセスキー・秘密キー|<font color=blue>選択可能</font>|フリー版: Freeware<br>プロ版: 15日間トライアル|
|同上|GUI|[Cyberduck](#7-cyberduck)|Windows, MacOS|アクセスキー・秘密キー|無償|Freeware|
|同上|CLI/Mount|[s3fs-fuse](#8-s3fs-fuse)|Linux, MacOS, FreeBSD |アクセスキー・秘密キー|無償|オーペンソース|
|同上|GUI/Mount|[Cloudberry Drive](#9-cloudberry-drive)|Windows|アクセスキー・秘密キー|<font color=blue>有償</font>|15日間トライアル|

※上記以外、REST API/SDKの方法もありますが、ここで割愛させてください。

いつどの方法を利用すればよいかは、転送量（ファイル数とサイズ）、転送頻度、自動・手動実行、対応OS、コストなど、さまざまな要素によりますので、一概には言えません。どの方法にも利点と制限がありますので、要件に応じて適切な転送方法を選択しましょう。

# 1. OCIコンソール
イメージは、以下のようです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/2a4415f8-2356-cafd-f12f-f2fc089acf8d.png", width="700">
__適用場面__
最も一般的な転送方法で、軽く利用したい時最適です。

|項目|可否|
|--|--|
|ファイルごとのアップロード・ダウンロード・削除|Yes|
|複数ファイルの一括アップロード|Yes|
|複数ファイルの一括削除|Yes|
|複数ファイルの一括ダウンロード|No|
|フォルダ全体のアップロード・ダウンロード|No|

__サポート対象のブラウザ__
- Google Chrome 69 or later
- Safari 12.1 or later
- Firefox 62 or later

<font color=blue>IE</font>はサポート<font color=blue>対象外</font>です。ブラウザの情報は、以下のMOSドキュメントから確認できます(アカウント必要)。
What browsers and versions are supported in the OCI Console? ([Doc ID 2697934.1](https://support.oracle.com/knowledge/Oracle%20Cloud/2697934_1.html))

# 2. OCI CLI
OCI公式なコマンドラインのツールです。

__利点__
✅ オフィシャル・サポートがある。
✅ 比較的軽量なツールで、インストールと認証設定が簡単。
✅ 大量のファイル（フォルダ全体）の転送に適している。
✅ スケジューラやジョブと連携し、日次ファイルのバックアップや同期が可能。例：Linuxの場合はcrontab、Windowsの場合はタスクスケジューラを利用する。
✅ 巨大なファイルに対して、マルチパート・アップロードが可能。

|項目|可否|例|
|--|--|--|
|ファイルごとのアップロード・ダウンロード・削除|Yes|oci os object <strong>put\|get\|delete</strong>|
|フォルダ全体のアップロード<br>(サブフォルダを含む)|Yes|oci os object <strong>bulk-upload</strong>|
|フォルダ全体のダウンロード<br>(サブフォルダを含む)|Yes|oci os object <strong>bulk-download</strong>|
|複数ファイルの一括削除|Yes|`oci os object <strong>bulk-delete</strong>|

__コマンド例__
ファイルごとのアップロード：`oci os object put -bn <bucket_name> --file <local_file_name>`
ファイルごとのダウンロード：`oci os object get -bn <bucket_name> --file <local_file_name> --name <object_name>`

__注意点__
`os object put|get|delete`を利用する時、１個のファイルしか指定できません。`put --file file1 file2`あるいは`put --file file*`のような書き方ができません。

__インストール__
利用端末にインストールと設定が必要です。OCI Cloud Shellにインストールと認証設定が済んでいるため、直接利用することが可能です。

次の記事には、インストールと設定方法、及びオブジェクトストレージにアクセスするためのコマンド例が記載されていますので、ご参考にしてください。
[便利なOCI CLIコマンド例](https://qiita.com/letian/items/ed30da7a4d37a56ba8bc)

# 3. OCI Storage Gateway
:::note
2024年3月追記
Storage Gatewayは、2024/2/28より<strong>End of Life</strong>になることがアナウンスされました。代替案は、<font color=blue>OCI-CLI</font>か、<font color=blue>Rclone</font>などをご利用ください。アナウンスの詳細は、[こちら](https://docs.oracle.com/en-us/iaas/releasenotes/changes/d67506ea-eb9b-4eeb-8c2b-e05e2dea70a4/)を参照ください。
:::

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/939046b6-b9a0-dfe9-bcf9-f368c1fc3ecd.png", width="850">
「Storage Gateway」とは、オンプレミス・アプリケーションをOCIに接続できるクラウド・ストレージ・ゲートウェイです。Storage Gatewayの各NFSマウント・ポイントは、Object Storageバケットにマッピングされます。NFSインターフェイスを使用すると、従来のファイル・システム・コマンドを使用してクラウド・ストレージを操作できます。

__利点__
- オフィシャル・サポートがある。
- 従来のアプリケーションは、NFSが利用できれば、変更を加えることなく簡単にオブジェクトストレージを利用できる。
- 管理コンソールがあるため、ファイルシステムと「Cloud Sync Job」の管理が便利です。

__注意点__
- Windowsを対応していない。
- 汎用のNASサーバではなく、データ転送の目的として使ってください。

__インストール__
以下の記事をご参考ください（ステップ・バイ・ステップの設定手順を含め）。
[OCI Storage Gatewayの利用方法](https://qiita.com/liu-wei/items/a9d3fc0c4a2c25881a4e)

# 4. Rclone
[Rclone](https://rclone.org/) は、クラウド・ストレージ上のファイルを管理するコマンドライン・プログラムです。OCI Object Storage、AWS S3、Azure Blob、Google Cloud Storageなど、多くのクラウドベンダーに対応しています。オンプレミス環境からクラウド、あるいは異なるクラウドストレージ間で、簡単にデータを転送することが可能です。

__利点__
✅ マルチクラウドを利用しているユーザーに適しています。
✅ CLIベースのツールのため、バッチ処理や大量ファイルの転送に向いています。
✅ 同期（Sync）機能を備えており、日次バックアップにも利用できます。

__AWS、AzureからOCIへの転送例__
[RcloneでAWS S3からOCIオブジェクト・ストレージにデータをコピー](https://qiita.com/liu-wei/items/937f8f6b69f7ee25d9c1)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/776c2a42-48b9-afc2-e830-63ebc6305333.png", width="600">
[RcloneでAzure BlobからOCIオブジェクト・ストレージにデータをコピー](https://qiita.com/liu-wei/items/4c781712e989d34aced7)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c457b25c-1224-614a-1e14-10aa710bfffb.png", width="600">

※上記の転送例の記事に、アクセスキーと秘密キーの作成方法を書いてあります。下記５番からの各方法は、いずれもアクセスキーと秘密キーを利用しています。作成方法を知りたいなら、上記のRcloneの記事の[STEP-2](https://qiita.com/letian/items/937f8f6b69f7ee25d9c1#2-oci%E6%8E%A5%E7%B6%9A%E7%94%A8%E6%83%85%E5%A0%B1%E3%81%AE%E5%8F%8E%E9%9B%86-%E3%82%B3%E3%83%94%E3%83%BC%E5%85%88)をご参照ください。

<strong>rclone mount</strong>を使用すると、Linux、FreeBSD、macOS、および Windows で、Rclone のクラウド・ストレージ・システムを FUSE を使用してファイル・システムとしてマウントできます。

OCI オブジェクト・ストレージを <strong>Windows </strong>のローカルファイル・システムにマウントするには、[こちら](https://qiita.com/letian/items/c97c56c3037c91b78145#4-rclone-mount%E3%81%AE%E5%88%A9%E7%94%A8)の記事（4. Rclone mountの利用）をご参照ください。

# 5. WinSCP
GUI系の転送ツールです。WinSCPに慣れているユーザーにおすすめです。
ダウンロードURL: https://winscp.net/eng/download.php

Cloudberry Explorerと比べての<strong>利点</strong>：
- OCI <font color=blue>ホーム・リージョン以外も</font>利用可能👍

Cloudberry Explorerと比べての<strong>制限事項</strong>：
- ローカル端末とOCIオブジェクトストレージ間のファイル転送には対応していますが、<strong>他のクラウドとOCI</strong>オブジェクトストレージ間、または<strong>OCIバケット同士</strong>のファイル転送には対応していません。

| ツール | リージョンの制限  | ローカル ⇔ OCI| クラウド<br>同士|バケット<br>同士|
|:-|:-|:-|:-|:-|
| WinSCP  | <font color=blue>なし</font>  | Yes| No | No |
| Cloudberry Explorer | OCI <font color=blue>ホームリージョン</font>  | Yes|<font color=blue>Yes</font>|<font color=blue>Yes</font>|


__接続設定画面__

| 項目 | 内容 |
|:-|:-|
|File Protocol | <font color=blue>Amazon S3</font>  |
|Host name| <font color=blue>\<Object_Storage_Namespace></font>.compat.objectstorage.\<Region_ID>.oraclecloud.com<br>(文字列の先頭に`https://`をつけないでください) |
|Port Number|443 (デフォルト)|
|Access Key & Secret Key   | OCIコンソールから事前に作成しておく  |

※、ネームスペースとリージョン識別子の確認方法、及びアクセスキーと秘密キーの作成方法について、[この記事](https://qiita.com/liu-wei/items/937f8f6b69f7ee25d9c1#2-oci%E6%8E%A5%E7%B6%9A%E7%94%A8%E6%83%85%E5%A0%B1%E3%81%AE%E5%8F%8E%E9%9B%86-%E3%82%B3%E3%83%94%E3%83%BC%E5%85%88)をご参照ください。

上記情報を入力した後、<strong>Advanced</strong>ボタンをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b23fc833-4c25-a3e3-8b14-b7c5a91995ba.png", width="500">

`Environment → S3`を選択し、次の情報を入力します。
Default region: <strong>ap-tokyo-1</strong> (手入力、この例では東京リージョンを使用)
URL style: <strong>Path</strong> (デフォルトの`Virtual Host`を使わない)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f36fb2ab-5f13-c956-1aa5-61cc296fe848.png", width="500">
※、OCIのリージョンIDはAWSのリージョンとは異なるため、リストから直接選ぶことはできませんので、ご注意ください。

名前を付けて、接続設定を保存します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8389a911-f897-f6a8-4828-a60414ebd6f5.png", width="500">

`Login`をクリックし、接続を開始します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a7872322-7696-5245-4419-2c3d9a8d3a5a.png", width="500">

接続後、オブジェクトのアップロード・ダウンロードができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/51b5bccc-04c0-015f-f4dd-1e9155cf2d64.png)

# 6. Cloudberry Explorer
GUI好きなユーザ向けの転送ツールです。多くのクラウド・ベンダーを対応しています。OCI Object Storageを利用したい時、"<font color=blue>S3 Compatible</font>"を選択してください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/2de5c5cf-24a4-c112-1d1d-5eb86ec81d01.png", width="500">

[公式サイト](https://www.msp360.com/explorer/)よりダウンロードしてから、画面の指示に従ってインストールしてください。インストールと設定は簡単です。

アカウント設定画面：
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/861e4d44-ee4c-5957-59c7-8d6cc8e1a5ae.png", width="400">

- Display name: 任意
- Service point: `https://<Object_Storage_Namespace>.compat.objectstorage.<Region_ID>.oraclecloud.com`
- Access Key & Secret Key: OCIコンソールより事前に作成しておく。
- Signature version: <font color=blue>4</font>

__制限事項__
OCI<font color=blue>ホーム・リージョンのみ</font>を対応しています。

__ライセンス__
フリー版とプロ版の２種類があります。価格と機能の差異について、[ここ](https://www.msp360.com/explorer/licensing/)をご参照ください。

# 7. Cyberduck
GUI系の転送ツールです。Cloudberry Explorerと比べて以下の利点があります。

✅ OCIホーム・リージョン以外でも利用可能
✅ OCIとOCI-Classicの2種類のオブジェクトストレージに、一つのツールでアクセスできる
✅ 全機能が利用できるフリーウェア

__インストール__
[公式サイト](https://cyberduck.io/)からダウンロードしてインストールしてください。

OCIオブジェクト・ストレージへの接続手順が提供されていますので、[こちら](https://docs.cyberduck.io/protocols/s3/oracle_cloud/)をご参照ください。
接続設定は簡単で、オフィシャル手順から抜粋させてください。

１．接続プロファイルをダウンロード（東京リージョンを例に）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/17197ff9-a60f-6ca9-c0e9-5717f83ca36c.png)

２．プロファイルをダブル・クリックしたら、 Cyber​​duckによってオープンされる。以下のように項目を入力する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/3a19a867-cc07-59d3-6b4f-d053a1f9aac8.png", width="500">
- Nickname: 任意
- Server: `<Object_Storage_Namespace>.compat.objectstorage.<Region_ID>.oraclecloud.com`
- Access Key & Secret Key: OCIコンソールより事前に作成しておく。

ネームスペースとリージョン識別子の確認方法、及びアクセスキーと秘密キーの作成方法について、[この記事](https://qiita.com/liu-wei/items/937f8f6b69f7ee25d9c1#2-oci%E6%8E%A5%E7%B6%9A%E7%94%A8%E6%83%85%E5%A0%B1%E3%81%AE%E5%8F%8E%E9%9B%86-%E3%82%B3%E3%83%94%E3%83%BC%E5%85%88)に詳しく書いてありますので、ご参照ください。

３．作成後のブックマークをダブルクリックし、接続する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f232a406-e5f9-c96e-9027-106c9c69ce44.png", width="600">
４．接続後のイメージ（OCIコンソール上の表示内容と同じ）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/5eb9eb09-1304-66a7-d6b1-ccc755ee0b66.png", width="650">

# 8. s3fs-fuse
[s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse)を利用すれば、OCI Object Storageのバケットをローカルのファイルシステムにマウントすることが可能です。インストールと設定方法については、次の記事をご参照ください。
[OCI Object StorageのバケットをLinux/Windowsのローカルにマウントする](https://qiita.com/liu-wei/items/c97c56c3037c91b78145)

__利点__
マウント後は、ローカルのフォルダやファイルと同様に、バケットやオブジェクトを使用できます。

__注意点__
端末再起動後にマウントポイントが切断されないよう、手動で再マウントするか、自動マウントの設定を行ってください。（例：`/etc/fstab`を編集）。

# 9. Cloudberry Drive
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/49445e29-0bc3-07b1-a140-67f5e3fb0730.png", width="500">

Windowsのファイル・システムへマウントするのに、[Cloudberry Drive](https://www.msp360.com/drive.aspx)は代表的なツールのひとつです。インストールと設定方法は、上記の[s3fs-fuse](#7-s3fs-fuse)と同じの記事に書いてありますので、ご参照ください。

__注意点__

- OCI <font color=blue>ホーム・リージョンのみ</font>を対応 (Cloudberry Explorerと同様)
- 15日間のトライアル期間を過ぎると、有償利用となる。（フリー版なし）

__サマリ__
目的は一つですが、さまざまな方法があります。要件をしっかり把握し、適切な方法を選んで、ベストプラクティスを提供するのがクラウドアーキテクトの仕事です。

以上です。

# 付録 - 制限事項
### バケット名の文字制限
- テナンシ内で名前を一意します。
- 1から<font color=blue>256</font>文字で指定します。
- 有効な文字は、文字(大文字または小文字)、数字、ハイフン(`-`)、アンダースコア(`_`)およびピリオド(`.`)です。

※、[ドキュメントリンク](https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/managingbuckets.htm)

### オブジェクト名の文字制限
- バケット内で名前を一意します。
- 1から<font color=blue>1024</font>文字で指定します。
- 使用可能な文字は、英字（大文字・小文字）、数字、および改行、キャリッジリターン、NULLを除く文字です。

※、[MOS (Doc ID 3017750.1)](https://support.oracle.com/knowledge/Oracle%20Cloud/3017750_1.html)

----
__改訂歴__
2022年6月：初版作成
2023年5月：追記 - Rclone mount の利用
2024年2月：追記 - WinSCP の利用
2024年3月：追記 - Storage Gateway のアナウンス (End of life)
2025年6月：追記 - 付録