Bash Skript Backup
Guten Morgen zusammen,
ich habe leider keine Erfahrung im skripten, daher benötige ich eure Hilfe.
Systemumfeld und Problem:
SLES 12
12 Systeme werden unter dem Verzeichnis /Backup gesichert.
In jedem Unterverzeichnis sind jeweils 2 Voll und 6 Inkrementelle Backups
1 x Voll Backup Aktuell und 1 x Vorgänger
Vorgänger Backup wird kurzzeitig behalten im Falle, das dass aktuelle Backup fehlschlägt.
Das heißt wenn das aktuelle Backup da ist, kann das alte direkt gelöscht werden.
Hier liegt auch schon das Problem ich weiß nicht wie ich da vorgehen soll.
Vielen Dank
Gruß
David
ich habe leider keine Erfahrung im skripten, daher benötige ich eure Hilfe.
Systemumfeld und Problem:
SLES 12
12 Systeme werden unter dem Verzeichnis /Backup gesichert.
In jedem Unterverzeichnis sind jeweils 2 Voll und 6 Inkrementelle Backups
1 x Voll Backup Aktuell und 1 x Vorgänger
Vorgänger Backup wird kurzzeitig behalten im Falle, das dass aktuelle Backup fehlschlägt.
Das heißt wenn das aktuelle Backup da ist, kann das alte direkt gelöscht werden.
Hier liegt auch schon das Problem ich weiß nicht wie ich da vorgehen soll.
cd /Backup/
E11
EB1
EBP
EBQ
ESM
IME
IMP
P11
POP
POQ
POT
Q11
cd /Backup/E11
Mar 12 22:17 E11FullBackup_1
Mar 5 22:59 E11FullBackup_2
Mar 13 19:00 E11IncBa_DI
Mar 8 19:01 E11IncBa_DO
Mar 9 19:01 E11IncBa_FR
Mar 7 19:01 E11IncBa_MI
Mar 10 19:01 E11IncBa_SA
Mar 11 19:01 E11IncBa_SO
Mar 10 07:50 E11LOG
Vielen Dank
Gruß
David
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 367981
Url: https://administrator.de/forum/bash-skript-backup-367981.html
Ausgedruckt am: 07.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Hi,
ähm.. ich sage mal nur Danke! zu deinem Versuch
Immerhin hast du mich so auf
Ein Backup hast du ?
Verwendung auf eigene Gefahr ;)
Noch wird das
Noch eine kleine Erklärung:
7: Mit der for-Schleife wird der Inhalt des Backupverzeichnisses (ls) einzeln verarbeitet. Ein durchlauf mit jedem "Inhalt".
11+12: Es werden die Pfade zusammen gesetzt aus dem aktuellen Schleifenwert ($strSystem) und den Verzeichnisnamen.
14: Prüfe ob beide existieren (und Verzeichnisse sind)
17-22: Ermittle das ältere (-ot) von beiden
25: Lösche das ältere
26+27: Wenn Prüfung in Zeile 14 fehlschlägt, melde es.
29: Ende der for-Schleife bzw. starte nächsten Durchlauf wenn möglich.
Für jedes "System" in /Backup:
Testausgabe:
Du siehst das "test.sh" bei mir im gleichen Verzeichnis liegt und deswegen auch "getestet" wird. Die Prüfung auf die Unterverzeichnisse schlägt natürlich fehlt. Nicht schön aber auch nicht schlimm.
~Arano
ähm.. ich sage mal nur Danke! zu deinem Versuch
Immerhin hast du mich so auf
-ot -nt
aufmerksam gemacht.Ein Backup hast du ?
Verwendung auf eigene Gefahr ;)
Noch wird das
rm
nur ausgegeben, wenn du die Zeile 25 entkommentierst, ist es scharf und es wird ohne Nachfrage gelöscht !Noch eine kleine Erklärung:
7: Mit der for-Schleife wird der Inhalt des Backupverzeichnisses (ls) einzeln verarbeitet. Ein durchlauf mit jedem "Inhalt".
11+12: Es werden die Pfade zusammen gesetzt aus dem aktuellen Schleifenwert ($strSystem) und den Verzeichnisnamen.
14: Prüfe ob beide existieren (und Verzeichnisse sind)
17-22: Ermittle das ältere (-ot) von beiden
25: Lösche das ältere
26+27: Wenn Prüfung in Zeile 14 fehlschlägt, melde es.
29: Ende der for-Schleife bzw. starte nächsten Durchlauf wenn möglich.
Für jedes "System" in /Backup:
- teste ob beide FullBackups vorhanden sind
- ermittle das ältere
- lösche es
#!/bin/bash
# vim: set ts=4:
#
strDir="/Backup";
for strSystem in `ls "$strDir"`; do
# kontrollausgabe
echo -n "Teste: $strSystem... ";
# Baue Pfade
strFB1="$strDir/$strSystem/${strSystem}FullBackup_1";
strFB2="$strDir/$strSystem/${strSystem}FullBackup_2";
# Teste existens
if [ -d "$strFB1" ] && [ -d "$strFB2" ]; then
echo -n "2 existieren, lösche älteres... ";
# Ermittle älteres
strAelteres="";
if [ $strFB1 -ot $strFB2 ]; then
strAelteres="$strFB1";
else
strAelteres="$strFB2";
fi;
# lösche älteres
echo "rm -r \"$strAelteres\"";
#rm -r "$strAelteres";
else
echo "nur 1 FullBackup vorhanden !";
fi;
done;
exit 0;
Testausgabe:
arano@COMPUTER006:~/test$ ./test.sh
Teste: aa... 2 existieren, lösche älteres... rm -r "/home/arano/test/aa/aaFull1"
Teste: bb... 2 existieren, lösche älteres... rm -r "/home/arano/test/bb/bbFull2"
Teste: cc... 2 existieren, lösche älteres... rm -r "/home/arano/test/cc/ccFull1"
Teste: dd... nur 1 FullBackup vorhanden !
Teste: test.sh... nur 1 FullBackup vorhanden !
arano@COMPUTER006:~/test$
~Arano