今ならXeonも搭載可能なPCサーバー「PowerEdge SC440」が2万円台から買える!

マウスコンピューター」ならWindows抜きでもPCが買える。Linuxサーバーとしての利用に最適!

トップページ

  • tarの使い方
  • rpmの使い方
  • psコマンドでプロセスを確認
  • /etc/crontabを編集してアプリを自動実行
  • chkconfigコマンドでプロセスを自動起動

rsyncで自動バックアップ

 サーバーを運営していく上で重要なのがバックアップだ。パソコンの部品の中でもHDDはもっとも壊れやすく、サーバーの重要なデータが失われてしまうことがある。実際に自分もHDDのクラッシュを経験した。何か調子が悪いなと思いつつ動かし続けていたサーバーを、ある日再起動してみると途中でストップしてしまう。シングルユーザーモードで起動しても、fsckが動いてくれない。仕方なく新しいHDDに交換したが、別のパソコンにデータをバックアップしていたので被害を受けずにすんだ。
 また、あやまってデータを消してしまうこともある。これも体験談だが、WindowsのSSHクライアントからサーバーに接続して作業していたときのこと。電話が入ってきて別の仕事に注意がいったとき、まちがえてクリップボードの中身をSSHクライアントにペーストしてしまったようなのだ。クリップボードの中身がコマンドとしてLinuxで実行されていく。まあ大部分は「command not found」となるけれど、何がどうなったのかホームディレクトリの中のファイルがごっそりと消えていた。rmとかそういう文字列があったのかもしれない。これもバックアップのおかげですぐに復旧できた。

 最初のうちはftpでパソコンの側にバックアップをとっていたのだが、これでは面倒でついついバックアップがおろそかになる。そこでバックアップを自動的に行うことを考えた。使うコマンドは「rsync」である。

rsyncの使い方

 rsyncはWindowsのxcopyコマンドに似ていて、ディレクトリの構造をたもったままコピーができる。たとえば、/homeディレクトリ以下をまとめてコピーするなんてことが簡単にできるわけだ。2回目以降のコピーでは更新や追加されたファイルだけがコピーされるので、バックアップが短時間で終わる。さらに削除したファイルはバックアップ先でも削除されるため、バックアップ元とバックアップ先の内容をまったく同じに保つことも可能だ。

 本当は別のHDDやマシンにバックアップをとるべきだが、まずは同一HDDの別のディレクトリにバックアップをとってみよう。HDDの故障には対処できなくても、誤ってファイルを削除したときなどは役に立つ。ここでは/var/backupディレクトリを作成し、その中に/homeディレクトリ以下の内容をまるごとコピーしてみる。打ち込むコマンドは次の2行だ。

# mkdir /var/backup
# rsync -a --delete /home /var/backup

 rsyncの書式は「rsync (オプション) (コピー元) (コピー先)」となっている。指定できるオプションは次の表のようになっている。「-a --delete」はコピー元とコピー先を同期させたいときに使うオプションだ。

-v バックアップ中にコピーしているファイル名を表示する
-r 指定したディレクトリ以下を再帰的にコピーする
-l シンボリックリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる
-H ハードリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる
-p パーミッション属性をたもったままコピーする
-o 所有者属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる
-g グループ属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる
-t タイムスタンプをたもったままコピーする
-D デバイスファイルをたもったままコピーする
-z データを圧縮して転送する
-u 追加されたファイルだけをコピーする
-a 上記のオプションで「rlptgoD」を同時に指定する
--existing 更新されたファイルだけをコピーし、追加されたファイルは無視する
--delete コピー元で削除されたファイルは、コピー先でも削除する。-aオプションと同時に指定するとコピー元とコピー先を同期できる
--exclude '**' **に一致するファイルはコピーしない。「*.bak」「*~」など特定のファイルを除外したいときに使う
--stats コピーの結果を表示する。指定しないといっさいのメッセージは表示されない
-e ssh 暗号化してファイルを転送する。コピー先としてネットワークでつながった別のホストを指定するときに使う

rsyncを自動実行

 うまくバックアップができることを確認したら、cronで自動実行させるように設定しよう。/etc/crontabにコマンドを追加する。次の例は毎日午前3時10分にバックアップを自動実行させるときの設定だ。

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
10 3 * * * root /usr/bin/rsync -a --delete /home /var/backup
 
掲示板 管理者のサイト トップページへ

お問い合わせや間違いのご指摘はyasu@center-left.comまでメールください。