LoginSignup
1
2

More than 5 years have passed since last update.

IDCFのオブジェクトストレージへawscliのsyncを使ってバックアップ

Posted at

はじめに

IDCFクラウドのオブジェクトストレージはAWSのS3との高い互換性を謳っています。
また、IDCFクラウドでもs3cmdよりawscliを使ったほうが性能が出るそうです(例えばこの記事)
awscliでバックアップする場合cpとsyncがあります。
バックアップ用途ではsyncのほうが使い勝手が良いです。
しかし、IDCFクラウドでsyncを使ってバックアップをしたよという記事は見かけません。
やってみたらできましたので手順を書いておきます。

awscliのcpとsyncの違い

どうやるかだけ知りたい人は飛ばしてください。

cpは(ローカル|S3)から(ローカル|S3)へオブジェクトをコピーします。
一方、syncは再帰的に指定したディレクトリからS3へオブジェクトをコピーします。
syncは差分バックアップにも対応しています。
したがって、特定ディレクトリのバックアップを取りたいという場合にはsyncを使ったほうが良いです。

バックアップの実装

まずはIDCFのWeb UIからオブジェクトストレージにAPIユーザを追加します。
APIキーとSecretキーは控えておきましょう。

その後、IDCFのWeb UIからバケットを作ります。
今回はcontents-backupというバケットを作成しました。

次にサーバ側での操作です。
まずはawscliを導入します。
pipが入っていなければ入れてください。

# pip install awscli

これでawscliが入ります。
次にバックアップを実行するユーザで下記コマンドを実行し
「AWS Access Key」と「AWS Secret Access Key」の入力を促されますので
先ほど控えたAPIキーとSecretキーを入れます。
その後の質問は特に答えずEnterで問題ないです。

$ aws configure
AWS Access Key ID [None]: myAPIKey
AWS Secret Access Key [None]: mySecretKey

設定がうまくいっているか確かめるために下記コマンドを実行します。

$ aws s3 --endpoint-url https://ds.jp-east.idcfcloud.com ls
2017-04-16 17:31:15 contents-backup

作成したバケット(この例だとcontents-backup)が表示されれば正常です。
"--endpoint-url"オプションはAPIのエンドポイントを指定します。
今回はIDCFクラウドの東日本リージョンを利用しているのでこのようなURLです。

次に実際にバックアップをしてみましょう。

$ aws --endpoint-url https://ds.jp-east.idcfcloud.com s3 sync contents/ s3://contents-backup/ --exact-timestamps --delete

"--exact-timestamps"オプションはタイムスタンプをみてアップロードするオプションです。
"--delete"オプションはバックアップ元にないファイルがバックアップ先にあれば削除するオプションです。
したがって、この例では下記の例では"contents/"というディレクトリを"contents-backup"バケットにタイムスタンプをみて更新のあったものだけバックアップして"contents/"にないファイルはcontents-backupから削除しています。

あとはこれをcron等に仕込めば自動バックアップの完成です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2