#!/bin/sh PATH=/usr/sbin:/sbin:/usr/bin:/bin LANG=C set -e activate_harddisk(){ if ( ! lsmod | grep -q sbp2 ); then for d in ieee1394 ohci1394 sbp2; do modprobe $d done fi if ( ! grep -q Vendor: /proc/scsi/scsi ); then scsiadd -a 0 fi } deactivate_harddisk(){ scsiadd -r 0 } mount_harddisk(){ if ( ! mount | grep -q /mnt ); then if ( grep -q Vendor: /proc/scsi/scsi ); then fsck -s /dev/sda1 mount /dev/sda1 /mnt else echo "Harddisk has not been acitvated." 1>&2 exit 1 fi fi } umount_harddisk(){ if ( mount | grep -q /mnt ); then umount /mnt fi } selections(){ dpkg --get-selections } deborphan_txt(){ deborphan -L } iptables_txt(){ ( iptables-save | egrep -v '^[#:]' ) || true } rotate(){ old=/mnt/backup/`echo $1|sed s/_/./g` new=$1.$$ $1 > $new if [ -f $old ]; then if ( cmp -s $old $new ); then rm -f $new else savelog -c 5 $old mv $new $old fi else mv $new $old fi } do_backup(){ if [ -d /mnt/backup ]; then rotate selections rotate deborphan_txt rotate iptables_txt rdiff-backup /etc /mnt/backup/etc rdiff-backup --exclude /home/lost+found /home /mnt/backup/home rdiff-backup /usr/local /mnt/backup/usr/local rdiff-backup /var/backups /mnt/backup/var/backups rdiff-backup --force --remove-older-than 7D /mnt/backup/var/backups fi } if [ "$1"x = x ]; then activate_harddisk mount_harddisk do_backup umount_harddisk deactivate_harddisk else case "$1" in -a|--activate) activate_harddisk ;; -m|--mount) activate_harddisk mount_harddisk ;; -u|--umount) umount_harddisk ;; -d|--deactivate) umount_harddisk deactivate_harddisk ;; *) cat <