Daten nach Alter automatisch Löschen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

hanshipp

Benutzer
Registriert
02. Dez. 2012
Beiträge
113
Reaktionspunkte
21
Punkte
18
Hallo zusammen,

ich habe ein Tool, das nach jedem Start ein Backup auf meiner DS ablegt.
Leider hat das Tool keine auto. Bereinigung, daher sammeln sich die Backups an.
Bisher habe ich Sie selbst immer wieder gelöscht, da würde ich gerne Menge der Daten im Ordner löschen:
Also wenn mehr als 20 Sicherungen drinn liegen, dann die älteste 21-XXX Sicherung löschen.
Da reicht eine Prüfung z.B. 1 in der Woche oder Monat.
Würde das gerne nicht vom PC steuern, sondern lokal auf der NAS.
Gibts da evtl. ne gute APP oder muss das per Skript realisiert werden?
APP wäre mir lieber :), da ich nicht so gut im Skript Erstellen bin.

Danke und noch schöne Weihnachten
 
App wüsste ich nicht. Script aber easy machbar und planbar per Aufgabenplaner.
Bash:
cd /volume1/ORDNER/UNTERORDNER
find -mtime +2 -delete
Löscht alle Dateien im Ordner, die älter als 2 Tage sind
 
  • Like
Reaktionen: maxblank und DaveR
@plang.pl
Ist aber gefährlich wenn der PC von dem die Daten kommen Mal mehrere Tage aus ist. Dann steht man am Ende blöd da wenn alle Backups gelöscht sind.

Dann lieber so:
Code:
#!/bin/sh

#Hier den Pfad und die Anzahl deiner Dateien anpassen
DIR="/volume1/BackupOrdner" 
KEEP=20

cd "$DIR" || exit 1

COUNT=$(ls -1 | wc -l)

if [ "$COUNT" -gt "$KEEP" ]; then
    REMOVE=$((COUNT - KEEP))
    echo "$COUNT Dateien gefunden, lösche $REMOVE älteste Dateien."

    ls -1t | tail -n "$REMOVE" | xargs -r rm --
else
    echo "Nur $COUNT Dateien vorhanden, es gibt nichts zu löschen."
fi


>ls -1t< sortiert nach Datum, neueste zuerst

>tail -n "$REMOVE"< liest die sortierung aus und nimmt nur die letzten, ältesten Dateien.

xargs rm löscht die Dateien ohne Rückfragen und ohne Wiederherstellungsmöglichkeiten (sofern kein Backup besteht).


Achtung!
Ich kann deinen restlichen Aufbau natürlich nicht beachten. Ich würde das Skript an deiner Stelle vorher an unkritischer Stelle in deinem Aufbau testen.

Das Skript ist eine abgewandelte Form eines Skripts welches ich auf einem meiner Debian Systeme nutze. Es sollte auf einer Synology auch laufen.
Ausprobiert habe ich's aber nicht.
 
Hi zusammen,

vielen Dank für eure Hilfe.
Ich habe auch noch immer das Fullbackup des Rechners, das sichere ich bei jedem Start des Systems

Ja schön wäre nantürlich, wenn die letzten 4-5 immer stehen bleiben.
Aber ich werde eure Vorschläge mal laufen lassen.
 
Guten Morgen:

ich hab gerade bemerkt, dass mein Skript oben Probleme mit Leerzeichen im Dateinamen hat.

Leider kann ich den oberen Beitrag nicht mehr editieren.
also hier die angepasste Version die das behebt:
Code:
#!/bin/sh

DIR="/volume1/BackupOrdner"
KEEP=20

cd "$DIR" || exit 1

COUNT=$(ls -1 | wc -l)

if [ "$COUNT" -gt "$KEEP" ]; then
    REMOVE=$((COUNT - KEEP))
    echo "$COUNT Dateien gefunden, lösche $REMOVE älteste Dateien."

    ls -1t | tail -n "$REMOVE" | while IFS= read -r file; do
        rm -- "$file"
    done
else
    echo "Nur $COUNT Dateien vorhanden, es gibt nichts zu löschen."
fi

zusätzlich wurde das skript nun auf einer DS218j getestet und ich kann bestätigen dass es funktioniert :)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: maxblank
Dann schiebe ich mal mein Rotationsskrip noch nach. Das hatte ich mir für Backups erstellt, wo ich nicht nur eine feste Anzahl an Versionen behalten möchte, sondern zeitlich variiert:
https://github.com/geimist/archive_rotate
 
  • Like
Reaktionen: hanshipp und maxblank

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat