*バックアップのお作法(rsync)
rsyncコマンド
$rsync -rlvpt --delete /misc/copyoriginaldirectory /home/copydestinationdirectory
形式:rsync (オプション) (コピー元) (コピー先)
/etc/crontabの追加
00 2 * * * ユーザーID(neuroとか) /usr/bin/rsync -rlvpt --delete /misc/copyoriginaldirectory /home/copydestinationdirectory
毎日午前2時にrsyncでバックアップ
引用元
http://oku.edu.mie-u.ac.jp/~okumura/networking/rsync.html
rsync が一般ユーザで -a オプションを付けたとき次のようなメッセージを出すことがあります:
rsync error: partial transfer (code 23) at main.c(925)
これはファイルの owner が違っていて変更できなかったといったことのようです。
-a は -rlptgoD と等価ですが一般ユーザでは goD オプションは一般に使えないので,-a ではなく -rlpt を指定すればいいのだろうと思います。
rsyncで自動バックアップ
rsyncで自動バックアップ
サーバーを運営していく上で重要なのがバックアップだ。パソコンの部品の中でもHDDはもっとも壊れやすく、サーバーの重要なデータが失われてし まうことがある。実際に自分もHDDのクラッシュを経験した。何か調子が悪いなと思いつつ動かし続けていたサーバーを、ある日再起動してみると途中でス トップしてしまう。シングルユーザーモードで起動しても、fsckが動いてくれない。仕方なく新しいHDDに交換したが、別のパソコンにデータをバック アップしていたので被害を受けずにすんだ。
サーバーを運営していく上で重要なのがバックアップだ。パソコンの部品の中でもHDDはもっとも壊れやすく、サーバーの重要なデータが失われてし まうことがある。実際に自分もHDDのクラッシュを経験した。何か調子が悪いなと思いつつ動かし続けていたサーバーを、ある日再起動してみると途中でス トップしてしまう。シングルユーザーモードで起動しても、fsckが動いてくれない。仕方なく新しいHDDに交換したが、別のパソコンにデータをバック アップしていたので被害を受けずにすんだ。
また、あやまってデータを消してしまうこともある。これも体験談だが、WindowsのSSHクライアントからサーバーに接続して作業していたときのこ と。電話が入ってきて別の仕事に注意がいったとき、まちがえてクリップボードの中身をSSHクライアントにペーストしてしまったようなのだ。クリップボー ドの中身がコマンドとしてLinuxで実行されていく。まあ大部分は「command not found」となるけれど、何がどうなったのかホームディ レクトリの中のファイルがごっそりと消えていた。rmとかそういう文字列があったのかもしれない。これもバックアップのおかげですぐに復旧できた。
また、あやまってデータを消してしまうこともある。これも体験談だが、WindowsのSSHクライアントからサーバーに接続して作業していたときのこ と。電話が入ってきて別の仕事に注意がいったとき、まちがえてクリップボードの中身をSSHクライアントにペーストしてしまったようなのだ。クリップボー ドの中身がコマンドとしてLinuxで実行されていく。まあ大部分は「command not found」となるけれど、何がどうなったのかホームディ レクトリの中のファイルがごっそりと消えていた。rmとかそういう文字列があったのかもしれない。これもバックアップのおかげですぐに復旧できた。
最初のうちはftpでパソコンの側にバックアップをとっていたのだが、これでは面倒でついついバックアップがおろそかになる。そこでバックアップを自動的に行うことを考えた。使うコマンドは「rsync」である。
最初のうちはftpでパソコンの側にバックアップをとっていたのだが、これでは面倒でついついバックアップがおろそかになる。そこでバックアップを自動的に行うことを考えた。使うコマンドは「rsync」である。
rsyncの使い方
rsyncの使い方
rsyncはWindowsのxcopyコマンドに似ていて、ディレクトリの構造をたもったままコピーができる。たとえば、/homeディレクト リ以下をまとめてコピーするなんてことが簡単にできるわけだ。2回目以降のコピーでは更新や追加されたファイルだけがコピーされるので、バックアップが短 時間で終わる。さらに削除したファイルはバックアップ先でも削除されるため、バックアップ元とバックアップ先の内容をまったく同じに保つことも可能だ。
rsyncはWindowsのxcopyコマンドに似ていて、ディレクトリの構造をたもったままコピーができる。たとえば、/homeディレクト リ以下をまとめてコピーするなんてことが簡単にできるわけだ。2回目以降のコピーでは更新や追加されたファイルだけがコピーされるので、バックアップが短 時間で終わる。さらに削除したファイルはバックアップ先でも削除されるため、バックアップ元とバックアップ先の内容をまったく同じに保つことも可能だ。
本当は別のHDDやマシンにバックアップをとるべきだが、まずは同一HDDの別のディレクトリにバックアップをとってみよう。HDDの故障には対 処できなくても、誤ってファイルを削除したときなどは役に立つ。ここでは/var/backupディレクトリを作成し、その中に/homeディレクトリ以 下の内容をまるごとコピーしてみる。打ち込むコマンドは次の2行だ。
本当は別のHDDやマシンにバックアップをとるべきだが、まずは同一HDDの別のディレクトリにバックアップをとってみよう。HDDの故障には対 処できなくても、誤ってファイルを削除したときなどは役に立つ。ここでは/var/backupディレクトリを作成し、その中に/homeディレクトリ以 下の内容をまるごとコピーしてみる。打ち込むコマンドは次の2行だ。
# mkdir /var/backup
# mkdir /var/backup
# rsync -a --delete /home /var/backup
# rsync -a --delete /home /var/backup
rsyncの書式は「rsync (オプション) (コピー元) (コピー先)」となっている。指定できるオプションは次の表のようになっている。「-a --delete」はコピー元とコピー先を同期させたいときに使うオプションだ。
rsyncの書式は「rsync (オプション) (コピー元) (コピー先)」となっている。指定できるオプションは次の表のようになっている。「-a --delete」はコピー元とコピー先を同期させたいときに使うオプションだ。
rsyncを自動実行
rsyncを自動実行
うまくバックアップができることを確認したら、cronで自動実行させるように設定しよう。/etc/crontabにコマンドを追加する。次の例は毎日午前3時10分にバックアップを自動実行させるときの設定だ。
うまくバックアップができることを確認したら、cronで自動実行させるように設定しよう。/etc/crontabにコマンドを追加する。次の例は毎日午前3時10分にバックアップを自動実行させるときの設定だ。
# run-parts
# run-parts
01 * * * * root run-parts /etc/cron.hourly
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
42 4 1 * * root run-parts /etc/cron.monthly
10 3 * * * root /usr/bin/rsync -a --delete /home/ /var/backup
10 3 * * * root /usr/bin/rsync -a --delete /home/ /var/backup
[source] で指定するディレクトリ名の最後にスラッシュを付けるか付けないかhttp://www.maruko2.com/mw/rsync_%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%90%8C%E6%9C%9F%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%89
[source] で指定するディレクトリ名の最後にスラッシュを付けるか付けないかhttp://www.maruko2.com/mw/rsync_%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%90%8C%E6%9C%9F%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%89
[source] で指定するディレクトリ名の最後にスラッシュを付けた場合、ディレクトリ内のファイルをコピーするが、 スラッシュを付けない場合は、ディレクトリをコピーする動作になる。
[dest] では、指定するディレクトリ名の最後にスラッシュを付けても付けなくても同じ。