web-dev-qa-db-ja.com

Rackspace Cloud Fileバケットをローカルディレクトリにコピー(ダウン)しますか?

Rackspace Cloud Fileバケットをローカルディレクトリにコピー(ダウン)するにはどうすればよいですか?または、ローカルディレクトリをRSバケットのコピーに更新するにはどうすればよいですか?

アップロードまたは「rsync」するためのツールはたくさんありますが、私は反対方向(サーバーから下)にコピーするツールを探しています。

1
Dwayne Towell

これが通常の(体系的な)要件なのか、それとも1回限りの要件なのかを明確にしないでください。

後者の場合、および特定の状況では前者の場合は、 ExpandriveCyber​​Duck などの同期を可能にするツールを確認する必要がありますマシンからCloudFilesコンテナーへのフォルダー。

後者(体系的な要件)に関しては、これらのクライアント側ツールを同じように推奨することはしません。APIを使用して自分でスクリプトを作成することをお勧めします。 MattPyrax について良い答えを出しました-必要に応じて他の言語で同様のAPIバインディングをチェックしてください-完全なリストは ドキュメント内、ここ

0
babelmonk

openstack/Swift tools を使用して、コンテナーを再帰的にダウンロードできます。つまり、サブフォルダーとそのコンテンツを含めることができます。 ubuntuでは、ツールはapt-get install python-Swiftでインストールできます

次に、コンテンツをダウンロードして実行するディレクトリに移動します

Swift -A https://auth.api.rackspacecloud.com/v1.0 -U <username> -K <api-key> download <container-name>

次に、<containername>コンテナの内容が現在のディレクトリにダウンロードされます。クラウドコントロールパネルへのログインに使用する<username>と、同じコントロールパネルの[アカウント/アカウント設定]で利用可能な<api-key>を指定する必要があります。

1
user3096626

ドウェイン、

これを実行する既存のアプリケーションはわかりませんが、公式のRackspace Python SDK、pyraxを使用すると、目標を達成できます。pyraxには、これを実行するために必要な完全に構築された関数が含まれていません。 、しかし私は数分を費やし、pyraxのデフォルト機能を拡張することによって何かをまとめました。

コードは https://Gist.github.com/560271 にあります。

コードの一番下で、myusernameを実際のユーザー名で、myapikeyを実際のAPIキーで、2つの場所を適切なリージョン(すでにDFWである可能性があります)で更新する必要があります。 、some-containerは実際のコンテナ名、/path/to/some/local/directory/は同期先のローカルディレクトリです。

スクリプトの最後に向かってsync_container_to_folderが呼び出される方法は、リモートにも存在しないローカルファイルを削除し、rsyncの--delete引数と同様に機能します。 delete=Falseを追加して、次のような機能を防ぐことができます。

     cf.sync_container_to_folder('some-container',
                                 '/path/to/some/local/directory/',
                                 delete=False)

sync_container_to_folderのオプションは、 https://github.com/rackspace/pyrax/blob/master/)に記載されているように、pyraxの組み込み関数sync_folder_to_containerのオプションと非常によく似ています。 docs/cloud_files.md#syncing-a-local-folder-with-a-container

私はいくつかの小さなコンテナでテストしましたが、大きなものは何もありませんが、うまく機能しているように見えることを確認できます。ただし、念のため、最初にテストコンテナを使用して、空のローカルディレクトリを使用してテストすることをお勧めします。

ところで:これを使用するには、pyraxモジュールとpython-dateutilモジュールをインストールする必要があります。これらは標準のpythonモジュールではありません。

0
Matt Martz