Plugin gesucht: automatisches Löschen nach x Tagen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Am besten gehst Du mal direkt mit Telnet auf die Box und führst erstmal dieses Kommando aus. Das sucht die alten .ts-Dateien und gibt die Namen aus:

      Shell-Script

      1. find /media/hdd/movie -mmin +170 -iname \*.ts -print

      Wenn das funktioniert, versuch mal das nächste. Dieses sollte dann die .del-Dateien anlegen:


      Shell-Script

      1. find /media/hdd/movie -mmin +170 -iname \*.ts -exec touch {}.del \;
      Hier wird von find für jeden Treffer das Kommando touch {}.del ausgeführt. Dabei werden die geschweiften Klammern {} durch den vollständigen Namen der gefundenen Datei ersetzt. Es wird also für jede gefundene Datei das Kommando touch /media/hdd/movie/gefundene-datei.ts.del ausgeführt. Das touch-Kommando legt eine leere Datei an, wenn die angegebene Datei noch nicht existiert.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RickX ()

    • Danke! Das hat so funktioniert (wenn auch zu gut: alles war weg :whistling: - ist ja eigentlich auch logisch; aber nachdem ich alle del-Dateien per filezilla gelöscht habe, war zum Glück wieder alles da).
      Es scheint also grundsätzlich zu funktionieren. Morgen werde ich mir das mal in Ruhe ansehen, damit nur diejenigen Dateien gelöscht werden (also eine del-Datei erzeugt wird), die auch in der dazugehörigen Datei "autodelete" dafür definiert wurden.

      Aktuell sieht der kompette script noch so aus:
      Spoiler anzeigen

      Shell-Script

      1. #!/bin/sh
      2. while read var
      3. do
      4. if ! [ "$var" = "" ]; then
      5. find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*" -exec touch {}'.del' \;
      6. fi
      7. done < /usr/script/autodelete

      Gruß Christoph :281:
    • Hast Du im Movie-Verzeichnis noch Unterordner, in denen auch gelöscht werden soll?

      Das Argument -maxdepth 1 sorgt dafür, dass nur im Startverzeichnis, also /media/hdd/movie, gesucht werden soll, ohne in Unterordner zu gehen. Ist das so gewünscht?

      In meinem Beispiel hatte ich das weggelassen. Ich habe auch nicht nach speziellen Namen gesucht, sondern als Beispiel einfach alle .ts-Dateien gesucht.

      In deinem Script wird eine Variable $var genutzt, mit der nur bestimmte Dateien gesucht werden. Das macht natürlich einen Unterschied. Dafür wird dann die Ausgabe von /usr/script/autodelete gelesen. Ich weiß aber nicht, wie die Ausgabe von /usr/script/autodelete aussieht und ob das überhaupt zu dem find passt...

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von RickX ()

    • Danke für Deine Erklärung - jetzt hab´ ich es so ungefähr verstanden.
      @hajeku123 hatte mir eigentlich auch schon den richtigen Script geliefert (Danke!). Der lief nur nicht, weil ich vergessen hatte, die Rechte auf "755" zu setzen. :whistling: :wall1:

      Jetzt klappt es - allerdings wurde teilweise eine ... .ts.meta.del erzeugt anstatt einer ... .ts.del
      Vermutlich hat das aber keine Auswirkungen, die Aufnahmen finden sich jetzt im Papierkorb und werden dort in ein paar Tagen auch hoffentlich komplett (mit allen dazugehörigen Dateien) endgültig gelöscht.
      :337:
      Gruß Christoph :281:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chrisly ()

    • Der Vollständigkeit halber (vielleicht bin ich ja nicht der Einzige, der das nutzen möchte):
      so funktioniert es mit dem neuen datenbankbasierten Papierkorb von VTI 13 (für Aufnahmen, die z.B. mind. 170 Minuten alt sind):
      Spoiler anzeigen

      Shell-Script

      1. #!/bin/sh
      2. while read var
      3. do
      4. if ! [ "$var" = "" ]; then
      5. find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*" -exec touch {}'.del' \;
      6. fi
      7. done < /usr/script/autodelete



      Diese Datei "autodel.sh" muss dann nach /usr/script (Rechte auf 755 setzen!).
      Dorthin gehört auch die dazu passende Datei "autodelete" (mit den Sendungstiteln, die gelöscht werden sollen, z.B. "Tagesschau").
      Gruß Christoph :281:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chrisly ()

    • Grundsätzlich funktioniert es so - die Datenbank wird aktualisiert, die Aufnahmen werden später auch aus dem Papierkorb gelöscht.
      Einziges Problem: es bleiben "Restdateien" übrig, weil neben der eigentlichen ts-Datei für jede weitere dazugehörige Datei (ap, cuts, eit, meta, sc) eine del-Datei erzeugt wird. Und diese weiteren del-Dateien bleiben auch nach dem endgültigen Löschen übrig.
      Gibt es evtl. eine Möglichkeit, den Befehl
      find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*" -exec touch {}'.del' \;
      so abzuändern, dass beim Löschen per Script nur EINE del-Datei angelegt wird, und zwar für die "echte" ts-Datei?
      Gruß Christoph :281:
    • brauchst alles Mundgerecht oder?
      steht doch im Thread und hat @RickX geschrieben.

      Ändere dein Script so, dass nur der find Befehl ausgeführt wird.
      Das mit while etc. braucht du nicht.

      Quellcode

      1. find /media/hdd/movie -mmin +170 -iname \*.ts -exec touch {}.del \;
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Versteh´ ich nicht. ?(
      Der while-Teil wird doch benötigt, um nur die Aufnahmen zu löschen, die in der Datei "autodelete" definiert wurden - oder?
      Gruß Christoph :281:
    • nein
      find sucht alle Dateien ab /media/hdd/movie
      Da maxdepth 1 nicht mit angegeben ist, werden alle Verzeichnisse von o.g VZ durchsucht und nur *.ts Dateien alles andere bleibt unberührt

      Edit
      Was für eine Datei „autodelete“?
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hajeku123 ()

    • In dieser Datei stehen die Aufnahmen (z.B. Tagesschau), die gelöscht werden sollen. Es sollen ja gerade NICHT alle Aufnahmen des gewünschten Verzeichnisses gelöscht werden ... ;)
      Gruß Christoph :281:
    • probiere mal so:

      Shell-Script

      1. #!/bin/sh
      2. while read var
      3. do
      4. if ! [ "$var" = "" ]; then
      5. if [ ${var:((${#var}-3)):3} == ".ts" ]
      6. then
      7. find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*" -exec touch {}'.del' \;
      8. fi
      9. fi
      10. done < /usr/script/autodelete
      Alles anzeigen
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • habe mir den Thread noch einmal durchgelesen.
      In der Datei steht laut #18 Die Sendung, welche gelöscht werden soll korrekt?

      Dann wird das wie oben geschrieben nicht funktionieren.
      sollte aber so gehen:

      Shell-Script

      1. #!/bin/sh
      2. while read var
      3. do
      4. if ! [ "$var" = "" ]; then
      5. find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*.ts" -exec touch {}'.del' \;
      6. fi
      7. done < /usr/script/autodelete
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen
    • Leider doch nicht. Die Aufnahmen landen zwar korrekt im Papierkorb, aber die del-Dateien werden durch den Cronjob täglich neu überschrieben. Das führt dann dazu, dass die Aufnahmen NIE aus dem Papierkorb gelöscht werden, wenn dort eingestellt ist, dass die Dateien erst nach z.B. 5 Tagen Verweildauer im Papierkorb gelöscht werden sollen (Alternativeinstellung Aufnahmealter ist für meine Zwecke ungeeignet - damit würde es aber wohl funktionieren).
      Gibt es evtl. eine Möglichkeit, das Überschreiben bereits vorhandener del-Dateien zu verhindern?
      Gruß Christoph :281:
    • so z.B.

      Shell-Script

      1. #!/bin/sh
      2. while read var
      3. do
      4. if ! [ "$var" = "" ]; then
      5. find /media/hdd/movie -mmin +170 -maxdepth 1 -iname "*$var*.ts" | while read f
      6. do
      7. if [ ! -f "$f.del" ]
      8. then
      9. touch "$f.del"
      10. fi
      11. done
      12. fi
      13. done < /usr/script/autodelete
      Alles anzeigen
      Rechtschreibfehler sind beabsichtigt, sie fördern ein genaueres Lesen
      Debug Log aktivieren Putty Telnet Screenshots erstellen