Rackspace から Opencart イメージを提供する CDN 用の Rackspace アカウントを作成しました。
500,000 を超える画像をアップロードするコンテナを作成しましたが、圧縮ファイルとしてアップロードする方が好きで、より柔軟に感じます。
すべての画像を圧縮ファイルでアップロードする場合、ファイルがコンテナー内にあるときにファイルを抽出するにはどうすればよいですか? また、どの圧縮タイプのファイルが機能しますか?
Rackspace から Opencart イメージを提供する CDN 用の Rackspace アカウントを作成しました。
500,000 を超える画像をアップロードするコンテナを作成しましたが、圧縮ファイルとしてアップロードする方が好きで、より柔軟に感じます。
すべての画像を圧縮ファイルでアップロードする場合、ファイルがコンテナー内にあるときにファイルを抽出するにはどうすればよいですか? また、どの圧縮タイプのファイルが機能しますか?
答えは、ファイルをアップロードしようとしている方法によって異なる場合があります。これは指定されていないので、*nix 環境の CLI を使用して質問に回答します。
curl を使用すると、圧縮ファイルをアップロードし、extract-archive 機能を使用して抽出できます。
$ tar cf archive.tar directory_to_be_archived
$ curl -i -XPUT -H'x-auth-token: AUTH_TOKEN' https://storage101.iad3.clouddrive.com/v1/MossoCloudFS_aaa-aaa-aaa-aaa?extract-archive=tar -T ./archive.tar
この機能のドキュメントは、http: //docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.htmlにあります。
上記の方法を使用して多くのオブジェクトをアップロードおよび抽出すると、完了するまでに時間がかかる場合があります。また、その間にネットワークが中断した場合は、最初からやり直す必要があります。
代わりに、ファイルを同時にアップロードできる Swiftly などのツールを使用することをお勧めします。これにより、アップロード中に問題が発生した場合でも、既に正常にアップロードされたオブジェクトを再度アップロードする必要はありません。
これを行う方法の例は次のとおりです。
$ swiftly --auth-url="https://identity.api.rackspacecloud.com/v2.0" \
--auth-user="{username}" --auth-key="{api_key}" --region="DFW" \
--concurrency=10 put container_name -i images/
アップロード中にネットワークが中断した場合、またはファイルのアップロードを停止/再開する必要がある場合は、上記のコマンドの「put」の後に「--different」オプションを追加できます。これにより、Swiftly は最初にオブジェクトを HEAD し、ローカル ファイルの時間またはサイズが対応するオブジェクトと一致しない場合にのみアップロードし、既にアップロードされているオブジェクトをスキップします。
Swiftly は、こちらの github で見つけることができます: https://github.com/gholt/swiftly
おそらく同じことを行うクライアントは他にもありますが、Swiftly が機能することはわかっているので、お勧めします。