稼働中の WordPress サイトの DB とソース一式をバックアップして一つの zip ファイルを作成するプラグイン Total Backup をリリースします。
まだまだ荒削りなプラグインなので、これからモリモリと機能追加していく予定。
実はこれ、め組さんの仕事の一環で作ってるプラグインの副産物です。
ちょっと色々な環境で試してみて欲しいので、こいつだけ切り出して単体プラグインとしてリリースします。
# 一般公開については、め組さんから OK 頂いてます。太っ腹!
テストは CentOS 上の PHP 5.2.17, PHP 5.3.8, Windows XP 上の PHP 5.2.12 で行っています。
WordPress 3.2.1 でしかテストしてないので、それ以下のバージョンでの動作確認取れた人は報告お願いします。
ダウンロード
total-backup.zip
WordPress > Total Backup « WordPress Plugins
公式プラグインディレクトリで公開しました。
使い方
option ページでは、現在は以下の二つの項目が設定できます。
- Archive Path: バックアップファイルを保存しておくディレクトリ
- Excluded Dir: バックアップ対象外のディレクトリ
「Archive Path」は web 経由でアクセスできないディレクトリ(ただし、Web サーバが書き込み権限を持っているディレクトリ)を指定してください。
デフォルトでは sys_get_temp_dir() で取得される一時ファイル用のディレクトリがセットされています。
「Excluded Dir」は、バックアップ対象外にしたいディレクトリを指定してください。
デフォルトでは、以下の4ディレクトリが指定されています。
- wp-content/cache/ : WP Super Cache とかが使うキャッシュファイル置き場
- wp-content/tmp/ : DB Cache Reloaded Fix とかが使うキャッシュファイル置き場
- wp-content/upgrade/ : コアやテーマ・プラグインをアップデートする際に WordPress が使う一時ファイル置き場
- wp-content/uploads/ : 画像ファイル等がアップロードされているディレクトリ
バックアップ画面では、「Site Backup」ボタンをクリックするとバックアップを開始します。
バックアップ中は、サイトがメンテナンスモードに移行します。
問題なければ、ボタンの脇に が表示され、下の「Backup Files」欄にリストアップされます。
問題が有った場合は、ボタンの脇に が表示されます。
ちょっと処理が重いので、ファイル数が多かったりするとタイムアウトでエラーになってしまうかもしれません。
そんな時は Web サーバや PHP のタイムアウト設定を見直してみてください。
# この辺は、なんとかしないとですね。
バックアップファイルは「Backup Files」欄のリンクからダウンロードできます。
また、古いバックアップファイルを消したいときは、チェックボックスにチェックを入れて「Delete」ボタンをクリックしてください。
DB のバックアップファイルは、zip ファイルの中に dump.yyyymmdd.xxx.sql というファイル(例: dump.20110927.330.sql) として含まれます。
phpMyAdmin や mysql コマンド等で復元してください。
今後の展開
落ち着いてきたら、以下の機能追加を考えてます。
- 定期的にバックグラウンドで、バックアップを行う
- 定期的に古いバックアップファイルを削除する
- コア・テーマ・プラグインのアップデート前に自動的にバックアップを行う
他にも何か要望があれば、お教えください。
はじめまして。便利なプラグインをありがとうございます。
あまりないケースかと思いますが、バックアップがタイムアウトしてしまった際に self::EXCLUSION_KEY の transient が TRUE のままになってしまい、バックアップできなくなってしまいます。
以上、ご報告でした。
空前のバックアップブームに乗っかりプラグイン使わせていただきました!
シンプルでサクッとバックアップできて非常に助かりました!
バックグラウンド定期的にバックアップをDropboxに保存してくれる機能があれば死ぬまで使い続けると思います。
気が向いた際にでも、実装しただけますと幸いです!
TotalBackup使用させていただいております。便利なプラグインを公開して下さり、感謝いたします。
ただ、データベースをバックアップしたSQLのファイルですが、これをphpMyAdminでリカバリしようとすると、いくつかのテーブルでプライマリキー違反が発生します。
何故だろうと思ってファイルを除くと、いくつかのテーブルで、INSERTのかたまりの中に重複する同一レコードがいくつもありました。
プラグインのソースを拝見したところ、class-wp-backuper.phpの681~720行目で、実際のテーブルをINSERT文に変換しているようですが、LIMITで100件ずつ分割しているのですね。
で、この時に、SELECT文にORDER BYがないために、切り取った100件の並び順が不定になり、何度も同じレコードがLIMITで切り取られる可能性があるからだと思います。
(この動作は、MySQLのバージョンに依存すると思いますが・・・)
老婆心ながら、テーブルごとのプライマリキーを判断してORDER BYに埋め込むか、LIMITを外すかしないと、リカバリで問題が起こる人が続出すると思います。
私の場合は手っ取り早く、LIMITを外して利用させていただいております。
とりあえずご報告までですが、ご参考にでもなれば。長文失礼しました。
ご指摘ありがとうございます!
次期バージョンで、プライマリキーを判断してORDER BYに埋め込むようにします!
WORDPRESS 3.2.1 を使っていますがバックアップできません。
IE8で実行するとステータスバーに「実行しましたが、ページでエラーが発生しました。」と表示されバックアップできないようです。
IEの設定がまずいのかな?
こんちは。
違うサーバーにファイルを保存出来ると嬉しかったりします。もしくはオンラインストレージへとか。
あー、それ良いっすね。
Dropbox / Amazon S3 / FTP で別サーバに転送できるオプションとか付けたいすな。
ピンバック: WordPressのバックアップを行うTotal Backup | あたしンちのおとうさんの独り言