#!/bin/sh #Dieses Skript macht ein Lokales backup auf eine andere Festplatte #BACKUP ... Destination, wohin die Daten gesendet werden sollen #ROOT ... Source, welche Daten gesichert werden sollen. Ein Slash am Ende ist #wichtig, da damit ausgedrückt wird: Kopiere den Inhalt und nicht den #Ordner. (Beim Backup der root ist es egal) A=`basename $0` if [ "$1" = "--help" ] then echo "$A erstellt automatisch ein Backup" echo echo "Usage: $A [--help --version]" echo echo "Options:" echo " --help" echo " Prints out this help and exit." echo " --version" echo " Prints out version and exit." echo "Examples:" echo " $A Backups contents of /etc/backup" echo echo "Error Codes:" echo " 0 backup was successful" echo " n n rsync commandos failed" echo " 100 Could not fsck device" echo " 101 Could not mount backup volume" echo echo "See Also:" echo "http://www.markus-raab.org/Howtos/Backup" exit 0 fi if [ "$1" = "--version" ] then echo "$A 1.2" echo echo "Copyright (c) Markus Raab " echo "This is free software; see the source for copying conditions. There is NO" echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." echo echo "Written by Markus Raab" exit 0 fi . /etc/default/backup $LOGGER $LOGOPT "Starte backup" [ $DEVICE ] && $DEBUG umount $DEVICE [ $DEVICE ] && { $DEBUG fsck.$FILESYSTEM $FSCKOPTS $DEVICE || { $LOGGER $LOGOPT "Fehler beim fsck" exit 100 } } [ $DEVICE ] && { $DEBUG mount -t $FILESYSTEM -o $FILEOPTIONS $DEVICE $BACKUPDIR || { $LOGGER $LOGOPT "Fehler beim mounten" exit 101 } } ERRORS=0 SUCCESS=0 for file in /etc/backup/* do #unset temporary variables: # Dont make a rsync run (for scripts) DONTRUN="" # Subfolder of Backup BACKUP="" # Root of files to backup ROOT="" # here you can define your excludes or anything else EXCLUDE="" # Dont backup deleted files NODELETE="" # for internal use only: FINALDELETEDIR="" RESTOREDELETE="" source "$file" # scrip processed, dont run rsync! if [ "$DONTRUN" ] then continue fi if [ "$NODELETE" ] then RESTOREDELETE="$DELETE" DELETE="" elif [ "$DELETE" ] then #Wenn löschvorgang gewünscht! FINALDELETEDIR=$DELETEDIR/$BACKUP-$SUFFIX test -d $FINALDELETEDIR || $DEBUG mkdir -p $FINALDELETEDIR fi FINALBACKUPDIR=$BACKUPDIR/$BACKUP test -d $FINALBACKUPDIR || $DEBUG mkdir -p $FINALBACKUPDIR if $DEBUG /usr/bin/rsync $OPTIONS $EXCLUDE $DELETE$FINALDELETEDIR $ROOT $FINALBACKUPDIR then SUCCESS=$((SUCCESS+1)) $LOGGER $LOGOPT "Sucessfull backup $ROOT" else ERRORS=$((ERRORS+1)) $LOGGER $LOGOPT "Error [ $? ] $ROOT" fi if [ "$RESTOREDELETE" ] then DELETE="$RESTOREDELETE" fi done [ $DEVICE ] && $DEBUG umount $DEVICE exit $ERRORS