2015年7月17日金曜日

rcloneコマンドでOpenStack Swiftを使う (ConoHaのオブジェクトストレージ)

ConoHaまとめ

rclone(rsync for cloud storage)の入手



最近知ったのですが、rsyncのストレージサービス対応というコンセプトらしいので試してみました。ストレージサービスの引っ越しに役立ちそうじゃないですか =)

対応しているストレージサービスは以下のとおり。

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • The local filesystem

この中にOpenstack SwiftってのがあってこれはConoHaのオブジェクトストレージに対応しているんじゃまいか、ということで調査しました。

golangで開発されているとのことでしたが、開発環境を揃える必要はなく、直接バイナリを入手して使うことが出来ます。今回はバイナリをダウンロードしました。

Windows版の他に、Mac、Linux、*BSD、Plan 9が用意されています。LinuxにはARMが用意されているのでもしかしてRaspberry Piとかにもそのまま使えるかもしれませんね。


設定ファイルの作成 (OpenStack Swift)


OpenStack Swift用の設定ファイルを作成します。

作成にあたり、APIキー等が必要になります。新ConoHaのオブジェクトストレージで遊ぶ (swiftコマンド編)の「APIユーザーの作成とオブジェクトストレージの有効化」を参考にしてください。

rclone configで指示に従って入力していきます。


入力例

今回、remoteサービス名は「conoha」にしました。特に決まりはないので自由に設定してください =)


C:\tmp>rclone config [Enter]
2015/07/17 15:10:50 Failed to load config file C:\Users\mcn/.rclone.conf - using defaults
No remotes found - make a new one
n) New remote
q) Quit config
n/q> n [Enter]
name> conoha [Enter] (適当な名前で大丈夫 =))
What type of source is it?
Choose a number from below
 1) swift
 2) s3
 3) local
 4) google cloud storage
 5) dropbox
 6) drive
type> 1 [Enter] (ConoHaはOpenStack Swiftなので1を選択します)
User name to log in.
user> ************ [Enter] (ユーザー名を入力します)
API key or password.
key> *************** [Enter] (APIユーザー用のパスワードを入力します)
Authentication URL for server.
Choose a number from below, or type in your own value
 * Rackspace US
 1) https://auth.api.rackspacecloud.com/v1.0
 * Rackspace UK
 2) https://lon.auth.api.rackspacecloud.com/v1.0
 * Rackspace v2
 3) https://identity.api.rackspacecloud.com/v2.0
 * Memset Memstore UK
 4) https://auth.storage.memset.com/v1.0
 * Memset Memstore UK v2
 5) https://auth.storage.memset.com/v2.0
auth> https://identity.tyo1.conoha.io/v2.0 [Enter] (API Auth URLを入力します)
Tenant name - optional
tenant> ************ [Enter] (テナント名を入力します)
Region name - optional
region> [Enter] (特に設定しませんでした)
Remote config
--------------------
[conoha]
user = ************
key = ***************
auth = https://identity.tyo1.conoha.io/v2.0
tenant = ************
region =
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y [Enter]
Current remotes:
Name                 Type
====                 ====
conoha               swift
e) Edit existing remote
n) New remote
d) Delete remote
q) Quit config
e/n/d/q> q [Enter]

rcloneコマンドで遊ぼう =)


リモートのパラメータは「remote名:コンテナ名」で指定します。

ローカル → リモート(ConoHa)


rsyncですので、ローカルとリモートで差分があった分だけ同期します。swift uploadだと問答無用で全部アップロードするので、何らかの工夫が必要ですね。オブジェクト名もそのまま使われています。

  • ローカル → リモートの同期 : rclone sync [ローカルのディレクトリ名] [リモート名:コンテナ名]

使用例

ローカルのディレクトリ「.\tdnet_test」に保存してある3つのファイルをリモートサーバー「conoha」のコンテナ名「conoha_test」に同期しています。実質copyになっていますけど =)。

C:\tmp>rclone sync tdnet_test conoha:conoha_test [Enter]
2015/07/17 15:18:22 Swift container conoha_test: Building file list
2015/07/17 15:18:22 Swift container conoha_test: Waiting for checks to finish
2015/07/17 15:18:22 Swift container conoha_test: Waiting for transfers to finish
2015/07/17 15:18:49 Waiting for deletions to finish
Transferred:      6202763 Bytes ( 216.83 kByte/s)
Errors:                 0
Checks:                 0
Transferred:            3
Elapsed time:  27.9361969s

C:\tmp>rclone ls conoha:conoha_test [Enter]
   528228 140120150507464080.pdf
   713974 140120150515479565.pdf
  4960561 140120150602400929.pdf
Transferred:            0 Bytes (   0.00 kByte/s)
Errors:                 0
Checks:                 0
Transferred:            0
Elapsed time:  602.2327ms

C:\tmp>swift list conoha_test [Enter]
140120150507464080.pdf
140120150515479565.pdf
140120150602400929.pd

リモート(旧ConoHa) → リモート(新ConoHa)


使用例

旧ConoHaに置いてあったコンテナ「tdnet」を新ConoHaに同期しました。旧ConoHaのremote名は「conoha_old」とし、設定ファイルを作成しています。

C:\tmp>rclone sync conoha_old:tdnet conoha:tdnet [Enter]
2015/07/17 15:39:37 Swift container tdnet: Building file list
2015/07/17 15:39:37 Swift container tdnet: Waiting for checks to finish
2015/07/17 15:39:38 Swift container tdnet: Waiting for transfers to finish
2015/07/17 15:39:39 Waiting for deletions to finish
Transferred:       264639 Bytes (  75.77 kByte/s)
Errors:                 0
Checks:                 0
Transferred:            1
Elapsed time:  3.4107942s

こんな感じ。


このとも」始めました!


紹介用URLから登録すると、もれなく1000円分のクーポンが貰えるはずです。ぜひこの制度、活用してみてくださいね。私にとっても悪く無い話らしいんですよ =)

0 件のコメント:

コメントを投稿