Hallo,
ich habe mich an einem Script versucht, welches mir in bestimmten Intervallen ein bestimmtes Verzeichnis kopiert und die überzähligen Backups löscht.
Das ganze soll später auf nem vServer in einem screen laufen.
Aber er meckert immer, da wäre ein Syntax-Fehler ("near unexpected token `else'", `else echo "" "; Zeile 56), lokal funktioniert jedoch alles. Ich bin ratlos!
ich habe mich an einem Script versucht, welches mir in bestimmten Intervallen ein bestimmtes Verzeichnis kopiert und die überzähligen Backups löscht.
Das ganze soll später auf nem vServer in einem screen laufen.
Aber er meckert immer, da wäre ein Syntax-Fehler ("near unexpected token `else'", `else echo "" "; Zeile 56), lokal funktioniert jedoch alles. Ich bin ratlos!
Code:
# !/bin/bash
# -------------------------
# Einstellungen:
DIR=/opt/server #Quellverzeichnis
BACKUPDIR=/opt/backups #Zielverzeichnis
SLEEPFOR=3600 #Intervall in Sekunden
MAXBACKUPS=24 #History
# -------------------------
echo "***************************************"
echo "Backup-Script"
echo "***************************************"
echo ""
echo "Das Skript wurde mit folgenden Parametern gestartet:"
echo "Quellverzeichnis: " $DIR"/"
echo "Zielverzeichnis: " $BACKUPDIR"/"
echo "Intervall: " $SLEEPFOR " Sekunden"
echo "History: " $MAXBACKUPS " Backups"
echo ""
echo ""
while :
do
TIME=$(date '+%d.%m._%H:%M:%S')
# neues Backup erstellen
cp -r $DIR/ $BACKUPDIR/$TIME/
# Falls Dateirechte im Zielverzeichnis fehlen, nächste Zeile entkommentieren
# chmod 777 $BACKUPDIR/$TIME/
if [ -e $BACKUPDIR/$TIME/ ]
then
echo "Backup wurde um " $(date '+%H:%M:%S') " Uhr erfolgreich erstellt."
echo ""
else
echo ""
fi
# ---
#alte Backups entfernen
if [ $(ls -t -r -1 $BACKUPDIR | wc -l) -gt $MAXBACKUPS ]
then
while [ $(ls -t -r -1 $BACKUPDIR | wc -l) -gt $MAXBACKUPS ]
do
ls -t -r -1 $BACKUPDIR |head --lines 1 | rm -r $BACKUPDIR/$(xargs)
done
echo "Alte Backups wurden um " $(date '+%H:%M:%S') " Uhr erfolgreich entfernt."
echo ""
else echo ""
fi
#---
sleep $SLEEPFOR
done