BASH-Script: in einem Verzeichnis sollen nur die 3 aktuellsten Dateien verbleiben, der Rest soll gelöscht werden

  • Hallo,

    kann mir bitte mal jemand auf die Sprünge helfen.

    Im Rahmen eines Backup-Scriptes sollen nach erfolgreichem Backup nur die letzten 3 aktuellsten Dateien erhalten bleiben. Ältere sollen gelöscht werden.

    Meine Idee ist, mit ls -tr erst mal die Gesamtanzahl zu ermitteln und dann durch die Differenz der beiden Werte mit head -n -x die entsprechenden Files zu löschen, wenn die Differenz größer 0 ist.

    Naja, ich scheitere schon mal daran, die Gesamtanzahl in die Variable $ANZ zu bekommen :@

  • BASH-Script: in einem Verzeichnis sollen nur die 3 aktuellsten Dateien verbleiben, der Rest soll gelöscht werden? Schau mal ob du hier fündig wirst!

  • Wie oft wird das Backup durchgeführt, täglich oder öfter?

    Für täglich habe ich ein ähnliches Script per cron laufen, das einfach alle Dateien älter als 14 Tage löscht:

    Code
    50 22 * * * find /root/.cvdupdate/database/ -iname "*" -mtime +14 -delete

    Gruss

  • BTW: in raspiBackup passiert sowas auch - allerdings fuer Verzeichnisse. Der Code dazu sieht wie folgt aus:

    Code
    pushd "$BACKUPPATH" 1>/dev/null
    ls -d *-$BACKUPTYPE-* 2>/dev/null | grep -vE "_" | head -n -$KEEPBACKUPS | xargs -I {} rm -rf "{}" 
    popd > /dev/null        

    Den Code musst Du nur noch etwas fuer Dein konkretes Requirement anpassen ;)

  • framp Man kann es nie ausschliessen und deshalb sollte man sich der evtl. auftretenden Probleme bewusst sein.

    War ja auch nur eine Randnotiz.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • War ja auch nur eine Randnotiz.

    Fuer mich aber sehr interessant :thumbup: . bash ist leider gerade mit dem Wordsplitting sehr anfaellig fuer Fehler. Wuerden die Backupverzeichnissnamen nicht von raspiBackup generiert sein und z.B. von Nutzern konfigurierbar sein wuerde ich jetzt den Code aendern. Denn viele Nutzer sind primaer Windowsnutzer und dort sind Leerzeichen in Dateinamen durchaus normal :-/

  • Peha01 IMHO noch wichtige Anmerkung: Sowohl Du als auch der Code von framp nutzen ``pushd`` und prüfen nicht ob das überhaupt geklappt hat, sondern machen einfach so weiter als hätte das schon geklappt. Wenn es das nicht hat, werden also am Ende *irgend wo anders Dateien gelöscht*. Vielleicht nicht so eine tolle Idee…

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • nutzen ``pushd`` und prüfen nicht ob das überhaupt geklappt hat,

    Es wird $BACKUPPATH genutzt und gleich zu Anfang wird in raspiBackup geprueft ob das Verzeichnis existiert.

    Aber Du hast natuerlich Recht - in der Zwischenzeit kann aus irgendwelchen Gruenden das Verzeichnis verschwunden sein, nicht mehr lesbar sein oder sonstiges dazu fuehren dass das Verzeichnis nicht mehr zugreifbar ist und das fuehrt dann zu boesen Effekten :-/ Ist zwar unwahrscheinlich dass das passiert - aber nicht unmoeglich. Darum habe ich in raspiBackup eben einen RC Check eingebaut :)

    Danke fuer den Hinweis.

  • Falls ``$BACKUPPATH`` das Verzeichnis ist wo die Sicherungen hingeschrieben werden, fände ich das gar nicht so unwahrscheinlich, dass das Laufwerk mal verschwindet, beispielsweise wenn es per USB angeschlossen ist und aus irgendeinem Grund der Kontakt wegbricht — schlechte Stecker/Kabelverbindung, Hund zerrt am Kabel, jemand stolpert über das Kabel, … ?

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!