#!/bin/sh
#
# BACKUP.SH v 0.1
#
# Datum: 10.09.2003
# Zeit : 00:55:52
# Autor: CW
#
# Nach einer Grundidee von: vincent v.
#
##################################################
##############################
#
# Copyright (C) 2003 CW
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted
# provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of conditions
# and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list of
# conditions and the following disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# 3. The name of the author may not be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# 4. All advertising materials mentioning features or use of this software must display the
# following acknowledgement:
#
# This product includes software developed by CW
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
##################################################
##################################################
#
#
# Dieser Script basiert auf dem Original-Script von vincent v.
#
# Zu finden unter: [url]http://www.bsdforen.de/forums/showthread.php?s=08aeb976e0af42d48e47e1ec5b97b6b9&postid=8519#post8519[/url]
#
# [url]http://www.bsdforen.de[/url]
#
#
##################################################################################################
#
# Dieser Script kann zum Sicherung/Entpacken von Verzeichnissen oder einzelnen Dateien herangezogen werden.
#
# Vor der Benutzung bitte unbedingt die Hilfe-Infos mit dem Schalter [b]-hilfe[/b] aufrufen!
#
##################################################################################################
BACKUP=${BACKUP:=$HOME/backup}
SAVE=${SAVE:=/etc /home /var/www}
SAVEDATE=${SAVEDATE:=`date +%H:%M:%S_%Y`}
SAVEDIR=${SAVEDIR:=$BACKUP}
SAVENAME=${SAVENAME:=Archive}
RESTOREDIR=${RESTOREDIR:=$PWD}
case $1 in
-help) echo -n "\n\n BACKUP.SH v 0.1\n\n"
echo -n "\nSYNTAX: sh backup.sh { [-help] } { [-restore] | [-restore-all] } { [Dateiname] } { [Archiv-Pfad] | [RESTORE-Verz.]\n"
echo -n "---------------------------------------------------------------------------------------------------------------------\n\n\n"
echo -n "Wenn keine Verzechnisse angegeben worden sind, werden ${SAVE} archiviert.\n\n"
echo -n "Wenn kein Archiv-Verzeichniss angegeben wurde, wird $HOME/backup die jeweilige Archiv-Datei darunter angelegt.\n\n"
echo -n "\n---------------------------------------------------------------------------------------------------------------------\n"
echo -n "\n\n\nFolgende Optionen können angewandt werden:\n\n"
echo -n "-help --> diese Info anzeigen\n\n"
echo -n "-restore [ARCHIV] [RESTORE-ORDNER] --> ARCHIV in den RESTORE-ORDNER entpacken\n\n"
echo -n "-restore-all [ORDNER] [RESTORE-ORDNER] --> alle im ORDNER vorhanden tar.gz-Archive in den RESTORE-ORDNER entpacken\n\n\n"
echo -n "\n---------------------------------------------------------------------------------------------------------------------\n\n"
echo -n "backup.sh [Datei-/Verzeichnisname] [ARCHIV-NAME] --> Packt die angegebenen Dateien unter ARCHIV-NAME\n\n"
echo -n "Wenn \"backup.sh -restore\" ohne Verzeichnisangaben gestartet wurde, wird das Programm abgebrochen.\nDa ein BACKUP-Verzeichnis auch mehrere Archive beinhalten kann, wird erst gar nicht versucht,\ndiese zu entpacken.\n\n"
echo -n "Wenn \"backup.sh -restore-all\" ohne Angaben gestartet wurde, such es automatisch"
echo -n "nach $HOME/backup\nund entpackt alle vorgefundenen tar.gz-Archive in den RESTORE-ORDNER.\n\nDiese Option sollte nur dann ausgeführt werden, wenn verschiedene Archiv-Dateien entpackt werden sollen.\n\n"
echo -n "\nWenn kein RESTORE-ORDNER bei -restore angegeben wird, wird versucht unter $HOME/backup die Archive\nzu entpacken. Wenn $HOME/backup nicht existiert, wird es angelegt.\n\n"
exit 0 ;;
-restore-all) if ! [ -z $2 ]; then
BACKUP=$2
fi
if ! [ -z $3 ]; then
RESTOREDIR=$3
else RESTOREDIR=$2
fi
for ARCHIVE in `ls -1 $BACKUP/*.tar.gz`;
do tar xzvf $ARCHIVE -C $RESTOREDIR;
done
exit 0;;
-restore)
if [ -z $2 ]; then
echo -n "\n\nFEHLER: Archiv-Name MUSS angegeben werden!\n\n" && exit 0
else BACKUP=$2
fi
if ! [ -f $BACKUP ]; then
echo -n "\n\nFEHLER: Datei nicht vorhanden oder nicht lesbar!\n\n" && exit 0
fi
if ! [ -z $3 ]; then
RESTOREDIR=$3
fi
tar xzvf $BACKUP -C $RESTOREDIR
exit 0;;
*) if ! [ -z $1 ];then
SAVE=$1
fi;;
esac
if ! [ -z $2 ]; then
SAVEDIR=$2
fi
for i in $SAVE
do
if [ -d $i ]
then
SAVENAME="$1 $i"
else
echo "$SAVENAME $i existiert nicht und wird ignoriert." >> /var/log/backup.log
fi
done
if ! [ -d $SAVEDIR ]; then
mkdir $SAVEDIR
fi
TITLE=$SAVEDIR/$1_$SAVEDATE.tar.gz
tar -vpzcPf $TITLE $SAVENAME
echo -n "\n\n$SAVE wurde unter $SAVEDIR$1_$SAVEDATE erfolgreich archiviert!\n\n"