自動バックアップ

kyoma@cosmos.sci.hokudai.ac.jp
作業:高橋共馬・杉山耕一朗
「外付けハードディスクのマウント」 が行われていることを確認.ここでは,2基の外付けハードディスクは,/home,/home.bk に マウントされているとする.

rsync

目的:/etc/* などの各種設定ファイル,および /home/ 以下を定期的にバックアップする.
方法:/etc/* などを /home/ 以下にバックアップし, /home/ 以下を /home.bk/ にバックアップする.

作業: /etc/cron.daily/rsync を書く.以下.root に実行許可を出す.

#!/bin/sh

# /etc/cron.daily/rsync
# Kyoma T. 990421

rsync -avz --delete /etc/ /home/etc.bak/ &&
rsync -avz --delete /var/qmail/alias/ /home/var_qmail_alias.bak/ &&
rsync -avz --delete /usr/lib/im/ /home/usr_lib_im.bak/ &&
rsync -avz --delete /usr/lib/mh/ /home/usr_lib_mh.bak/ &&
rsync -avz --delete /home/ /home.bk/ &
バックアップ元・先のディレクトリの指定において, 末尾のスラッシュ (/) の有無は大きな意味を持つ. 上の例では,...以下のファイルを...以下にバックアップせよ, という意味になる.

/usr/doc/rsync/README によれば,

Options:
-v, --verbose	increase verbosity
-a, --archive	archive mode (same as -rlptDog)
-r, --recursive	recurse into directories
-l, --links	preserve soft links
-p, --perms	preserve permissions
-o, --owner	preserve owner (root only)
-g, --group	preserve group
-D, --devices	preserve devices (root only)
-t, --times	preserve times
  --delete	delete files that don't exist on the sending side
-z, --compress	compress file data

実行してみる.

# /etc/cron.daily/rsync

$ ls /home* -alt
として,UID, GID, time-stamp が変更されることなくバックアップされることを確認.

特定ファイルを除いてバックアップするには

rsync -avz --delete --exclude-from /home/exclude_list /home/ /home.bak/ &
などとする.--exclude-from /home/exclude_list を追加するということ.

/home/exclude_list の例は以下.

exclude_list
exclude_file_example
exclude_dir_example

/home/{exclude_list,exclude_file_example,exclude_dir_example/} は, バックアップされないことを確認.

もう一つの方法として,--exclude オプションを使ってファイル名を指定する方法がある.

rsync -avz --delete --exclude lost+found /home/ /home.bk/ &
とすれば,/home/lost+found はバックアップされない.

cron からの動作確認

/etc/crontab 中には,
25 6    * * *   root    run-parts --report /etc/cron.daily
とある.すなわち,/etc/cron.daily/* は毎日 06:25 に実行されるはずである.

cron は,cron 実行レポート(標準出力)をメールしてくる. /etc/crontab に MAILTO="" と書けば, このレポートメールは出されなくなるし, 宛先ユーザを指定することもできる.詳細は crontab(5). これは,crontab(1) で扱う crontab においても同様である.

以下は,Cron Daemon からの root 宛のメールである(一部).

Date: 21 Apr 1999 21:25:01 -0000
From: root@blue.sci.hokudai.ac.jp (Cron Daemon)
To: root@blue.sci.hokudai.ac.jp
Subject: Cron  run-parts --report /etc/cron.daily
...
/etc/cron.daily/rsync:
...
wrote 54925 bytes  read 54 bytes  12217.56 bytes/sec
total size is 42898713  speedup is 780.27
/etc/cron.daily/rsync が実行されていることを確認. Date: 21 Apr 1999 21:25:01 -0000 は JST (+0900) に直せば 22 Apr 06:25:01 となり,設定通り 06:25 に動いたことがわかる.