cronで大切なデータをバックアップしよう

 私の勤める研究所で、Sambaサーバを立ち上げました。このサーバには、主に研究員個人の実験データや文書ファイルなどが保存されており、ネットワーク内で共有されています。しかし、もし突然HDDのクラッシュして大事な実験データが消失なんてことになったら、一大事です。そんなことで、職を失いたくはないですよね?(冷汗) そこで、定期的にこれらの大切なデータをバックアップすることになりました。バックアップは、ファイルを圧縮して他のメディアに保存しても良いのですが、今は大容量HDDが安価で入手できますので、単純に一方のHDDからもう一方のHDDへコピーすることにしました。
実行環境
 対象となるSambaサーバ(Red Hat linux 7.3)には、120GBのHDDが2本入っています。現在、/home/public以下をSamba共有するようになっています。今回は、/home/public以下のファイルを、もう一方のHDDの/usr/buckupへコピーすることにします。
hdd構成
cronとは?
 毎日、バックアップを行う予定ですが、いちいちコマンドを投入するのは面倒ですよね。また、できれば負荷の少ない深夜〜早朝にバックアップ作業をおこなうのが理想的ですが、当然、この時間帯は会社にはいません。そこで、活躍するのがcronです。これは、crondと呼ばれるプログラムが常にバックグランドで起動していて(こういうプログラムのことをデーモンプロセスという)、指定した日時に指定したコマンドを実行します。
cronの設定方法
 cronの設定には、crontabというコマンドを使います。
crontab [-u user] {-e|-l|-r}
 オプション:
  -u user:ユーザ指定(デフォルトはカレントユーザ)
  -e:cronの内容を編集する
  -l:現在のcronの内容を表示する
  -r:現在のcronの内容を削除する
 cronの編集にはviエディタを使います。Windowsを使い慣れている方は、最初、その使い方に戸惑うかもしれません。viエディタの使用方法については、別途、書籍やネットで調べておいてください。
 さて、実際にcronの内容を編集してみましょう。今回はバックアップが目的ですので、rootユーザでコマンドを実行することにします。
$ su      #まずは、rootユーザになります
Password:    #rootのパスワードを入力
# crontab -e  #このコマンドでcron編集モードへ
 cron設定の書式は、以下のとおりです。
SHELL=/bin/sh
MAILTO=root
分 時 日 月 曜日 コマンド
 :
 1行目はコマンド実行に使うシェルの指定、2行目は実行結果を記載したメールの送り先です。3行目以降は、スケジュールの内容になります。「分 時 日 月 曜日 コマンド」は、スペースまたはタブで区切ります。日時の表記の順番に注意してください。
 「分 時 日 月 曜日」は、下記のように数字で指定します。
0〜59, *
0〜23, *
1〜31, *
1〜12, *
曜日0〜7, * (0と7は日曜日)
 「*」はワイルドカードです。月で「*」を指定すれば1〜12月(つまり、毎月)ということになります。
スケジュールの設定例
 上記の説明だけではわかりにくいので、実際にcronの設定例を見てみましょう。
#毎日、6時にコマンドを実行
 0 6 * * * [コマンド]

#毎月5日の0時に、コマンドを実行
 0 0 5 * * [コマンド]

#毎日、6時、12時、18時にコマンドを実行(カンマで区切る)
 0 6,12,18 * * * [コマンド]

#2で割り切れる日(2日、4日、6日・・・)の6時に、コマンドを実行(スラッシュを使う)
 0 6 */2 * * [コマンド]

#月曜日から土曜日の4時に、コマンドを実行(ハイフンを使う)
 0 4 * * 1-6 [コマンド]
 ちなみに、指定時刻にマシンが起動していない場合は、コマンドは実行されません(当たり前だけど・・・)。3分おきにメールを出すなんてこともできますけど、悪用しちゃだめだよ(笑)
 それでは、実際に、私が行った設定をお見せいたします。
SHELL=/bin/sh
MAILTO=abc@xyz.co.jp
0 5 * * 2-6 rsync -acouv --stats --delete /home/public /usr/backup
 この設定では、火〜土曜日の朝5時に、/home/public以下のファイルを、/usr/backup以下へコピーするよう指定しています。なお、コマンドには、rsyncを使いました。rsyncは、単にファイルをコピーするだけではなく、コピー元とコピー先を比較して、追加・変更のあったファイルのみをコピーしてくれます。また、コピー元で削除されたファイルは、コピー先でも自動で削除してくれるという、大変便利で高機能なコマンドです。また、コピーしたファイルや削除されたファイルの一覧をレポートとして表示してくれますので、後でプロセスの確認が出来ます。また、「MAITO=」で自分のメールアドレスを指定しておけば、実行結果のレポートが自動的にそのアドレスへ送付されます。
rsync [OPTION]... SRC [SRC]... DEST
 ※SRCはコピー元、DESTはコピー先のディレクトリ
 主なオプション:
  -v, --verbose:転送情報を詳しく表示
  -a, --archive:アーカイブモード
  -u, --update:アップデートのみ許可 (上書き禁止)
  -p, --perms:パーミッションを維持する
  -o, --owner:オーナーを維持する (rootのみ実行可)
  -g, --group:グループを維持する
     --delete:送信側にないファイルを削除
     --version:rsync のバージョンを表示する
     --stats:rsync アルゴリズムの転送効率を表示
     --progress:転送中の情報を表示
  -h, --help:ヘルプを表示する

参考リンク

| Go to INDEX | Go to HOME |

© 2003.2.22 Tetrahymena

1