Sunday, July 4, 2010

【玄箱】/etc,/home,/varのバックアップ

/etc, /home, /varをバックアップ。方針は
  1. /etc,/home,/varを/root/backupにコピー(rsync)
  2. コピーした/root/backup以下のファイルを一時保存ディレクトリにtarアーカイブする
  3. 作ったtarアーカイブを保存先のマシンに移動。(samba)
やることは、以前書いたLANDISKから玄箱へのデータバックアップとほとんど同じで、rsync,samba,cronを使う。今回はマシン間を移動するものがtarアーカイブというところが違う程度。
以下設定。
保存先マシン=$SERVERDIR
玄箱の一時保存ディレクトリ= $TMPDIR
tarアーカイブの名前=backup.tar.gz

以下shスクリプト。
#!/bin/sh
#cd /root/backup (rsync -acouv --stats --delete /etc /home /var ./ && tar czf /$TMPDIR/backup.tar.gz /root/backup/ && echo 'etc files bakup sccess.')||echo 'etc files backup failed.'
cd /$TMPDIR
 (mount -t cifs //$SERVERDIR/ /mnt/$SERVERDIR/ -o iocharset="utf8",credentials=/etc/samba/smb_credentials && cp /$TMPDIR/backup.tar.gz /mnt/$SERVERDIR/$DISTDIR && echo 'mount and copy succeed.')||echo 'mnt and copy failed.'
umount /mnt/$SERVERDIR/ rm /$TMPDIR/backup.tar.gz

rsyncで差分がなければ、以下の作業はすべて実行する必要がないが、rsyncの実行結果は常にファイル数などの表示なので、if文の引数にすることは出来ない。したがって、rsyncとtarアーカイブをグループ化し、mountとcpをグループ化して、残りは実行してもしなくても問題ないものだけ残した。 頻度は週1なので、もしcronのログが増えてうるさいと思えたら、その時にまた修正する。