【図解】rsyncを使ってWEBデータを外部バックアップする方法

概要

全体像

全体の構成は以下になります。

作業内容

・パスワードなしでバックアップ元にアクセスする
・データを保存するディレクトリを作成
・データベースをダンプする
・rsyncを使ってデータをバックアップする
・cronに設定する

パスワードなしでバックアップ元にアクセスする【作業:バックアップ先サーバ】

バックアップ先のサーバにログインします。のちにcronに設定するのでバックアップ元にパスワードなしでアクセスできるようにしておきます。接続方法はSSHになるので秘密鍵と公開鍵のペアを作成し公開鍵をバックアップ元のサーバに渡します。詳しくは以下のURLを参照してください。

sshコマンドを使ってサーバ元にアクセスできれば問題ないです。

ssh hogehoge.com

データを保存するディレクトリを作成【作業:バックアップ先サーバ】

バックアップ先のサーバにログインしバックアップデータを保存するための受け皿を作成します。mkdirコマンドを使って作成します。

mkdir /backup

データベースをダンプする【作業:バックアップ元サーバ】

バックアップ元にログインしMySQLのデータをダンプします。定期的にバックアップを取りたいのでダンプコマンドをcron設定します。

・型

/usr/bin/mysqldump -u [ユーザー名] -p[パスワード] [データベース名] > [出力先ファイル名]l

以下でコマンドを使ってダンプします。保存先はバックアップするディレクト内に保存します。必ずデータは外部からアクセスできない非公開部分に保存してください。

/usr/bin/mysqldump -u user -pPassword db_name > /home/hogehoge/www/hogehoge.com/db_name.dump.sql

・cronの設定(毎日午前1時にダンプする設定)

0 1 * * * /usr/bin/mysqldump -u user -pPassword db_name > /home/hogehoge/www/hogehoge.com/db_name.dump.sql

rsyncを使ってデータをバックアップする【作業:バックアップ先サーバ】

rsyncは特定の場所のデータをほかの指定の場所にデータを転送するコマンドです。cpやscpなどのコピーコマンドと違って差分を計算したり同期保存ができたりします。ほかにもオプションが充実しておりバックアップに適したコマンドになります。このコマンドを使ってデータをバックアップします。

・型

/usr/bin/rsync -avhz -e ssh --delete コピー元サーバ:コピー元ディレクトリパス コピー先ディレクトリパス

・今回使うオプション説明

-a archiveの頭文字。ディレクトリを再帰的にコピ、パーミッションを保持、所有者を保持などできるだけ同一状態で保存する。
-v verbose(冗長)の頭文字。コピーしているファイル名やバイト数などの転送情報を表示
-h humanの頭文字。ファイルサイズのbytesをKやMで出力。
-z  --compress  データ転送時に圧縮
--delete 転送元に存在しないファイルは削除
-e ssh SSHで接続
--exclude= 除外ファイル・ディレクトリの指定(正規表現)。

テストもかねてrsyncコマンドでバックアップします。

/usr/bin/rsync -avhz -e ssh --delete hogehoge.com:/home/hogehoge/www/hogehoge.com/ /backup/

問題なくバックアップできればテスト終了です。

cronに設定する【作業:バックアップ先サーバ】

自動でバックアップするためにcronを設定します。

・cronの設定(毎日午前2時にバックアップする設定)

0 2 * * * /usr/bin/rsync -avhz -e ssh --delete hogehoge.com:/home/hogehoge/www/hogehoge.com/ /backup/

シェアする

  • このエントリーをはてなブックマークに追加

フォローする