#!/bin/tcsh
# Backup certain folders found in $FOLDERLIST file.
# The $FOLDERLIST file must contain one root folder per line.

# ----- Variables ----

setenv DATE `date '+%Y-%d-%m'`
setenv DATELONG `date '+%Y-%d-%m-%H:%M'`
setenv TEMPDIR "/tmp/cyrusbackup-$DATELONG"

# ----- User-editable Variables -----

setenv CYRUSROOT "/opt/Cyrus"
setenv BACKUPDIR "/opt/Cyrus/var/backup/cyrus-oceanus-$DATE"
setenv FOLDERLIST "/home/admin/folders-to-backup.txt"
setenv REMOTESTORE "backupuser@backuphost.example.org:/var/backup/"


# ------ Spool dirs ------

cd $CYRUSROOT/var

# Default: all spool dirs
#setenv SPOOLDIRS `ls -d spool*`

# Custom: leave spool-1 out because it's too slow.
setenv SPOOLDIRS "spool spool-shared"

# ----- Make secondary lists (with spooldirs) -----
mkdir -p $TEMPDIR

foreach SPOOLDIR ( $SPOOLDIRS )
        cd $SPOOLDIR

        foreach FOLDERDIR ( `cat $FOLDERLIST` )
                echo "Searching for $FOLDERDIR in $SPOOLDIR ... "
                find ./ -name $FOLDERDIR >> $TEMPDIR/folderlist_$SPOOLDIR
        end

        cd $CYRUSROOT/var
end

# ------ Main ------

mkdir -p $BACKUPDIR

cd $CYRUSROOT/var

foreach SPOOLDIR ( $SPOOLDIRS )
        cd $SPOOLDIR

        foreach FOLDERDIR ( `cat $TEMPDIR/folderlist_$SPOOLDIR` )
                echo Backing up $FOLDERDIR .... 
                gtar -rf $BACKUPDIR/backup-$SPOOLDIR.tar $FOLDERDIR 
        end

        cd $CYRUSROOT/var
end

# gzip'em

cd $BACKUPDIR
foreach SPOOLDIR ( $SPOOLDIRS )
	gzip backup-$SPOOLDIR.tar 
end

# copy to null for burning to CD-RW

cd ..
scp -c blowfish -r $BACKUPDIR $REMOTESTORE


