仕事柄「WordPress (ワードプレス) 保守管理サービス – シングスマネジメント」でバックアップ体制をつくったり。
プラグインでバックアップを試してみたり。
そうこうしているうちに WordPress サイトをバックアップするスクリプトをつくっていました。
WordPressバックアップスクリプト「WP Offsite Backup」は、WordPressのファイルやデータベースのデータを Amazon S3 など外部ストレージに遠隔バックアップするスクリプトです。
使い方は簡単
あらかじめデフォルトの設定をして
bash wp-offsite-backup
とコマンドを走らせるだけ。手動でバックアップします。
また、自動で走らせるには、Cron でスケジュールを設定するだけ。
MAILTO=hoge@example.com
20 0 * * * bash /path/to/wp-offsite-backup/wp-offsite-backup
とすると、毎日0時20分にバックアップします。
WordPressバックアップスクリプト「WP Offsite Backup」の特長
- ワードプレスのファイルとデータベースをバックアップ
- ストレージサービスにバックアップファイルを保存 (今のところ Amazon S3 だけに対応)
- Cron で自動バックアップ
- 設定のカスタマイズでいろいろなバックアップができます
- バックアップファイルのローテーション
- ログ履歴の管理
サポートしているストレージサービスは、いまのところ Amazon S3 だけですが、
おいおい Google Cloud Storage や Microsoft Azure Storage などにも対応してみたいと思います。
基本設計は、依存関係の解決やメンテナンスを極力減らすため、
WordPress のプラグイン、WP-CLI などコマンドラインツールに依存せず、
Linux コマンドとストレージサービスのコマンドラインツールだけで済ませるようにしました。
またデータをローカルサーバに残さないようにセキュリティに配慮してみました。
使い方もデフォルトの設定をしたら、コマンドを走らせるだけでバックアップができるを目指してみました。
WordPressバックアップスクリプト「WP Offsite Backup」を導入するには、
いまのところ AWS Command Line Interface などストレージサービスのコマンドラインツールをインストールする必要があるので、
root 権限を持っている VPS やクラウドサーバーに導入に限られてしまいますが、
レンタルサーバーでも動かないかなぁと模索中です。
設定のカスタマイズでバックアップいろいろ
インストールや設定の仕方は、ドキュメントの「Getting Started」を参考にどうぞ。
もちろんバックアップのカスタマイズもできます。
カスタマイズした設定に名前を付けるだけ。
設定も保存して複数持てるので、
WordPressファイルをフィルタリングしたり、
データベースだけバックアップということも。
一つのサーバに複数の WordPress サイトがあっても、
それぞれのウェブサイト用に設定を切り替えてバックアップできます。
その場合のコマンドは、カスタマイズした設定を渡すだけ。
bash wp-offsite-backup customized-config
Cron で自動バックアップも
環境変数 WP_OFFSITE_BACKUP_CONFIG
にカスタマイズした設定を渡すだけ。
MAILTO=hoge@example.com
20 0 * * * WP_OFFSITE_BACKUP_CONFIG=customized-config bash /path/to/wp-offsite-backup/wp-offsite-backup
設定のサンプルもあるので参考にしてみてください。
- db-only-backup-config (データベースだけバックアップ)
- full-backup-config (フルバックアップ)
- partial-backup-config (wp-content とデータベースだけバックアップ)
- wp-content-only-backup-config (wp-content だけバックアップ)
バックアップファイルのローテーションで費用負担を減らす
ストレージサービスをバックアップに利用すると、
いつの間にかバックアップファイルがたくさんできてしまします。
気が付かないでいると、ムダな費用を払うこともあると思います。
バックアップの性格上、何かがあったときの復旧に必要な直近のバックアップファイルだけあれば、
充分済むことが大半だと思います。
ファイルの整理をするには、Amazon S3 だと、ライフサイクルで有効期限を決めて、
その有効期限が切れたならば、ファイルを削除するということを
ストレージサービス側で設定する必要があります。
これはこれで便利なのですが、
できたらファイル数で制限してファイルのローテーションをしたいと思い、実装してみました。
ストレージサービスの課金は、ディスク使用量によって決まるところが大半なので、
ファイルサイズが大容量になりやすいバックアップファイルにとってより大切なこと。
バックアップファイルのファイル数で制限することで費用をコントロールしながらバックアップシステムが構築できます。
是非WordPressバックアップスクリプト「WP Offsite Backup」を試してみてね。
ドキュメント: wp-offsite-backup - GitHub