Löschlogik in Debian/ Bakup

dominik_pizzo

Cadet 2nd Year
Registriert
Dez. 2013
Beiträge
30
Löschlogik in Debian/ Bakup/Bash-Script

Hallo zusammen,

ich würde gerne in einem Verzeichniss alle Ordner zählen lassen und dann bei einer gewissen anzahl,
nehmen wir zum beispiel "8" das allererste löschen lassen:



Ordner 1
Ordner 2
Ordner 3
Ordner 4
Ordner 5
Ordner 6
Ordner 7
Ordner 8 -> Also hier ist der Ordne 8 neu dazugekommen also muss jetzt der Ordner 1 gelöscht werden.

alles soll dann in einer if abfrage hängen also so ungefähr:

Code:
if [ $gesamtbackups = "8" ]; then
lösch den ersten Ordner

ich bräuchte nun Hilfe was ich für "lösch den ersten Ordner" einsetzen kann :)

Grüßle :D
 
Zuletzt bearbeitet:
Wäre schon hilfreich zu wissen in welcher Sprache du schreibst...
 
oh sorry is n stinknormales bash script :D
Hab die überschrifft angepasst :)
 
Wenn es ein Backup ist --> weg schmeißen und reoback nutzen :) Kannst dir auch mal anschauen evtl. hilft es dir ja, auch wenn es in Perl geschrieben ist.
 
mhh...ne is in nem speziellen script geschrieben und sollte halt darin integriert werden :)
 
Schau es dir trotzdem mal an evtl. hilft es dir ja weiter :)
 
habs mal angeguckt leider nicht so dass was ich benötige....es solte halt alles in ner if abfrage hängen so wie oben beschrieben
 
Das ist mir bewusst...nur solen alle ornder gezält werden und dann wenn der 8te ordner dazu kommt soll der älteste ordner gelösch werden..
 
Code:
rm -rf $(ls --group-directories-first |head -n 1)
solltest nur sicherstellen, daß das Ergebnis nicht "." ist, sonst hast Du das gesamte Verzeichnis leer.

Bescheuerte Idee, einfach willkürlich einen Ordner zu löschen. Benenne die Ordner passend mit Datum und Uhrzeit des Backups, und Du kannst das jeweils älteste Backup dann gezielt löschen. Sicherer, als sich auf die Sortier-logik von 'ls' oder ähnlichem zu verlassen.

Wie hast Du denn die Ordner bis jetzt benannt?
 
Zuletzt bearbeitet:
mit "ls -t > AlleOrdner.txt" kannst du die Ordner nach Zeit sortieren. Mit "tac AlleOrdner.txt" hast du den ältesten Ordner an erster Stelle das baust in einen schleife ein löschst den Ordner und checkst dann nochmal deine Bedingung die Stimmt dann nicht mehr darum verlässt du die Schleife.

Schließ mich aber Twostones Meinung mach Ordentliche Ordnernamen dann kannst mit find Arbeiten!
`find $WorkPath -type d -mtime +$DeleteAge -delete`
 
Läuft das Script dauerhaft?
Wenn ja, würde sich die Quick&Dirty-Methode anbieten:
- Variable hochzählen
- Backup in Ordner-$Variable speichern
- Ordner-($Variable-8) löschen

Wenn keine 8 Ordner da sind, wird halt nichts gelöscht.
Kannst den Counter auch irgendwo in 'ner Datei wegschreiben.
 
Also Danke Leute für die Hilfen, hab mir was zusammengebastelt jetzt aus den Vorschlägen

Also das ganze Backupscript sieht nun so aus:
Code:
# Backup des Ipad ordners wird erstellt
echo -e `date` "Backup erstellt" >>/var/log/skalierscript.log
mkdir /usr/local/nagvis-ipadBackup/
mkdir /usr/local/nagvis-ipadBackup/Backup_von_$(date +%d.%m.%Y)
cp -r -p /usr/local/nagvis-ipad/* /usr/local/nagvis-ipadBackup/Backup_von_$(date +%d.%m.%Y)
#Ältestes Backup wird gelöscht
cd /usr/local/nagvis-ipadBackup/
gesamtbackups=$(ls -d Back* | wc -l)
if [ $gesamtbackups = "8" ]; then
  rm -r $(ls -trl | head -2)
fi
 
Kleiner Tipp noch:

Auf eine andere HDD kopieren ansonsten hat ein Backup recht wenig Sinn ;)
 
Zurück
Oben