#!/bin/bash

# Variable für Backup-Namen setzen.
# Der Backup-Ordner trägt den Namen der Variablen
BackupOrdner="Sicherheitstest"

# Hier steht der absolute Pfad der zu sichernden Datei
Dateizusichern="/home/jw/Testverzeichnis/"

# Der Name des Backups ist der Name der zu sichernden Datei
BackupName=$(basename $Dateizusichern)

# Differenzzeit zwischen altem und neuem Backup in Sekunden
let Differenzzeitmax=1*60*60*24


MyOrdner=$(dirname $0)
cd $MyOrdner

# in den darübergehenden Ordner wechseln
cd ..

if test -d $BackupOrdner
    then
        echo "Der Ordner existiert!"
    else
        mkdir $BackupOrdner
        echo "Der Ordner "$BackupOrdner" wurde angelegt!"
fi

cd $BackupOrdner

# Backup-Pfad für rsync anlegen
BackupPfad=$(pwd)"/"$BackupName

# Probelauf von Rsync zur Kontrolle
rsync -asHSvn $Dateizusichern $BackupPfad

# Benutzereingabe
read -p 'Soll das Backup so ausgeführt werden? (j/n): ' Antwort

if [ $Antwort = "j" ]
    then
        # Überprüfen, ob schon ein Backup mit dem Namen existiert
        if test -e $BackupPfad
            then
                # Überprüfen, ob ein altes Backup existiert
                if test -e $BackupPfad"_old"
                    then
                        # Prüfen, ob das alte Backup zu alt ist
                        Backup_old_Zeit=$(date -r $BackupPfad"_old" +%s)
                        Aktuelle_Zeit=$(date +%s)
                        let Zeitdifferenz=$Aktuelle_Zeit-$Backup_old_Zeit
                        if [ $Zeitdifferenz -gt $Differenzzeitmax ]
                            then
                                # Altes Backup löschen
                                rm -r $BackupPfad"_old"
                                # Kopie anlegen
                                cp $BackupPfad $BackupPfad"_old"
                                # Zeitstempel für das alte Backup setzen
                                touch -m $BackupPfad"_old"
                        fi
                    else
                        # Kopie anlegen
                        mv $BackupPfad $BackupPfad"_old"
                fi
        fi
        
        # Backup ausführen
        rsync -asHSv $Dateizusichern $BackupPfad
    else
        echo "Kein Backup!"
fi
