#chiroito ’s blog

Java を中心とした趣味の技術について

Oracle Object Storage へマルチパート・アップロードしてみた

この記事はOracle Cloud Advent Calendar 2018 - Adventarの12月8日の記事として書かれています。

大きなファイルのアップロードにはマルチパートアップロードが有効です。今回はOracle Cloudのオブジェクトストレージにファイルをマルチパートアップロードしてみます。

Webのコンソールからはマルチパートアップロードできないため、Oracle Cloud Infrastructure (OCI) CLI を使用します。 OCI CLIでマルチパート・アップロードするには事前にバケットを作成し、バケット名(下図の赤四角)とバケットが所属するNamespace(下図の紫角丸四角)が必要です。

f:id:chiroito:20181201190458p:plain

マルチパートアップロードにはoci os object putコマンドを使用します。パラメータとして以下を指定します。

  • ネームスペースを-ns
  • バケット名を-bn
  • アップロードするファイルを--file
  • オブジェクト・パーツのサイズを--part-size
  • 並列度を--parallel-upload-count

sandbox.7zファイルを20MB ごとにオブジェクト・パーツへ分割し、4並行でアップロードしてみます。

> oci os object put -ns oxxxr -bn Cxxxt --file sandbox.7z --part-size 20 --parallel-upload-count 4
Upload ID: 7xxxxxxe-8xx0-5xxc-fxxb-9xxxxxxxxxxb
Split file into 12 parts for upload.
Uploading object  [####################################]  100%
{
  "etag": "7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4",
  "last-modified": "Sat, 24 Nov 2018 08:23:19 GMT",
  "opc-multipart-md5": "VC+BNIk9Xh3T7+rf9Ss4pQ==-12"
}

実行するとUploading object [------------------------------------] 0%で止まります。アップロードの進捗はパーツごとにしか更新されないようです。

ファイルがアップロードされたことをコンソールで確認してみます。

f:id:chiroito:20181201190127p:plain

sandbox.7zファイルが表示されています。