分割アップロード

対象リージョン:全リージョン

イメージファイルを分割してアップロードします。

始める前に

アップロード先のオブジェクトストレージが東日本リージョン3/西日本リージョン3の場合、分割アップロード方式は実施できないため一括アップロードを実施します。

手順

  1. ファイルの分割

    ここでは200MB単位に分割する例を示します。

    # split -b 200MB <アップロードファイル名(相対パス)>

    分割結果を確認します。この時に表示されるファイル名やファイルサイズは、あとの手順で使用します。

    # ls -la
    合計 11079834
    ----rwx---+ 1 <owner> <group> 5672802304 Jul 25 13:41 <アップロードファイル名(相対パス)>
    -rw-rwxr--+ 1 <owner> <group>  200000000 Jul  3 13:47 xaa
    -rw-rwxr--+ 1 <owner> <group>  200000000 Jul  3 13:47 xab
    -rw-rwxr--+ 1 <owner> <group>  200000000 Jul  3 13:47 xac
    
    ~~~~
    
    -rw-rwxr--+ 1 <owner> <group>   72802304 Jul  3 13:52 xbc
  2. トークンの取得

    利用者管理サービスのAPIを実行してトークンを取得します。

    認証トークンのスコープにドメインは指定できません。

  3. 変数の設定
    # OBJECTSTORAGE=<オブジェクトストレージのAPIエンドポイント>
    # TOKEN=<取得したトークン>
    # PROJECT_ID=<プロジェクトID>
    # CONTAINER=<アップロード先のコンテナ名>
    # OBJECT=<アップロード先のイメージファイル名>
  4. コンテナの作成
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER} -X PUT
  5. オブジェクトのアップロード

    分割ファイルの数だけアップロードを繰り返します。

    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT}/001 -T xaa
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT}/002 -T xab
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT}/003 -T xac
    
    ~~~~
    
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT}/029 -T xbc
  6. アップロードした分割ファイルの結合

    アップロードした各ファイルのチェックサム値を取得します。

    # md5sum xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav xaw xax xay xaz xba xbb xbc
    
    3b2b82b767e26848b0e22f8f92cf49a2 *xaa
    af8c1dba49cf2e01e63e849bd0f9b100 *xab
    9ee81d39f3322c07e0eb76be0dc6937c *xac
    
    ~~~~
    
    8a62fffb570326693f87ac0c177020df *xbc
  7. 以下の内容をslo.jsonとして保存します。
    [
        {
            "path": "<1つ目の分割ファイルのパス>",
            "etag": "<1つ目の分割ファイルのチェックサム値>",
            "size_bytes": <1つ目の分割ファイルのサイズ>
        },
        {
            "path": "<2つ目の分割ファイルのパス>",
            "etag": "<2つ目の分割ファイルのチェックサム値>",
            "size_bytes": <2つ目の分割ファイルのサイズ>
        },
        {
            "path": "<3つ目の分割ファイルのパス>",
            "etag": "<3つ目の分割ファイルのチェックサム値>",
            "size_bytes": <3つ目の分割ファイルのサイズ>
        },
    
    ~~~~
    
        {
            "path": "<最後の分割ファイルのパス>",
            "etag": "<最後の分割ファイルのチェックサム値>",
            "size_bytes": <最後の分割ファイルのサイズ>
        }
    ]
  8. slo.jsonをアップロードしてファイルを結合します。
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT}?multipart-manifest=put -T slo.json
  9. アップロード結果を確認します。
    # curl -i -H "X-Auth-Token: ${TOKEN}" ${OBJECTSTORAGE}/v1/AUTH_${PROJECT_ID}/${CONTAINER}/${OBJECT} -I

タスクの結果

レスポンスステータスが"200 OK"の場合、成功です。

次のタスク

イメージのインポート