サーバーにある Web サイトのファイルや MySQL を rsync を使った SSH 経由で自分のパソコンに自動バックアップする方法

皆さんは WordPress などの CMS でサイトを運用する際、バックアップはどのように取っていますか。MySQL(データベース)に関しては、バックアップするプラグインなどがありますので、それを使えば良いのですが、画像アップロード機能がある場合、ブラウザからアップロードした画像ファイルのバックアップを忘れがちです。

※ WordPress にはテーマファイルや画像ファイルをバックアップしてくれるプラグインがあります。今回の記事は WordPress に限った話ではありませんので、その点については深く触れませんのでご了承ください。

rsync + SSH で簡単バックアップ

1
rsync -vhHpltzru --delete -e ssh hoge@192.168.0.1:/var/www/wp-content/uploads/ ~/backup/image

以上のように SSH の rsync を使ってローカルにバックアップを取ることができます。これは WordPress の画像ディレクトリのバックアップとなります。cron などを使用して定期バックアップをとっても構いませんし、心配な方は手動で実行する方法もあります。

ちなみに FTPS などを使ってファイルをダウンロードするのとは違って、rsync は足りないファイルだけをダウンロードしてくれます。初回は結構時間がかかりますが、次回からは新しく追加された画像ファイルだけをダウンロードしてくるので便利です。

MySQL のバックアップにも最適

MySQL ファイルを mysqldump で自動バックアップを取ってサーバーに貯めておき、定期的に先程のコードでローカルにダウンロードすると便利です。また、–remove-source-files という引数を使えば、rsync でファイルをダウンロードした後にサーバーから転送が終わったファイルを削除することができます。

通常 VPS などはサーバーの容量があまりありません。mysqldump で毎日バックアップを溜めても構いませんが、少ないサーバー容量を食いつぶすのは勿体無いので、大容量のローカルの HDD にバックアップを取るのは良いアイディアかなと思っています。

バックアップ用 VPS を使っても OK


また、この方法はローカルだけではなく、バックアップ VPS を用意して実行する方法もあります。最近ではさくらの VPS が低価格で大容量になりましたので、これを借りて、この VPS で自動でバックアップを取る方法もあります。

おわりに

共用でも SSH が使えて、さらに rsync が使えるようになっていればこの方法が使えます。もちろん使えないサーバーもありますので、この方法を試す前に一度 SSH でサーバーにログインして rsync が使えるかチェックしてみましょう。

ちなみにダウンロードするファイルが多いとサーバーに負担(通信回線という表現が正しいのでしょうか)をかけるので、深夜など一番利用者が少ない時間を狙って自動実行するようにすると良いです。VPS を使った場合、深夜に cron を設定しておけばバックアップを取れます。

コメント

コメントは受け付けていません。