DSM 7.2 Skript zum automischen Löschen in einem Ordner

  • 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

charliekay74

Benutzer
Registriert
15. Jan. 2024
Beiträge
65
Reaktionspunkte
10
Punkte
64
Ich habe eine Ordner mit TV Aufnahmen vom DVBViewer als *.ts Files auf einer externen Festplatte, die an eine ds224+ angeschlossen ist (Ordner heisst "TV Aufnahmen" an usbshare1). Ich möchte, dass in dem Ordner alte Dateien gelöscht werden, wenn der Speicherplatz knapp wird. Ich habe chatgpt nach einem Skript gefragt, das ich dazu mit dem Aufgabenplaner täglich als root laufen lassen möchte. Es tut sich aber nichts beim Ausführen des Skripts. Was mache ich falsch? Ist der Pfad falsch oder fehlen Rechte? Hier das Skript, das Dateien, die älter als 20 Tage sind, löschen soll. Habe ich in der Aufgabe in "Benutzerdefinierte Skripts" hinein kopiert als Text"

#!/bin/sh
TARGET="/volumeUSB1/usbshare/TV Aufnahmen"
FREESPACE=$(df -k "$TARGET" | tail -1 | awk '{print $4}')
LIMIT=500000
if [ "$FREESPACE" -lt "$LIMIT" ]; then
find "$TARGET" -type f -mtime +20 -delete
fi
 
Zuletzt bearbeitet:
Mmh, sieht eigentlich ganz gut aus. Bau mal noch einige Debug-Ausgaben ein damit du siehst, ob er bis zum find kommt.

Bsp:
Code:
#!/bin/sh
TARGET="/volumeUSB1/usbshare/TV Aufnahmen"
FREESPACE=$(df -k "$TARGET" | tail -1 | awk '{print $4}')
LIMIT=500000
if [ "$FREESPACE" -lt "$LIMIT" ]; then
echo "Limit $LIMIT mit $FREESPACE erreicht, lösche folgende Dateien ..."
find "$TARGET" -type f -mtime +20
find "$TARGET" -type f -mtime +20 -delete
fi
 
Debug Ausgaben heisst Protokolle/Ausgabeergebnisse speichern?

Mir fällt gerade auf: Wahrscheinlich führt er es noch nicht aus, wenn ich auf "ausführen" gehe, weil der Speicher noch nicht knapp ist.


Habe es jetzt hiermit getestet und funktioniert. Somit scheint das Problem gelöst. Danke aber für die Hilfe!!!

#!/bin/bash

# Zum Ordner wechseln
cd "/volumeUSB1/usbshare/TV Aufnahmen" || exit

# Dateien löschen, die älter als 30 Tage sind
find . -type f -mtime +30 -exec rm -v {} \;
 
Zuletzt bearbeitet:
Nein, einfach mal manuell einmalig ausführen und dann im Aufgabenplaner auf Aktion, Ergebnis anzeigen klicken. Da siehst du die letzten Ausgaben.
 
Zuletzt bearbeitet:
<1745745653951.png

1745745687483.png

Müsste funktionieren. Er hat die älteren Dateien gelöscht.
 
Wie gesagt, bau mal noch einige Ausgaben ein, damit du auf jeden Fall siehst, ob nur das Limit nicht erreicht wurde oder ob einfach nichts gefunden wurde.
 
  • Like
Reaktionen: charliekay74

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