rcloneとは
rcloneは、cloud storageに対して同期を行うrsyncのようなツールです。対象となるcloud storageは、たくさんあり、Amazon S3、Dropbox、Google Drive、One Driveなどのメジャーなものや、OpenStack SwiftやCephといったOpenSourceのオブジェクトストレージにも対応しています。 使用方法もrsyncに似ていますが、rsyncより簡単かもしれません。rcloneのインストール
KUSANAGIにrcloneを入れるには、https://rclone.org て提供している rpmを使用します。root権限で以下のコマンドを実行することでインストールできます。yum install -y https://downloads.rclone.org/rclone-current-linux-amd64.rpm
対象ストレージの選択
rcloneで対応しているストレージはいくつかありますが、今回はAWS S3にバックアップしてみましょう。 rclone config で対象ストレージを登録します。詳細は公式ドキュメントのAWS S3登録方法を参照ください。AWS S3を使用するためには、IAMを使用して予めAWS S3アクセス権限のみを持ったユーザを作成し、そのクレデンシャルを取得しましょう。 その後、sudo su – kusanagi でkusanagiユーザになってから、rclone config を使用してconfigを作成します。「n」で新しいconfigを作成します。ストレージ名には、「s3」と入力しましたが、任意の名前を指定してください。$ rclone config Current remotes: e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> n name> s3その後、「Type of storage to configure.」を聞かれるので「s3」と入力し、「AWS」を指定します。予めAWSのクレデンシャルを入手しているので、1を入力おg、access_key_idとsecret_access_key を入力します。
Storage> s3 (略) provider> AWS (略) env_auth> 1 AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). access_key_id> XXXXXXXXXXXXXXXXXXXXXX AWS Secret Access Key (password) Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). secret_access_key> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXその後、リージョンなど聞かれますが、迷ったらTokyoリージョン(ap-northeast-1)を指定してください。「Edit advanced config? (y/n)」を聞かれますが、迷ったら「n」を押して大丈夫だと思います。
Remote config --------------------
[s3]
type = s3 provider = AWS env_auth = false access_key_id = XXXXXXXXXXXXXXXXXX secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXX region = ap-northeast-1 location_constraint = ap-northeast-1 acl = private server_side_encryption = AES256 sse_kms_key_id = arn:aws:kms:us-east-1:*storage_class = STANDARD
y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y コンフィグ内容を確認するので、Y と答えましょう。 以下のコマンドで、接続できるか確認できます。何もファイルを作成していないので、空のディレクトリです。$ rclone tree s3: / 0 directories, 0 files
WordPressのバックアップ
kusanagiユーザで、プロビジョンしたWordPressのホームディレクトリDocumentRootに移動します。そこで、以下のコマンドを実行します。$ cd $HOME/kusanagi/DocumentRoot $ /usr/local/bin/wp db export ../db-$(date +%Y%m%d-%H%M%S%z).sql Success: Exported to '../db-20190209-161649+0900.sql'. $ rclone copy $HOME/kusanagi s3:kusanagi/ --delete-excluded --use-server-modtime $ rm ../db-*.sql最初のwp db exportコマンドでDBのバックアップファイルを作成し、rclone copyto で、s3にファイルをバックアップします。最後に、DBのバックアップファイルを削除します。 初回は全ファイルコピーすることになりますが、2回目以降は差分だけファイルコピーされます。このバックアップを定期的に行いたければ、一連のコマンドをkusangiユーザのcronに設定してください。下記の例では1時30分に実施していますが、任意の時間を指定してください。
30 1 * * * (cd $HOME/kusanagi/DocumentRoot && /usr/local/bin/wp db export ../db-$(date +%Y%m%d-%H%M%S%z).sql && rclone copy $HOME/kusanagi s3:kusanagi/ && rm ../db-*.sql )最後に、バックアップできたことを確認します。
$ rclone lsd s3:kusanagi | head 1574675 db-20190209-161649+0900.sql 3172 wp-config.php 1539 tools/bcache.clear.php 502 settings/kusanagi-default.ini 584 DocumentRoot/.htaccess 418 DocumentRoot/index.php 19935 DocumentRoot/license.txt 10305 DocumentRoot/readme.html 6878 DocumentRoot/wp-activate.php 364 DocumentRoot/wp-blog-header.phpこれでWordPressのバックアップを定期的に行うことが出来ます。ただし、この方法ではDBの以外の古いファイルの内容を上書きしてしまいます。そのため、BackWPupプラグインなどを使用してuploads以下にバックアップファイルを作成することで、古いファイルの保管を行うことが出来ますので、うまく活用しましょう。 rcloneは、S3以外のクラウドストレージに対応していますので、ご自身の要件によって変更してください。 では、次回をお楽しみに。