#!/bin/sh
# backup: backup specific systems
# Greg Lehey
#
# $Id: dodump,v 1.16 2004/10/06 00:12:51 grog Exp $
#
# Dump local file systems to 
# Usage:
#
#   dodump [<level>] [n]
#     <level> defaults to 0
#     [n] specifies "don't do it, just looking"
level=$1
if [ "$level" = "" ]; then
  level=0
fi
if [ "$2" = "n" ]; then		# dummy
  dummy=Y
fi
filesystems=`mount|grep ^/dev/|grep -v /dump | awk '{print $3}'`
me=`hostname -s`
# Get rid of this filth
dumpfs=/dump
if [ "$me" = "echunga" ]; then
  dumpfs=/dumpa
fi
if [ "$me" = "battunga" ]; then
  dumpfs=/dumpa
fi
if [ "$me" = "zaphod" ]; then
  dumpfs=/dumpb
fi
if [ "$me" = "firefly" ]; then
  dumpfs=/dumpa
fi
for fs in $filesystems; do
  if [ "$fs" = "/" ]; then
    fsname=root
  else
    fsname=`basename $fs`
  fi
  dumpfile=$dumpfs/$me/$level/$fsname
  echo dump -${level}uf - $fs \| bzip2 \> $dumpfile.bz2
  if [ "$dummy" != "Y" ]; then
    mkdir -p $dumpfs/$me/$level
    l=$level
    if [ $level -eq 0 ]; then			# top level, remove old dumps
        while [ $l -lt 9 ]; do			# And anything which depends on it
          if [ -f $dumpfs/$me/$l/$fsname.bz2 ]; then
            mv $dumpfs/$me/$l/$fsname.bz2 $dumpfs/$me/$l/$fsname.0.bz2
          fi
          l=`expr $l + 1`
        done
    else
        l=$level
        while [ $l -lt 9 ]; do			# And anything which depends on it
          l=`expr $l + 1`
          if [ -f $dumpfs/$me/$l/$fsname.bz2 ]; then
	    rm -f $dumpfs/$me/$l/$fsname.bz2
          fi
        done
    fi
    dump -${level}uf - $fs | bzip2 > $dumpfile.bz2
  fi
done
echo Dumping completed at `date`
