#!/bin/sh ######################################################################### # # FILE : backup # DATE : 17.9.2001 # AUTHOR : Patrick Meier / patrick.meier@gmx.net # DESCRIPTION : backup a directory tree # # Copyrigth (C) 2001 by Patrick Meier, Switzerland # ######################################################################### PN=`basename "$0"` BACKUPDIRDEFAULTBACKUPDIRDEFAULT="`pwd`" DESTDEFAULT="backup" SETDEST="" FILENAME="" STARTSTRING="==>" LINE="-------------------------------------------------------------------------------" ######################################################################### # Usage ######################################################################### Usage() { echo "$PN - backup a directory tree" echo "usage: $PN [ -d backup_path (default:$DESTDEFAULT)] [-n archive-name.tar ] directory1..." exit 1 } ######################################################################### # ParameterFailed ######################################################################### ParameterFailed() { echo "${STARTSTRING}Parameter faild: $1 ..."; echo "" Usage } ######################################################################### # createDirectory() : creates a directory # param: directory name ######################################################################### testDirectory() { if [ -d "$1" ] then if [ -x "$1" ] then : else echo "${STARTSTRING}ERROR: directory $1 is not readable" echo $LINE exit 1 fi else echo "${STARTSTRING}ERROR: directory $1 does not exit!" echo $LINE exit 1 fi } ######################################################################### # create a tar file ######################################################################### buildTar() { name=$1 shift echo "${STARTSTRING}building tar-file $name" tar -cf $name $@ echo "${STARTSTRING}zipping tar archive $name to $name.gz" gzip $name } ######################################################################### # main ######################################################################### while [ $# -gt 0 ] do case "$1" in -d) DESTDEFAULT="$2"; SETDEST="set"; shift;; -h) Usage; exit 1;; -n) if [ $# -gt 1 ] ; then FILENAME="$2"; shift; else ParameterFailed "$1 archive-name.tar"; fi;; -*) Usage; exit 1;; *) break;; esac shift done if [ $# -lt 1 ] then echo "${STARTSTRING}ERROR: no direcory to backup!" Usage exit 1 fi echo $LINE echo "${STARTSTRING}programm: $PN / `date`" echo $LINE BACKUPDIR=$DESTDEFAULT echo "${STARTSTRING}set backup directory to $BACKUPDIR" testDirectory $BACKUPDIR DIRS="$BACKUPDIRDEFAULT" CURRENTNAME="" if [ -n "$FILENAME" ] then buildTar "$BACKUPDIR/$FILENAME" $@ else for i in $@ do dirname=`echo $i | sed 's/\/$//g'` tarName="$BACKUPDIR/${dirname}__`date '+%d_%m_%Y__%H_%M_%S'`.tar" buildTar $tarName $dirname done fi echo $LINE ######################################################################### # EOF #########################################################################