Automatisches Löschen von älteren Serien

  • Und ich würde dennoch ein if-Konstrukt darüber setzen, da es sonst Fehlermeldungen gibt, sollte nichts gefunden werden. ;)

    Fast perfekt. Wenn man den * weglässt (es ist find [PATH], wenn Du ein * anhängst wird versucht in dem Suchpfad zu expandieren, was nicht geht wenn er leer ist) kann man sich das IF-Konstrukt sparen.


    Code
    find /hdd/movie/Nachrichten/ -type f -mtime +3 -maxdepth 1 -delete


    und zum copypasten (hab mir jetzt schon 2x das flash geschreddert und hatte die crontab nicht im backup, doh!);

    Code
    #
    # clean out 2 day old news at 23:00  	
    00 23 * * * find /hdd/movie/Nachrichten/ -type f -mtime +3 -maxdepth 1 -delete
    #                              	
    # clean out /hdd/movie/autoclean                                           	
    10 23 * * * find /hdd/movie/autoclean/days/ -type f -mtime +3 -maxdepth 1 -delete
    20 23 * * * find /hdd/movie/autoclean/weeks/ -type f -mtime +28 -maxdepth 1 -delete
    30 23 * * * find /hdd/movie/autoclean/months/ -type f -mtime +180 -maxdepth 1 -delete


    Und jetzt noch cron einschalten (ein mal per telnet oder ssh machen)

    Code
    root@dm7020hd:~#  update-rc.d busybox-cron defaults
    root@dm7020hd:~#  /etc/init.d/busybox-cron  start

    Edited 3 times, last by pcfe: EDIT1: doh!, das sollte natürlich -maxdepth 1 heissen EDIT2: crontab zum copypaste angefügt EDIT3: update-rc Teil angefügt ().

  • ...deshalb back ich das hier auch noch mal auf !!


    Moin Moin....


    ich möchte den oben beschriebenen Ansatz gerne nochmal weiter spinnen....


    Auch ich möchte verrschiedene Sendungen immer via AutoTimer aufnehmen.... oftmals komme ich aber gar nicht dazu sie zu gucken, deshalb sollen sie auch automatisch wieder gelöscht werden.


    Dazu habe ich mir verschiedene tags angelegt, um mir die entspr. Aufnahmen filtern zu können:


    AutoLoesch1 > löscht Aufnahmen, die älter als 24 Std sind
    AutoLoesch2 > löscht Aufnahmen, die älter als 48 Std sind
    ...
    AutoLoesch7 > löscht Aufnahmen, die älter als 1 Woche sind
    ...
    AutoLoesch14 > löscht Aufnahmen, die älter als 1 Woche sind
    ...
    AutoLoeschn > löscht Aufnahmen, die älter als n Woche sind



    Nun habe ich mit Linux Shell Scripting nicht viel zutun, möchte mich für diesen Fall aber gern ein wenig einarbeiten.


    Wie baut man das ganze nun am besten auf ?? Ginge das vielleicht so ??


    1. via grep in allen .meta files nach "AutoLoeschx" suchen und x in Variable merken
    2. von der Ausgabe das suffix abtrennen und checken, ob as dazugehörige .ts-file älter ist als x (.meta file könnte geändert worden sein)
    3. prüfen, ob files im Zugriff
    4. löschen aller zur Aufnahme gehörenden files


    Wie kann ich von dem Ausgabestring hinten das Suffix abschneiden ??
    Hat "find"tatsächlich kein stdin ??


    Kann mir vielleicht jemand helfen und mir die benötigten tools nennen, mit denen sich das erledigen ließe.


    Endlos zu Dank verpflichet.

  • Man koennte das Ganze in Python machen, da die Dreambox eine "komplette"
    Python-Installation standardmaessig mitbringt. Da muss man sich keine grossen
    Gedanken ueber Pipes, Leerzeichen/Sonderzeichen im Dateinamen etc. machen.
    In Shell-Skripten wird das sehr schnell proplematisch.
    Aber um bei der Frage zu bleiben, verwende find zusammen mit "-exec", um fuer
    bestimmte Dateien (.meta) jeweils ein Script aufzurufen.
    In das Skript kannst Du das grep reinpacken und fuer das "Abschneiden" von einem
    Suffix solltest Du mal in der Hilfe der bash-Shell nach "Parameter Expansion" suchen.
    Da ist alles drin, was man zum manipulieren von "Worten" braucht. Einfach mal
    selbst damit experimentieren oder im INet nach Beispielen suchen.
    Im Skript musst Du natuerlich dann auch die bash verwenden (#!/bin/bash).

    DM900 SS, DM8000SSSS
    Kein Support per PN! Nutzt das Forum zum Fragen, dann haben auch andere etwas davon.

  • Ich habe mir ein Python-Skript zum Entfernen alter Aufnahmen geschrieben, das einen etwas anderen Ansatz verfolgt. Und zwar löscht es aus einem konfigurierbaren Verzeichnisbaum solange die ältesten Dateien, bis auf der Festplatte wieder ein bestimmter konfigurierbarer Speicherplatz zur Verfügung steht. Das heißt, das Skript löscht nicht einfach, wenn die Aufnahmen ein bestimmtes Alter überschritten haben, sondern wirklich erst, wenn das vom Speicherplatz her notwendig ist, um neue Aufnahmen speichern zu können.


    Es heißt cleanup.py und ihr findet es unter https://github.com/jbretsch/pvrutils


    Ich lasse das Skript einfach immer auf /hdd/media/movie los, weil ich keine Aufnahmen ewig behalten möchte. Wenn man nun wirklich ein paar Aufnahmen hat, die nie automatisch gelöscht werden sollen, dann könnte man sich folgende Verzeichnisstruktur anlegen:


    /hdd/media/movie/permanent/
    /hdd/media/movie/temporaer/


    Dann sorgt man dafür, dass die Aufnahmen, die nie gelöscht werden sollen, in irgendeinem beliebigen Unterverzeichnis von /hdd/media/movie/permanent/ gespeichert werden; und die, die automatisch aufgeräumt werden sollen, irgendwo unter /hdd/media/movie/temporaer/. Dann kann man mein Skript per cronjob regelmäßig auf /hdd/media/movie/temporaer/ loslassen. Dort wird dann aufgeräumt. Und alles in /hdd/media/movie/permanent/ bleibt unberührt.

  • Ich habe mein Aufräumskript cleanup.py (https://github.com/jbretsch/pvrutils) noch etwas erweitert. Man kann ihm jetzt beliebig viele Verzeichnisse übergeben. Nur aus diesen Verzeichnissen werden Dateien beim Aufräumen gelöscht.


    Das heißt, wenn man folgende Verzeichnisstruktur hat


    /hdd/media/movie/comedy
    /hdd/media/movie/kinder
    /hdd/media/movie/spielfilme


    und dann


    cleanup.py -s 50000 /hdd/media/movie/comedy /hdd/media/movie/kinder


    ausführt, dann wird cleanup.py solange die ältesten Dateien/Aufnahmen aus /hdd/media/movie/comedy und /hdd/media/movie/kinder löschen, bis mindestens 50.000 MB auf der Festplatte wieder frei sind. Aus /hdd/media/movie/spielfilme wird es nichts löschen.

  • Da ich vor kurzem vom einer DM7020 HD auf eine DM900 UHD umgestiegen bin (und somit endlich systemd auch auf meinem PVR habe ;-),
    putze ich nun /media/hdd/movie/autoclean via systemd timer.


    Nachrichten und Sport werden nach 3 Tagen gelöscht, alles andere mittels cleanup.py


    Falls jemand copypasta machen will (oder ich es nochmal aufsetzen muss)


    i. Den Dienst erstellen (an systemd-tmpfiles-clean.service angelehnt)


    ii. Den zugehörigen Timer erstellen (an systemd-tmpfiles-clean.timer angelehnt).
    Im Beispiel 5 Minuten nach hochfahren, sowie alle 4 Stunden.




    iii. Das autoclean script an sich


    iv. cleanup.py installierenEinfach laut Anleitung
    Ausführbar machen nicht vergessen!



    v. Aktivieren

    • Timer aktivieren für den nächsten boot
    • Timer sofort starten
    • Timer prüfen
    • autoclean Skript ausführbar machen
    Bash
    root@dm900uhd:~# systemctl enable autoclean-recordings.timer
    root@dm900uhd:~# systemctl start autoclean-recordings.timer
    root@dm900uhd:~# systemctl list-timers
    root@dm900uhd:~# chmod u+x auto-clean-script.sh

    Edited 3 times, last by pcfe ().