経緯
普段、HPに使っているwordpressのバックアップは、プラグインでバックアップファイルを自動作成するよう設定しています。使用しているプラグインはBackWPupというもの。
これは指定フォルダにバックアップファイルを作成してくれ、定期実行も設定できる優れものなのですが、クラウドストレージへのアップも自動化したいと考えていました。
環境
GCP
- google compute engine VM
- Bitnami wordpress + apache stack
- google cloud storage
手順
インスタンスのアクセス権を書き込みできるように変更
デフォルトではこのGCPのインスタンスはGCSへの書き込みアクセス許可がありません
このため、アクセス権を変更します。
- インスタンスを停止
- インスタンスを編集、ストレージアクセス権を「読み取り/書き込み」に変更
- インスタンスを起動
フォルダの変更検知をしてアップするよう設定
フォルダ変更検知にinotifyを使いたいのでapt-get install します
$ sudo apt-get install -y inotify-tools
新規ファイルの作成の変更検知
- 新規作成だけでいいので、-e CREATE オプション
- 継続で検知させるため -m オプション
$ inotifywait -m -e CREATE /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads/backwpup-85ccd3-backups
GCSへのバックアップファイルのコピー
- 既にあるのであればアップしないよう-n オプション
$ gsutil cp -n /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads/backwpup-85ccd3-backups/*.zip gs://dist-bucket/wp/
上記コマンドを合成
- ログアウトしても継続するようnohup &
- パイプで渡す際にパスを調整する必要があるので --format "%w%f"
- 複数同時に作られてもいいよう while (
$ nohup sudo inotifywait -e CREATE --format "%w%f" -m /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads/ba
ckwpup-85ccd3-backups | while read -r file; do gsutil cp -n $file gs://dist-bucket/wp/; done &