#!/bin/csh -f
#
# Backup a directory to a secure place
#
# Theodore Ts'o and Tom Coppeto
# MIT Network Group
#
# usage: backup <directory> [secure] [insecure]
#
#
# $Source: /afs/.net.mit.edu/tools/src/backup/RCS/secure_backup,v $
# $Author: tom $
# $Header: /afs/.net.mit.edu/tools/src/backup/RCS/secure_backup,v 1.3 94/02/04 14:15:28 tom Exp $
# 

set path = (/usr/ucb /usr/bin /bin /bin/athena /usr/athena/bin \
            /afs/net/tools/@sys /usr/athena)

if ($#argv != 2 && $#argv != 3) then
	echo "usage: backup <directory>"
	exit 1
endif

set spooldir     = $1
set partition    = $2
set toplevel     = /afs/net.mit.edu/admin/backups
set hostname     = `hostname | tr A-Z a-z`
set publickey    = $toplevel/keys/$hostname.publickey
set backupdir    = $toplevel/backups/$hostname/$partition
set backupfiles  = $backupdir/current
set obackupfiles = $backupdir/not-so-current
set logfile      = $toplevel/logs/$hostname.log

if($#argv == 3 && $argv[3] == "insecure") then
	set secure = "cat"
else
	set secure = "bsec -vf $publickey - -"
endif

setenv KRBTKFILE /tmp/tkt_root
krbtgp -s rcmd.$hostname
aklog -cell net

if(! -e $backupdir) then
	mkdir $backupdir
endif

#
# if the last attempt was sucecssful, delete the old directory and rename
# the current one to old.
# if the success file is absent, delete the current directory which is in an
# unknown state and preserve the last successful backup.
#

if (-f $backupdir/.success) then
	rm -rf $obackupfiles
	mv $backupfiles $obackupfiles
else
	rm -rf $backupfiles
endif

mkdir $backupfiles
rm -rf $backupdir/.success

cd $spooldir
tar cf - . | compress | $secure | split -10000 - $backupfiles/bkp
if($status == 0) then
	echo "$spooldir on $hostname backed up on `date`" >> $logfile
	touch $backupdir/.success
else
	echo "BACKUP FAILED for $spooldir on $hostname on `date`" >> $logfile
endif

unlog
kdestroy
