Hey Leute,

also ich habe auf meinem Server Backups gemacht und dafür habe ich mir ein eigenes Shell Script geschrieben. Es sorgt dafür, dass immer die letzten 5 Backups behalten werden und die älteren automatisch gelöscht werden. In der For-Schleife habe ich alle Ordner angegeben, die gesichert werden sollen.

Ein interessanter Teil des Codes ist der find-Aufruf, der die ältesten Backups sucht und aufgelistet. Mit ein paar anderen Befehlen werden dann nur noch die Ordner herausgesucht, die gelöscht werden dürfen.

Der Rest des Codes sorgt dafür, dass das Backup-Verzeichnis erstellt wird, falls es noch nicht existiert und kopiert dann die Ordner, die gesichert werden sollen. Es wird auch überprüft, ob die Anzahl der Backups größer oder gleich der Mindestanzahl ist, die behalten werden sollen. Wenn ja, werden die überzähligen Backups gelöscht.

Ich habe den ganzen Code auch noch kommentiert, damit alles besser verständlich ist.

#!/bin/sh
# Ort, an dem das Backup gespeichert werden soll
dir="/home/lisa/backup/"
# Mindestanzahl der zu behaltenden Backups
mindir=5
d=`date +%Y%m%d`
# Ermittle die aktuelle Anzahl vorhandener Backups
curnumber=`find /root/backup -maxdepth 1 -type d | wc -l`
# Überprüfe, ob das Hauptverzeichnis für Backups existiert
if [ ! -d "${dir}" ]
then
        # Falls nicht, erstelle es
        mkdir ${dir}
        echo "Das Backup-Verzeichnis existiert nicht - wurde erstellt" >> /var/log/backup.log
fi
# Überprüfe, ob das Verzeichnis für das aktuelle Backup existiert
if [ ! -d "${dir}${d}" ]
then
        # Falls es nicht existent, erstelle es
        mkdir ${dir}${d}/
        echo "Erstelle Verzeichnis ${d}" >> /var/log/backup.log
        # Füge hier die zu sichernden Ordner hinzu. Die Schleife durchläuft die Ordner, um sie zu sichern
        for f in "/home/lisa/Dokumente/" "/home/lisa/Fotos" "/home/lisa/Videos"
        do
                # Kopiere die definierten Ordner in das Backup-Verzeichnis
                cp -p -R -P ${f} ${dir}${d}
                echo "cp -p -R -P ${f} ${dir}${d}" >> /var/log/backup.log
        done
fi
# Um den Speicher nicht zu überlasten, behält das Backup-System nur die letzten ${mindir} Backups bei.
# Überprüfe, ob die aktuelle Anzahl größer oder gleich der Mindestanzahl ${mindir} ist
if [ $(($curnumber - 1 )) -ge ${mindir} ]
then
        # Ermittle, wie viele Backups gelöscht werden können
        t=$((${curnumber} - ${mindir} -1 ))
        # Finde die letzten ${t} Backups
        lastbackup=`find ${dir} -maxdepth 1 -type d -printf '%T+ %p\n' | sort -n | head -n ${t} | awk '{print $2}'`
        echo "Zu löschende Backups: ${lastbackup}" >> /var/log/backup.log
        # Lösche diese Backups
        rm -r -f ${lastbackup}
fi
exit 0
Avatar-Foto

Von blxssom

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert