TV-Aufnahmen vom Enigma2-Receiver automatisch archivieren

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Seit einiger Zeit bin ich nun gl√ľcklicher Besitzer¬†einer VU+ Solo 4k, die¬†dank JESS-Multischalter insgesamt¬†acht unabh√§ngige SAT-Tuner¬†zur Verf√ľgung stellt (alle Infos). Da nun¬†im Grunde fast unbegrenzt viele gleichzeitige Aufnahmen m√∂glich sind,¬†kommt der¬†Autotimer noch¬†h√§ufiger zum Einsatz, was die installierte¬†500¬†GB gro√üe SSD entsprechend¬†schnell mit Daten f√ľllt.

Damit jedoch¬†immer genug Speicherplatz zur Verf√ľgung steht, musste ein¬†Bash-Script her, um Aufnahmen¬†automatisch auf eine externe ¬†HDD (bzw. NAS) auszulagern. Wie diese Archivierung¬†im Detail funktioniert, ist Inhalt der¬†nachfolgenden Anleitung.

Genug (externen) Speicherplatz vorsehen

In diesem Beispiel¬†wird eine taufrische VU+ Solo 4k (Affiliate-Link) mit aktuellem VTi-Team-Image¬†9.0.2 eingesetzt.¬†Nachfolgende Anleitung l√§sst sich aber vermutlich auch auf fast jeder Enigma2-basierten Settop-Box (Dreambox oder √Ąhnliches) umsetzen.

Wie schon im Artikel VU+ Solo 4K und JESS-Multischalter ‚Äď Acht unabh√§ngige Sat-Tuner √ľber ein Kabel angesprochen, ist¬†eine Samsung 850 500 GB (Affiliate-Link) installiert, um erstmal intern Speicherplatz f√ľr neue Aufnahmen bereitzuhalten.

Der Grund f√ľr den Einsatz der SSD ist schlicht, dass sie aus dem Standby ohne Verz√∂gerung aufwacht und als positiver Nebeneffekt nochmal¬†deutlich weniger Strom verbraucht¬†als eine vergleichbare 2,5″ HDD. Das ist nicht nur f√ľr gerade¬†startende Aufnahmen praktisch, sondern beschleunigt vorallem¬†auch den Zugriff auf die¬†Aufnahmeliste, welche im Vergleich zur HDD in einem Bruchteil der Zeit l√§dt. Sicherlich Luxus, da man sich auch einige Sekunden gedulden kann, einmal im Einsatz, m√∂chte man den Speed-Boost aber nicht mehr missen.

Leider sind¬†SSDs im Vergleich zu gew√∂hnlichen¬†HDDs jedoch immer noch kostspieliger, weshalb Aufnahmen irgendwann (eher fr√ľher als sp√§ter) auf eine externe Festplatte (oder ein NAS) ausgelagert werden m√ľssen. Gerade HD-Aufnahmen verbraten hier oftmals¬†10¬†GB und mehr pro Stunde, sodass auch der Speicherplatz einer 500 GB fassenden SSD schnell aufgebraucht ist.

Hier kommt das nachfolgende Bash-Script zum Einsatz, welches die SDD einmal pro Tag untersucht und √§ltere Aufnahmen automatisch auf eine am Receiver extern angeschlossene USB-Platte verschiebt, sofern der Speicherplatz der internen¬†SSD¬†langsam zur Neige geht. Eingesetzt wird dazu eine 2,5″ HDD von Toshiba mit 3TB (Affiliate-Link), welche bereits vorher¬†als Datengrab f√ľr TV-Recordings eingesetzt wurde.

VUPlus mit Archiv-HDD

Wer auf „Nummer-Sicher“ gehen will, kann aber nat√ľrlich auch direkt eine massive 8TB HDD von Seagate (Affiliate-Link) einsetzen, welche in¬†einer Inateck USB-Dockingstation (Affiliate-Link) untergebracht werden kann. Die Platte kann ich f√ľr derartige Backups nur empfehlen, da der Preis pro GB derzeitig¬†unschlagbar¬†ist.¬†Diese¬†sollte dann insbesondere auch exzessiven Aufnahmefetischisten¬†erstmal gen√ľgend Reserven bieten.

Archivierungs-Script downloaden

Mein fertiges Script archive.tar (19845 Downloads) kann direkt heruntergeladen werden. Damit es aber nicht erst¬†auf den Rechner geladen und entpackt werden muss, um danach fummelig¬†per FTP auf dem Enigma2-Receiver √ľbertragen¬†zu werden, kann es auch direkt per wget vom Receiver aus gedownloaded¬†werden. Dazu wird erstmal eine Terminalverbindung zum Receiver aufgebaut:

ssh root@192.168.3.148

Die IP-Adresse 192.168.3.148 muss nat√ľrlich jeder entsprechend¬†anpassen. Ein¬†Standardpasswort existiert bei einer¬†VTi-basierten Box¬†nicht (kann bei anderen Images abweichen).¬†Mit dem Befehl

wget https://www.meintechblog.de/download/archive.tar -O /etc/tuxbox/config/archive.tar

wird das tar-gepackte Script vom meintechblog-Server heruntergeladen und mit

tar -xf /etc/tuxbox/config/archive.tar

entpackt.¬†Damit das Script¬†ausf√ľhrbar ist, wird noch

chmod +x /etc/tuxbox/config/archive.sh

eingegeben.

Archivierungs-Script anpassen und starten

Im Grunde kann das Script jetzt bereits gestartet werden, wobei die Ordnerstruktur erst noch gepr√ľft und evtl. angepasst¬†werden sollte.

Aufnahmeordner der SSD: Standardm√§√üig wird der Ordner¬†/media/hdd/movie/“¬†als Quelle (source) auf neue Aufnahmen gepr√ľft.

Archivierungsordner der HDD: Als Ziel¬†(destination) wird dann der Ordner „/media/hdd2/archive/“ f√ľr die dauerhafte Sicherung herangezogen.

Die jeweils ältesten Aufnehmen werden dann der Reihe nach solange vom Quell- ins Zielverzeichnis verschoben, bis das Quelllaufwerk wieder mehr als 100 GB (100000000 kB) freien Speicher aufweist.

Wer hier √Ąnderungen am Script vornehmen m√∂chte, kann den¬†vi-Editor benutzen, der jedoch gerade f√ľr Anf√§nger alles andere als einfach zu handhaben ist. Mit nachfolgender Anleitung sollte es aber auch Einsteigern m√∂glich sein, die notwendigen √Ąnderungen an den betroffenen Verzeichnissen vornehmen¬†zu k√∂nnen.

Mit dem Befehl

vi /etc/tuxbox/config/archive.sh

wird das Script mit dem vi-Texteditor geöffnet.

Damit √Ąnderungen vorgenommen werden k√∂nnen, muss erstmal vom Befehlsmodus in den Schreibmodus gewechselt werden. Dies geschieht durch einen Druck auf die Taste i. Hat der Wechsel in den¬†Schreibmodus geklappt, wird ganz links unten ein gro√ües I angezeigt und die gew√ľnschten Einstellungen k√∂nnen angepasst werden:

source_root="media"
source_volume="hdd"
source_folder="movie"

destination_root="media"
destination_volume="hdd1"
destination_folder="archive"

source_freespace_minimum="100000000" #kB -> entspricht 100GB

Vermutlich muss – wenn √ľberhaupt – nur das „destination_volume“ angepasst werden, da die Angaben zur¬†„source“ mit gro√üer Wahrscheinlichkeit bereits stimmen.

Sobald die √Ąnderungen vorgenommen wurden, wird mit der Taste Esc (Escape) vom Schreibmodus zur√ľck in den Befehlsmodus gewechselt. Jetzt wird links unten statt I wieder ein – angezeigt.

Um die Datei zu speichern und den vi-Editor zu verlassen, wird die Tastenfolge :wq eingegeben und mit Enter best√§tigt. M√∂chte man die √Ąnderungen doch nicht speichern, gibt man stattdessen :q! ein.

Manuell gestartet wird das Script dann mit dem Befehl:

/etc/tuxbox/config/archive.sh

Sofern etwas schief laufen sollte, gibt das Script direkt R√ľckmeldung, was gerade¬†das Problem ist.

Dazu sind einige weitere Abfragen eingebaut, die den Dauereinsatz sicherstellen sollen. Dazu geh√∂ren bspw. auch Pr√ľfungen, ob das Quellverzeichnis und das Zielvolume¬†tats√§chlich¬†existieren und ob Aufnahmen bereits abgeschlossen sind. Denn nur in diesem Fall macht es auch Sinn, Aufzeichnungen zu verschieben, laufende Aufnahmen werden √ľbersprungen. Sollte¬†das Zielvolume zwar vorhanden sein, das Zielverzeichnis jedoch fehlen, wird dieses bspw. auch automatisch angelegt.

Klingt alles trivial, ist in Summe aber schon etwas komplexer. Gerade die Reihenfolge der Abfragen ist bspw. auch so gewählt, dass auf das Ziel erst dann zugegriffen und damit die Ziel-Festplatte aus dem Tiefschlaf geweckt wird, sofern auch tatsächlich ein Archivierungsbedarf (Quellvolume voll) vorhanden ist.

Auch werden keine Daten mehr archiviert, sofern das Zielvolume voll ist. In diesem Fall wird mit dem im Script integrierten Befehl

wget -O - -q 'http://127.0.0.1/web/message?type=2&text=Archivierung%20gescheitert%2C%20da%20nicht%20genug%20Speicherplatz%20vorhanden' >/dev/null 2>&1

auch eine passende Bildschirmnachricht angezeigt, damit man dar√ľber informiert wird, dass wieder Speicherplatz freiger√§umt werden sollte.

Archivierung gescheitert da nicht genug Speicherplatz vorhanden

Wer die Nachricht anpassen möchte, muss darauf achten, dass der Text URL-codiert ist. Dazu kann der Dienst url-encoder.de genutzt werden.

Weiterhin¬†k√∂nnte man evtl. auch noch zus√§tzliche¬†Benachrichtigungen einbauen, um bspw. auch FHEM dar√ľber zu informieren und dann das¬†„Smart Home“¬†als Signalgeber (blinkendes Licht oder was auch immer) zu nutzen. Mal sehen, vielleicht f√ľge ich diese Funktion zu einem sp√§teren Zeitpunkt noch¬†hinzu. Aktuell bin ich mit der Bildschirminfo aber schon ganz gl√ľcklich.

Ausf√ľhrung des Scripts¬†automatisieren

Wirklich spannend ist¬†das Ganze¬†nat√ľrlich erst dann, wenn das Archivierungs-Script regelm√§√üig ausgef√ľhrt wird, was sich √ľber den Crontab realisieren l√§sst.

Dazu wird der Befehl

vi /etc/cron/crontabs/root

ausgef√ľhrt (alternativ „crontab -e“ – ohne Anf√ľhrungszeichen) und der Eintrag

0 11 * * * /etc/tuxbox/config/archive.sh

erg√§nzt. Da es sich wie oben um den vi-Editor handelt, muss vor dem Einf√ľgen erst¬†mit der Taste i in den Schreibmodus gewechselt werden. Nach dem Hinzuf√ľgen des Eintrags¬†dann wieder mit¬†Esc¬†zur√ľck in den Befehlsmodus und :wq¬†(Speichern und Beenden) und mit Enter¬†best√§tigen.

0 11 * * *

bedeutet √ľbrigens, dass das Script einmal pro Tag um 11:00 Uhr ausgef√ľhrt wird. Hier k√∂nnte man nat√ľrlich auch die Frequenz erh√∂hen, in der Praxis sollte es in dieser Form aber ausreichend sein. Wer m√∂chte, kann das Script aber bspw.¬†auch mit

*/30 * * * *

alle 30 Minuten ausf√ľhren lassen.

Jedoch kann es dann zu Problemen kommen, sobald¬†das Script gestartet wird, im Hintergrund aber gerade¬†immer noch Dateien verschoben werden. Dieses Problem l√§sst sich nat√ľrlich auch mit etwas Code l√∂sen, aber wie gesagt, reicht es aus, wenn das Script einmal pro Tag ausgef√ľhrt wird. Eine Ausf√ľhrung um 11 Uhr hat dann auch den Vorteil, dass vermutlich in dieser Zeit auch keine Aufnahmen abgespielt werden und dann die Chance gering ist, dass¬†Dateien w√§hrend¬†der Wiedergabe verschoben werden.

Damit der Crontab auch seine Arbeit verrichtet, benötigt er noch die notwendige Berechtigung, die mit

chmod 744 /etc/cron/crontabs/root

hinzugef√ľgt wird.¬†Weiterhin muss der Crontab einmal mit

/etc/init.d/busybox-cron start

gestartet werden.

Wer nachtr√§glich √Ąnderungen am Inhalt des Crontab vornehmen m√∂chte, kann ihn daraufhin mit „/etc/init.d/busybox-cron restart“¬†(ohne Anf√ľhrungszeichen) neu starten. Wer ihn g√§nzlich¬†stoppen m√∂chte, kann dies mit¬†¬†„/etc/init.d/busybox-cron stop“ tun.

Aus meinem täglichen Leben

Lange habe ich an dem Script get√ľftelt, um die f√ľr mich passende L√∂sung zu finden. Und noch l√§nger habe ich¬†√ľberlegt, ob ich das¬†Script √ľberhaupt zur Verf√ľgung stellen soll. Da¬†aber¬†bereits mehrere Leser nach dieser Funktion gefragt haben, m√∂chte ich meine Erkenntnisse nun doch teilen. Ich denke, dass das Script ohne inhaltliche √Ąnderung von jedem sinnvoll¬†genutzt werden kann und hoffe, dass es zumindest einigen Lesern beim t√§glichen Betrieb weiterhilft.

Außerdem bieten die Inhalte des Blogposts eine recht gute Grundlage, um die technischen Grundlagen der Enigma2-Receiver und damit Linux kennenzulernen. Hat man die Logik einmal verinnerlicht, kann man recht schnell ganz nette Dinge per Bash-Scipts automatisieren. Sei es der Neustart einer Softcam bei Nichterkennung einer Smartcard oder eine eventgesteuerte Standbyschaltung des Receivers, im Grunde sind der Phantasie keine Grenzen gesetzt.

Vermutlich l√§sst sich¬†obige Logik auch recht schnell in eine¬†per Plugin-Men√ľ installierbare „App“ √ľberf√ľhren. Dazu fehlt mir – zumindest aktuell – noch das notwendige Wissen und der Antrieb. Aber vielleicht findet sich ja auch ein f√§higer¬†Entwickler, der aus obigem Archivierungsscript¬†ein kleines Programm stricken m√∂chte.¬†Mein Code kann zu diesem Zweck jedenfalls gerne wiederverwendet¬†werden.

Loxone im Einsatz? Dann schau dir unseren LoxKurs an und profitiere von unserem Wissen!

Verpasse keine Inhalte mehr! Trage dich in den Newsletter ein und folge uns auf Facebook.

Was ist ein Affiliate-Link? Wenn du auf einen Affiliate-Link klickst und √ľber diesen Link einkaufst, bekomme ich vom betreffenden Online-Shop oder Anbieter eine Provision, was mich u.A. bei den laufenden Kosten den Blogs unterst√ľtzt. F√ľr dich ver√§ndert sich der Preis nicht.

Jörg

hat meintechblog.de ins Leben gerufen, um seine Technikbegeisterung und Erkenntnisse zu teilen. Er veröffentlicht regelmäßig Howtos in den Bereichen Smart Home und Home Entertainment. Mehr Infos

46 Gedanken zu „TV-Aufnahmen vom Enigma2-Receiver automatisch archivieren“

  1. Hi Jörg,

    super Beitrag wie immmer, aber eine Frage tut sich mir auf? Warum speicherst Du nicht gleich auf einem NAS? Ich mache das so und bin vollendszufrieden. Einzig wenn das NAS „schlafen geht“ dann dauert es einige Sekunden bis die Filmliste kommt.

    Liebe Gr√ľ√üe aus √Ėsterreich
    Clemes

    1. Hi Clemens,
      mit den Direktaufnahmen aufs NAS habe ich auch schon l√§nger Erfahrungen gesammelt. Es kam dabei immer mal wieder vor, dass das NAS aufgrund eines Updates neugestartet werden musste, gerade ausgelastet oder aus sonst einem Grund im Netzwerk nicht erreichbar war, was gerade aktive Aufnahmen dann zunichte machte. Das passiert nat√ľrlich nicht dauernd, aber wenn gerade die Lieblingssendung nicht oder nur teilweise aufgenommen wurde, reicht schon eine einzige fehlende/fehlerhafte Aufnahme, um den Wunsch nach Verbesserung auf den Plan zu rufen. Aus diesem Grund setze ich jetzt auch die SSD daf√ľr ein, da hierbei einfach viel weniger potenzielle Probleme auftreten k√∂nnen. R√ľckblickend betrachtet, hatte ich damit die letzten Monate auch nie auch nur einen einzigen Aussetzer. Au√üerdem hat sicherlich auch nicht jeder ein NAS, welches 24/7 in Betrieb ist bzw. das eine Schnellstartfunktion aus dem Standby besitzt. Aber klar, es gibt immer abweichende Settings und nat√ľrlich immer verschiedene M√∂glichkeiten ans Ziel zu gelangen.

      Gr√ľ√üe
      Jörg

  2. Moin Jörg,

    schöne Anleitung, um den chronischen Platzmangel auf Aufnahme-Devices zu begegnen.

    Beim Lesen Deines Beitrags sind mir ein paar Punkte aufgefallen, die man verbessern könnte.

    1) Warum packst Du ein einziges Shell-Script in einen Tarball ? Das macht aus meiner Sicht keinen Sinn, sondern nur Mehrarbeit beim Ver- und Entpacken. Ein Komprimierungs-Effekt entsteht dabei auch nicht, sondern genau das Gegenteil. Das Shell-Script hat ausgepackt 7 Kb, der Tarball aber 10 Kb (gemessen auf meinem Apple-OSX-BS).

    2) Der Befehl zum Lades des Scriptes in den VI lautet: vi /etc/tuxbox/config/archive.sh und _nicht_ vi /etc/tuxbox/config/archive.tar. Ausgepackt war das Script da ja schon.

    Noch eine Frage zum Script. Es gibt in Zeile 81 eine Variable, die ich nicht verstehe: file_without_folder=${file##*\/} . Was wird in dieser Zeile genau gemacht ?

    Das Script selber ist sch√∂n √ľbersichtlich geschrieben mit ausreichenden Erkl√§rungen im Code.

    Ein paar Erweiterungen daf√ľr sind mir auch schon eingefallen. Zum Beispiel k√∂nnte es sein, da√ü das Backup-Medium nicht am selben Rechner angeschlossen ist, sondern an einem externen Rechner im selben Netz. Damit dieser nicht st√§ndig eingeschaltet sein mu√ü, k√∂nnte man ihn aus dem Script heraus hochfahren (z. B. mit einem WOL-Paket) und nach erledigter Arbeit auch wieder herunterfahren (z. B. per knockd). Beide Anwendungsf√§lle sind √ľbrigens im neuen Buch von Stefan Heinle (Heimautomation mit KNX, Dali, 1-Wire und Co.) super erkl√§rt.

    Viele Gr√ľ√üe

    Heiner

    1. Hi Heiner,
      danke f√ľr dein Feedback und die Anmerkungen.

      Zu 1: Leider kann ich das Script nicht direkt als sh-Datei bereitstellen, da ein Dateiaufruf nicht zu einem Download, sondern zu einem Aufruf der Datei auf dem Server f√ľhren w√ľrde. Deshalb wollte ich die Datei auch erst per zip-Datei bereistellen, dann gibt es jedoch wieder Probleme beim Entpacken auf dem Enigma-Receiver, da dort entsprechende Pakete fehlen. So bin ich dann auf die tar-Datei ausgewichen. Ob das jetzt ein paar kb mehr braucht, war mir ehrlich gesagt ziemlich egal. Wenn du einen besseren Vorschlag hast, lass es mich wissen.

      Zu 2: Da hast du nat√ľrlich Recht. Habe den Blogpost entsprechend berichtigt.

      Zu „file_without_folder“:
      Hier ein Beispiel:
      file=“/media/hdd/movie/20160221 2014 – Das Erste HD – Tatort_ Im gelobten Land.ts“
      file_without_folder=${file##*\/}
      file_without_folder=“20160221 2014 – Das Erste HD – Tatort_ Im gelobten Land.ts“
      Hier wird also alles links bis zum letzten / abgeschnitten, sodass nur noch der Dateiname √ľbrig bleibt. Die Variable ist etwas ung√ľnstig benannt, das gebe ich gerne zu. ;)

      Insgesamt bin ich auch absolut kein Profi, was bash-Programming angeht. Solange es das tut, was ich will, bin ich erstmal mehr als gl√ľcklich. Verbesserungsvorschl√§ge sind immer gerne gesehen.

      Gr√ľ√üe
      Jörg

    2. Moin Jörg,

      meine Anmerkung wegen dem Tarball sollte auch keine Kritik darstellen. Ich war nur √ľber Deine Erkl√§rung „tar-komprimiertes Script“ gestolpert. Daher mein Hinweis auf den nicht vorhandenen Komprimierungs-Effekt.

  3. Hallo J√∂rg, in welchem Format liegen denn die Aufnahmen vor ? K√∂nnen die dann im Netz von jedem Client (PLEX, Kodi, WDTV, FireTV etc.) sofort abgespielt werden ? Eine Umwandlung nach H.264(H.265) MKV w√ľrde auch Platz sparen.
    Gruß Axel

    1. Hi Axel,
      die Aufnahmen liegen im ts-Format (MPEG Transport Stream) vor. Es kommt immer ganz auf den Client an, ob er damit nativ zurechtkommt. Im Notfall kann aber auch der Plex Media Server durch das passende Transcoding nachhelfen, das kostet dann aber nat√ľrlich CPU-Power. Eine automatische Umwandlung nach H.264 in einen mkv-Container habe ich auch schon realisiert, wobei ich noch etwas an den Einstellungen (Bitrate etc.) spielen muss, bevor das f√ľr alle Aufnahmen (verschiedene Formate, Bitraten, Tonspuren, etc.) perfekt ist. Dann kann ich dar√ľber aber auch gerne mal berichten.

      Gr√ľ√üe
      Jörg

    2. Ich pers√∂nlich konvertiere auch nach H.264 in mkv Container. Plex, Kodi sollten damit keine Probleme haben. Das gr√∂√üere Problem ist, dass Kodi (alias XBMC) auch auf der Vu+ selbst laufen kann, nur eben nicht gescheit. Vor allem auf der Solo 4k d√ľrftest du da in ein Aufl√∂sungs-Problem rennen.

      Ich liebe meine Vu+ Solo 2 auch sehr, aber die vorhandene Software ist teils grausig. Dabei rede ich nicht von den Möglichkeiten, die Linux per se bietet.

  4. Hi Jörg,
    das w√§re super, gerade was die automatische Umwandlung betrifft und mit welchem Tool Du das durchf√ľhrst. Wie immer….√§u√üerst informativ und spannend. So wird das auch mit „Bester Tech Blog 2016(2017 usw…)“ dein Heimspiel.
    Gruß Axel

    1. Hi Axel,
      ich nutze das Open-Source-Tool FFmpeg, welches ein grandioses CLI (command line interface) bietet. Entsprechend l√§sst sich auch alles direkt per bash-Script automatisieren, √§hnlich wie bei der Archivierung. Nur kommt es eben je nach Quellformat auf die jeweils passenden Parameter an, die man dem Tool im Rahmen der Umwandlung mitgibt. Ausf√ľhrliche Infos folgen, das kann aber etwas dauern.

      Gr√ľ√üe
      Jörg

  5. Servus Jörg,
    ich wei√ü hier scheiden sich die Geister, aber ich nutze nano lieber als vi. Meines Wissens nach ist nano auch bei VTI im Feed verf√ľgbar bzw. sollte sich einfach installieren lassen.

    Viele Gr√ľ√üe
    Marco

  6. Hallo zusammen,

    tolle Idee, hab es gestern gleich nach Anleitung umgesetzt. Eine externe SSD als hdd1 eingehängt und dann erstmal manuell das Skript gestartet.

    2 Fehler sind mir aufgefallen:

    Das Skript archiviert zwar die f√§lligen Aufnahmen auf die externe SSD, schmeisst aber nach jedem Verschiebevorgang die Meldung „Archvierung gescheitert….“ obwohl die Daten korrekt r√ľberkopiert wurden (hab es per FTP kontrolliert).

    Weiterhin stoppt das Skript nicht sobald mehr als 100 GB auf der internen HDD frei sind sondern macht munter weiter. Ich hab es dann erstmal mit STRG+C abgebrochen….

    Ich habe eine VU Solo 2 Box mit VTI Image 8.23

    Kann ich in irgendeinerweise helfen dass Du die Fehler korrigieren kannst?

    Lieben Dank !
    Markus

    1. So, habe das Script angepasst.

      -Die Fehlermeldung war versehentlich doppelt im Code. Der zweite, falsche Eintrag ist nun entfernt.

      -Die Abfrage, ob genug freier Festplattenplatz auf dem Quellverzeichnis vorhanden ist, war an der falschen Stelle, sodass die Bedingung nur einmal am Anfang gepr√ľft wurde. Jetzt wird die Bedingung nach jedem Archivierungsvorgang einer Aufnahme gepr√ľft, sodass nicht mehr alle Aufnahmen verschoben werden, sondern nur noch so viele, bis wieder genug Speicherplatz zur Verf√ľgung steht.

      Lade dir die Datei einfach neu und √ľberschreibe das bestehende Script. W√ľrde mich √ľber Feedback freuen, ob bei dir nun auch alles funktioniert.

      Gr√ľ√üe
      Jörg

  7. Hallo Jörg !

    Dein Skript funktioniert nun wunderbar, allerdings hattest Du den source_freespace_minimum auf 290 GB hochgeschraubt :-) Das hatte mich irritiert. Nachdem ich den Wert wieder auf 100 GB gesetzt habe läuft nun alles ganz prima.

    Vielen Dank nochmals f√ľr das Skript !

    Gruss
    Markus

  8. Hallo Jörg

    Wieder mal eine tolle Anleitung. Ich habe eine Frage, ich w√ľrde gerne die Filme direkt von der externe Festplatte (/media/hdd/movie/) auf dem NAS (/media/net/AUFNAHMEN/) speichern. Wenn ich das Skript mal h√§ndisch am Putty starte, kommt die Meldung, dass nicht gen√ľgend Speicherplatz vorhanden ist. Das kann nat√ľrlich nicht sein, ich habe noch √ľber 5 TB Frei auf dem NAS. Ist es √ľberhaupt m√∂glich oder muss es auf einer externe Festplatte gespeichert werden?

    Und √ľbrigens, ich w√ľrde mich √ľber das Skript zum automisch Umwandeln sehr freuen! :)

    Sch√∂ne Gr√ľsse

    Kopie der Pfade:

    source_root=“media“
    source_volume=“hdd“
    source_folder=“movie“

    destination_root=“media“
    destination_volume=“net“
    destination_folder=“AUFNAHMEN“

    1. Hi Miguel,
      eigentlich sollte es auch mit dem gemounteten NAS als Ziel funktionieren.
      Was bekommst du als Ausgabe, wenn du auf per ssh den Befehl

      df -k „/media/net/AUFNAHMEN“ | awk ‚/[0-9]%/{print $4}‘

      ausf√ľhrst? Hier sollte eigentlich sowas wie 508772804 ausgegeben werden, wenn du bspw. knapp 5 TB frei hast. Evtl. ist dein Pfad ja nicht korrekt?!

      Gr√ľ√üe
      Jörg

  9. Wenn ich den Befehl so eingebe, kommt ganz genau: 61%
    Ist das der belegter Platz auf dem NAS?
    Den Pfad habe ich mit WinSCP ausgelesen, ich denke der stimmt, sehe sicherheitshalber nochmals nach.

    hier noch ein Auszug vom Putty:

    20160223 2027 – Sky Sport HD 3 – Live UEFA CL_ FC Arsenal – FC Barcelona, Achtelfinale Hinspiel Dienstag II.ts kann nicht kopiert werden, da nicht genug Speicherplatz vorhanden

    True
    Nachricht erfolgreich verschickt!

    Gr√ľsse
    Miguel

    1. Ah ok,
      d.h. der Befehl gibt bei dir den verf√ľgbaren NAS-Festplattenplatz nicht in kB an, sondern stattdessen in %. Da m√ľsstest du den Befehl wohl entsprechend anpassen, sodass der richtige Wert gezogen wird. Solange du auf dem Ziellaufwert genug Speicherplatz hast, k√∂nntest du die Abfrage aber auch erstmal komplett ausklammern.

    2. Hi Miguel,
      die Nachricht wird solange angezeigt, bis die „OK“-Taste auf der Fernbedienung gedr√ľckt wird. Das habe ich absichtlich so gew√§hlt.

      Sofern die Nachricht bpsw. nur 30 Sekunden dargestellt werden soll, erg√§nze den Befehl entsprechend mit dem „timeout“-Parameter:

      wget -O – -q ‚http://127.0.0.1/web/message?type=2&text=Testnachricht&timeout=30‘ >/dev/null 2>&1

      Gr√ľ√üe
      Jörg

  10. Hi Jörg,

    mir hat dein Blog schon viel geholfen. Grade mit FHEM. :) Auf das Script hier bin ich schon vor einiger Zeit gestoßen. Ich hatte leider erst jetzt die Zeit es auf meine Situation anzupassen.

    Das Ziel war einfach: Schiebe alle Dateien auf ein NAS (Time Capsule).

    Da das Script (oder die Dreambox) aber nur einen „Ordner“ pro Variable zul√§sst, musste ich das Script so erweitern/anpassen:

    destination_root=“media“
    destination_volume=“net“
    destination_folder=“tc“
    destination_folder_tc=“Dreambox“

    Au√üerdem hat die Ausgabe von „df -k“ nicht gepasst. Hier musste ich das Script wie folgt √§ndern:

    destination_freespace=`df -k „/$destination_root/$destination_volume/$destination_folder“ | awk ‚/[0-9]%/{print $4}’`

    in

    destination_freespace=`df -k „/$destination_root/$destination_volume/$destination_folder“ | awk ‚/[0-9]%/{print $3}’`

    Vielleicht liest das hier mal jemand, der auch von seiner DM800se auf eine Time Capsule schieben möchte. :)

  11. Hallo Jörg,

    tolles Skript hast du da erstellt – danke. Ich habe deine L√∂sung mal mit meiner L√∂sung kombiniert, evtl. hast du daran Interesse?! Hinzugekommen ist die Pr√ľfung auf Existenz des Mountpoints und die Beachtung von Unterverzeichnissen, sowie das √§ltere Dateien zuerst archiviert werden.

    Gruß,
    Sven

    1. Hi Sven,
      klar, kannst mir gerne per Mail zuschicken.
      Mein Script hat aber auch bereits eine Pr√ľfung, ob Source und Destination existieren. √Ąltere Dateien werden dabei auch immer zuerst archiviert… Bleibt noch die Sache mit den Unterverzeichnissen.

      Gr√ľ√üe
      Jörg

  12. Hallo Jörg,

    Danke f√ľr das Script.
    Hab Stefans Anpassung f√ľr die Speicherplatzberechnung bei mir eingebaut – klappt wunderbar.
    Einzig, wenn der Receiver von jemandem ausgeschaltet wird, w√§hrend „mv“ l√§uft, f√§hrt er gnadenlos runter.
    Wenn ich √ľber die GUI Filme verschiebe, dann fragt er beim Beenden, ob die Hintergrund-Aufgaben noch beendet werden sollen bzw. ob ich wirklich ausschalten will.
    Irgend eine Idee?

    Danke+Gr√ľ√üe
    JR

  13. Hallo Jörg!

    Danke f√ľr den super Artikel.
    Micht interessiert jedoch ganz speziell die Möglichkeit die ts-files nach mkv umzuwandeln und zwar mit konstanter h264 videobitrate von 4096 und ton als 192 kbs mp3. Was brauche ich dazu? Wohin muss ich zB das ffmpeg auf der box kopieren und wie rufe ich es im batch auf?

    LG
    Tom

  14. Hallo, bin kein Linux Experte, aber ich habe das script bis auf den gemounteten Destiantion-Folder (hdd/net/WHS_TV) nicht geändert und bekomme folgende Fehlermeldungen in der Shell:

    root@vuultimo4k:~# /etc/tuxbox/config/archive.sh
    /etc/tuxbox/config/archive.sh: line 2: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 3: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 4: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 6: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 10: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 14: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 16: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 18: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 20: $’\r‘: command not found
    /etc/tuxbox/config/archive.sh: line 22: syntax error in conditional expression
    ‚etc/tuxbox/config/archive.sh: line 22: syntax error near `]]
    /etc/tuxbox/config/archive.sh: line 22: `if [[ ! -e „/$source_root/$source_volum’/$source_folder“ ]]

    Kann jemand helfen? Wäre toll.
    Danke, Ludwig.

    1. Hallo Ludwig,

      sieht das Skript bei dir ähnlich aus?

      source_root=“media“
      source_volume=“hdd“
      source_folder=“movie“

      destination_root=“media“
      destination_volume=“net“
      destination_folder=“Filme“

      Poste deine Version.

      Gruß
      Ralf

  15. source_root=“media“
    source_volume=“hdd“
    source_folder=“movie“

    destination_root=“media“
    destination_volume=“net“
    destination_folder=“WHS_TV“

    source_freespace_minimum=“100000000″ #kB -> entspricht 100GB

    extension=“.ts“

  16. Hallo nochmal,

    das Script funktioniert mittlwerweile auch bei mir. Durch das Editieren mit winSCP waren am Ende fast jeder Zeile Steuerzeichen mit gespeichert worden (^M), was zu den Syntax Fehlern f√ľhrte. Per VI gel√∂scht und gut ist.

    Scheinbar misst Lnux meine HDD Gr√∂√üe auf meinem Windows Home Server nicht richtig und sagt immer, es sei nicht genug Speicher zu Verf√ľgung. Habe die Zeile daf√ľr zun√§chst mal auskommentiert. Hat jemand eine Idee?

    Gruss,
    Ludwig

  17. Hallo Ludwig,

    ca 8 Antworten oben hat Stefan eine Lösung geschrieben!

    Bei Mir war die Antwort auf df -k „/media/net/Filme“ | awk ‚/[0-9]%/{print $4}‘
    eine Prozentangabe!

    Nach √§ndern auf destination_freespace=df -k „/$destination_root/$destination_volume/$destination_folder“ | awk ‚/[0-9]%/{print $3}‘
    passt es bei mir!

    Danke Stefan.

    Gruß
    Ralf

  18. Hallo zusammen,

    danke ersteinmal f√ľr den Script. Jetzt nutze ich meine NAS Festplatte auch f√ľr die Recordings. Ging vorher nicht, da der Receiver nur 100 Mbit Anbindung hat.

    Kodi macht aber ein Problem und mit VLC bekomme ich die Dateien auch nicht mehr auf nach dem Arcivieren.

    Kodi spielt die Dateien ab, aber aus einer 60 Minuten Aufnahme ist laut Anzeige eine mit √ľber 2,5 Stunden geworden.

    Kodi spielt es dann ab ca. 30 Р40 Minuten ab und auch vollständig. vor die Position kann ich auch nicht spulen. Dateigröße ist auch gleich geblieben.

    Kann mir da jemand helfen?

    Danke
    Gruß
    Chris

  19. Hallo Miteinander,
    Respekt f√ľr euer Engagement.
    Eigentlich w√ľrde ich mich als DAU bezeichnen, was Enigma und Linux angeht, habe mich aber trotzdem schon vor Jahren auf Eierlegende-Wollmilchsau-Receiver eingelassen.
    Seit ca. 4 Jahren habe ich jetzt eine Solo2 und vermisse immer noch Features von meinem alten DVB-T Receiver Siemens M740AV. Dort konnte ich Serien-Timer begrenzen. Je Timereintrag z.B. nur die 10 aktuellsten Aufnahmen behalten und die Alten löschen. Kannst du so etwas in deinem Script einfließen lassen??
    Sch√∂ne Gr√ľ√üe
    Chris K

  20. Hallo Jörg,

    Da ich nun √§hnlich Hardware zu Hause habe, w√ľrde ich dein Skript gern einsetzen. Leider ist der Link mittlerweile tot… w√ľrdest du es nochmal bereitstellen?

    Vielen Dank,
    Stephan

  21. Ich m√∂chte auf der neuen Box auf SSD lokal aufnehmen und bei Platzmangel auf’s NAS verschieben. Das bash Skript sieht mal nicht schlecht aus, ich frage mich nur WO entschieden wird, da√ü die √§ltesten Eintr√§ge zuerst kopiert werden.
    Kann ich leider nicht sehen. Au√üerdem was passiert, wenn auf der Quelle schon Unterverzeichnisse angelegt wurden (z.B. Kinder / Tatort / Comedy…).

    Wenn jemand einen Tip hat, wie ich ein Perl auf die Ultimo 4K bringen kann, wäre ich sehr dankbar. Mit Python anfangen widerstrebt mir noch.

    Gruß Axel

    1. Hi Axel,
      das Script geht die Dateien einfach der Reihe nach durch. Dabei verhält es sich bei mir schlicht so, dass die Dateien von alt nach neu gezogen werden.
      Unterverzeichnisse nutze ich nicht. Da m√ľsstest du das Script entsprechend an einigen Stellen anpassen, um das zu ber√ľcksichtigen.

      Gr√ľ√üe und viel Erfolg
      Jörg

    2. Hi,

      ich habe das bash-skript angefangen zu erweitern und hatte eine sch√∂ne L√∂sung mit stat (file), bis ich feststellen musste, da√ü die VU+ Ultimo 4K genau dieses Linux tool NICHT unterst√ľtzt. Nach Package daf√ľr gesucht (coreutils…), gibt aber nix. Daf√ľr dann PERL als package und haufenweise Perl Modules als Packages (opkg list) gefunden.
      Perl installiert und das ganze in PERL gel√∂st. Mit Unterverzeichnissen, sort by oldest date, log (cron) ….
      Test war zwar ein bi√üchen bl√∂d, weil der PERL Debugger bei x (Dump auch f√ľr Strukturen) abschmiert, p ging aber.
      Ich werde das noch ein bißchen testen und dann auch hier hochladen, das Skript basiert ja auf dem hier veröffentlichten.

      Gruß Axel

  22. Hi,

    ich habe hier ein etwas anderes Szenario, aber eine √§hnliche Anforderung :) Wenn das Recording fertig ist (oder die Aufnahme nicht mehr l√§uft), dann soll es von der an der VUZero angeschlossenen HDD auf ein im Netzwerk verf√ľgbares NAS geschoben werden.

    Der Unterschied – bei mir l√§uft alles √ľber einen kleine Windows Kiste. Dort habe ich mir ein kleines Powershell Script zusammengeschrieben, welches schaut, ob ein neues Recording auf der Disk der VUZero liegt, pr√ľft ob sich innerhalb von 10 Sekunden die Dateigr√∂√üe √§ndert – und wenn nicht, das Recording dann auf das NAS schiebt.

    Wiegesagt – ist rein nur eine Alternative :) (und f√ľr meine Zwecke ausreichend, da ich nicht so der bash scripter bin :))

    somit Рfalls es jemanden da draußen interessiert Рhier das Script :)
    LG
    alex

    ########################################
    $targetpath = „\\192.168.200.4\dl_VuRecordings\1_NEW_RECORDINGS“
    $vuzeropath = „\\192.168.200.93\Harddisk\movie“

    if(!(Test-Path $targetpath)){
    write-host „TargetPath [$targetpath] not reachable… EXITING“ -ForegroundColor Red
    exit 1
    }else{
    write-host „Targetpath [$targetpath] OK“
    }

    try{
    $tsFiles = Get-ChildItem „$vuzeropath“ -ErrorAction Stop | where {$_.name -like „*.ts“}
    }catch{
    write-host „VUZero Disk path not readable [$($_.exception.message)]“ -ForegroundColor Red
    exit 1
    }

    write-host „Recordings found: $($tsFiles.count)“
    if ($tsFiles.count -eq 0){
    write-host „No recordings found!!“ -ForegroundColor Yellow
    exit 1
    }

    foreach ($tsFile in $tsFiles){
    write-host „processing $($tsfile.name)“
    $filesize1 = $null
    $filesize2 = $null

    $filesize1 = $tsFile.Length
    write-host „waiting 10 seconds…“
    timeout 10
    $filesize2 = (Get-Item $tsfile.FullName).Length

    if($filesize1 -ne $filesize2){
    Write-Host „Recording in Progress…SKIPPING [$($tsfile.Name)]“ -ForegroundColor Yellow
    continue
    }else{
    Write-Host „FileSize is Equal – preparing Move“
    }

    if(!(Test-Path $targetpath)){
    Write-Host „Targetpath [$targetpath] not reachable“ -ForegroundColor Red
    continue
    }else{
    Write-host „Targetpath [$targetpath} OK“
    }

    $searchsting = $tsFile.Name.Substring(0,($tsFile.name).length-3)
    Write-Host „Filestring: $searchsting“ -ForegroundColor Yellow

    $tomoveFiles = Get-ChildItem „$vuzeropath“ -ErrorAction Stop | where {$_.name -like „$searchsting*“}

    try{
    write-host „To move Files:“
    $tomoveFiles
    write-host „Moving Files…“
    $tomoveFiles | Move-Item -Destination $targetpath -ErrorAction stop
    }catch{
    write-host „Move Failed: [$($_.exception.message)]“ -ForegroundColor Red
    }

    }

    write-host „All Done!“ -ForegroundColor Green
    ########################################

  23. Hallo,
    der Post ist zwar schon etwas √§lter, aber ich bin trotzdem dr√ľber gestolpert. Ich habe es ganz anders gemacht. Ich habe mein NAS als Samba Device in der Vu eingebunden und speichere Aufnahmen direkt auf dem NAS. So stehen mir aktuell √ľber 15 TB freier Speicher zur Verf√ľgung :).
    Spart auch das Autobackup.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert