cronで大切なデータをバックアップしよう
私の勤める研究所で、Sambaサーバを立ち上げました。このサーバには、主に研究員個人の実験データや文書ファイルなどが保存されており、ネットワーク内で共有されています。しかし、もし突然HDDのクラッシュして大事な実験データが消失なんてことになったら、一大事です。そんなことで、職を失いたくはないですよね?(冷汗) そこで、定期的にこれらの大切なデータをバックアップすることになりました。バックアップは、ファイルを圧縮して他のメディアに保存しても良いのですが、今は大容量HDDが安価で入手できますので、単純に一方のHDDからもう一方のHDDへコピーすることにしました。
実行環境
対象となるSambaサーバ(Red Hat linux 7.3)には、120GBのHDDが2本入っています。現在、/home/public以下をSamba共有するようになっています。今回は、/home/public以下のファイルを、もう一方のHDDの/usr/buckupへコピーすることにします。
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