WordPress のファイルバックアップ

WordPress + twitter なモブログをする方も増えてきて、ますます重要になる WordPress のファイルバックアップ。

コアとかプラグイン、テーマはサーバを直接修正していない限りローカル PC のどこかに残っていそうですが、wp-content/uploads とかの画像ファイルはオリジナルがなくなってしまうことも多そうです。

WordPress のブログデータの構成要素は、MySQL のデータと画像などのサイトにアップロードファイルとなりますが、ここは後者のファイルのバックアップお話。 MySQL のバックアップについては以前かいた以下の記事が参考になるかもしれません。

hiromasa.another :o) » Blog Archive » WordPress の MySQL バックアップ

てなわけで、大抵のサーバは ssh の接続がサポートされていますので MySQL のバックアップ関連はこちらで操作するといいかもしれません。 まずは手動のシェル起動によるバックアップ、これがうまくいったら cron にこのシェルを登録してみます。

というわけで、お手軽にファイルもバックアップしたいよね、ということで UNIX の rsync + SSH をつかったバックアップを紹介してみます。 Windows でも cygwin とか使うとできるかもしれません。 🙂

rsync というのは、送り元先のファイルリストを確認して差分でシンクロしてくれる便利なアプリケーションです。

rsync – Wikipedia

rsync は、UNIXシステムにおいて、差分符号化を使ってデータ転送量を最小化し、遠隔地間のファイルディレクトリ同期を行うアプリケーションソフトウェアである。類似のプログラムやプロトコルにはない rsync 独自の特徴として、ミラーサイトとの転送が双方向に高々1回で済む点がある。rsync はディレクトリ内容を表示し、ディレクトリやファイルをコピーできる。オプションでデータ圧縮再帰も指定可能。

WordPress をレンタルサーバにインストールしているとして、、rsync が使える条件は、SSH が接続できることとサーバ側に rsync が入っていることです。 ぼくが使っているコアサーバではOKでした。(後述の siroica さんの記事によると XREA も大丈夫そうです)

また、バックアップ先のクライアントの PC でも rsync と SSH が使える必要があります。 Linux とか BSD とか、たぶん Mac OS X もできるのだと思います。 Windows でも cygwin とかつかうことでできそうです。

とりあえず、コアサバに SSH できる Ubuntu がお手元にあるとすると以下の感じでいけます。

先にファイルを転送する先の current というディレクトリをつくっています。(この名前はなんでもかまいません)

hiromasa@hiromasa-cube:~$ mkdir current
hiromasa@hiromasa-cube:~$ rsync -avz --delete [ユーザ名]@[サーバ名]:[バックアップディレクトリパス]/ ./current/
 
[実際のコマンド(参考)]
hiromasa@hiromasa-cube:~$ rsync -avz --delete another@s8.coreserver.jp:/virtual/another/public_html/ ./current/

rsync [オプション] [送り元] [送り先] が基本的な使い方です。 コアサバ –> ローカル PC です。

逆を指定すると悲惨なことになりますので十分注意してください。

特に –-delete という「消したファイルを消す」というオプションをつけている場合に、空ディレクトリを送り元にしてしまうと、送り先が空っぽになって真っ青になります。。

地雷だらけのrsyncを理解する。 – こせきの技術日記

–deleteは、DESTのディレクトリ指定を間違えると悲惨なことになる。SRCのスラッシュの有無も重要。

同期という技術の特性上、危険なパターンもあるので、よく理解した上で行ってください。

ここではコアサバの public_html 配下をローカルの ./current とういうディレクトリにもってきています。 wp-content/uploads などバックアップしたいところをピンポイントを指定するのも良い方法でしょう。

rsync01

実行するとパスワードをきいてきますので、SSH のログインパスワードを入力します。

で、こんな感じでドヴァーとゴールドな感じでファイルが転送されてきます。(ファイル数が多いときは転送量に注意してください)

ファイル数が多いと時間がかかり、またコアサバの場合途中で切断されてしまう場合があるようですが、そのときは再試行してください。 差分でとってきますので、そのうち全部終わります。

sent 20 bytes  received 1158377 bytes  210617.64 bytes/sec
total size is 549995346  speedup is 474.79

こんなのがでたら転送完了です。

current ディレクトリ下をみてみるとファイルがきているのが分かると思います。 尚、この下のファイルは直接修正などしないほうが良いでしょう。(編集したいときは別な場所にコピーして使いましょう)

で、ある時期がたったらまた同じディレクトリ(current)があるところで rsync コマンドをうてば何も考えずに更新差分のみ取得できます。 この辺が FTP ではできない有利なところです。 🙂 backup.sh などのシェルスクリプトに rsync コマンドを記述しておけば間違えも少なくてよさそうです。

backup.sh

#!/bin/sh
 
rsync -avz --delete another@s8.coreserver.jp:/virtual/another/public_html/ ./current/

取得した current ディレクトリは圧縮して別途保存しておくと履歴バックアップになりますね。

なんてことをやっていると、cron で全部自動でやりたいなぁという欲求がふつふつと。 ということで、siroica さんが rsync + mysqldump + pdumpfs + cron でファイルとMySQL ダンプの自動履歴バックアップをする記事を書かれています!

XREAのサーバーに設置したWordPressを自動バックアップする環境を整える – SharpLab.

みんな大好きWordPress。だからこそ、データが飛んでしまうのはなんとしても避けたいもの。そのためには、常日頃からデータのバックアップを取っておくのが重要なのですが、いちいち手動でバックアップするのは手間なので、なるべく自動化しておきたいものです。バックアップしたいのは次の二つ:アップロードしたファイルとMySQLのダンプ。

玄箱などいえにローカルにサーバがある方は自動化にチャレンジしてみると良いかもしれません。 🙂

WordPress のファイルバックアップ」への1件のフィードバック

  1. ピンバック: Tweets that mention hiromasa.another :o) » Blog Archive » WordPress のファイルバックアップ -- Topsy.com

コメントを残す