バックアップデータ保管にさくらのオブジェクトストレージを使ってみる

要は備忘録。

これまで初代妖狐鯖として使っていたVPSサーバーをOS入れ替えて余生として現妖狐鯖のバックアップデータ保管庫としていました。
が、現在進行中のリプレース作業構成設計中に「バックアップのストレージ用途だけで年2万強1はオーバースペックだよな…」と思うようになり、色々考えた結果Let’s encryptのDNS-01認証の構築ついででさくらのオブジェクトストレージを使おうという事になりました。

  1. さくらのVPS 2Gプラン 東京リージョンに設置のため ↩︎

環境の構築

まずはさくらのクラウドサービスでバックアップ保管用のオブジェクトストレージ バケットと、そのアクセス用パーミッション アクセスキーを作成します。
このあたりはマニュアルどおりにやるだけなので手順は省略。

続けてAWSコマンドラインインターフェース(AWS CLI)をインストールします。
さくらのオブジェクトストレージはAmazon S3 API互換APIが使用可能となっており、一部操作を除いてAWS CLIを使うことができます。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

バックアップ同期に使用するアカウント(root)で設定ファイルの作成をします。

# aws configure
AWS Access Key ID [None]: (パーミッションのアクセスID)
AWS Secret Access Key [None]: (パーミッションのアクセスシークレットキー)
Default region name [None]: (オブジェクトストレージのリージョン名)
Default output format [None]: json

試しにオブジェクトストレージにアクセスします。
この際、AWS CLIは必ずエンドポイントURL指定オプションを入れます。あらかじめ ~.aws/configendpoint_urlを指定することでオプション値の省略も可能です。

# aws --endpoint-url=https://<ENDPOINT FQDN> s3 ls s3://<BUKET NAME>/

エラーもなくバケットにあるファイルやフォルダーが表示されれば成功です。

バックアップデータの同期

AWS CLIを使用してローカルのバックアップデータをオブジェクトストレージに同期保存させます。必ず --dryrun オプションを付けて同期テストを行い動作確認をしましょう。

# aws -endpoint-url=https://<ENDPOINT FQDN> s3 sync --delete <BACKUP DIRECTORY for LOCAL> s3://<BUKET NAME>/<BACKUP DIRECTORY>/

あとはこれを crontab 等で定期的に実行させればOK。
妖狐鯖管理人は変態なので、同期処理をするだけのスクリプトと、それを実行する制御スクリプトの2本立ててで処理をしています。