- /etc,/home,/varを/root/backupにコピー(rsync)
- コピーした/root/backup以下のファイルを一時保存ディレクトリにtarアーカイブする
- 作ったtarアーカイブを保存先のマシンに移動。(samba)
以下設定。
保存先マシン=$SERVERDIR
玄箱の一時保存ディレクトリ= $TMPDIR
tarアーカイブの名前=backup.tar.gz
玄箱の一時保存ディレクトリ= $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
#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のログが増えてうるさいと思えたら、その時にまた修正する。