Sync2NAS 0.1

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

    • Hallo zusammen,

      nachdem ich im Ultimativen Plugin-Thread auf das NASsync-Plugin von gutemine gestoßen bin und es bei mir nicht wirklich funktioniert hat, habe ich mich dazu entschlossen das Plugin von Grund auf neu zu schreiben - es wird ja von gutemine schon mehrere Jahre nicht mehr weiter entwickelt. Es ist mein erstes Plugin, deswegen bitte ich um Nachsicht, was die Implementierung der ein oder anderen Funktion angeht. Für Anregungen, was besser programmiert werden kann oder welche Funktionen es noch geben sollte, bin ich offen!

      In der Version 0.1 gibt es zunächst nur den Modus "sync". Hierbei werden alle Dateien vom Verzeichnis MOVIE in das Verzeichnis NAS kopiert, die *.ts-Dateien in MOVIE gelöscht und Symlinks auf die Kopien in NAS erzeugt. Die Filme erscheinen so nach wie vor in MOVIE und können in der MovieList bzw. EMC angezeigt und abgespielt werden wie vorher. Die beiden Verzeichnisse könnt ihr frei wählen. Das Plugin taugt also auch dazu, auf eine externe HDD zu synchronisieren. Im Vergleich zur Ur-Version von gutemine kann mein Script auch mit Umlauten und Sonderzeichen in Filmtiteln umgehen.


      Voraussetzungen:
      • Einbindung des NAS als NFS-Freigabe (bei Verwendung einer CIFS-Freigabe werden die Dateigrößen nicht korrekt zurückgemeldet, war zumindest bei mir so)
      • Ausreichend schnelle Netzwerkverbindung zwischen STB und NAS, da die Filme aufs NAS verschoben und dann auch von dort abgespielt werden
      • In diesem frühen Stadium des Scripts sind gute Kenntnisse von sh/bash sehr von Vorteil, da alles über die Shell läuft (Visualisierung kommt auch irgendwann)
      • Paket bash muss installiert sein

      (Noch) nicht unterstützt:
      • Unterverzeichnisse (in Planung)

      "Installation":
      Einfach die angehängte sh-Datei irgendwohin auf eure Box kopieren und über Telnet mit chmod 755 sync2nas.sh ausführbar machen. Wenn man das Script in /usr/bin ablegt, kann man es aus jedem Ordner mit sync2nas.sh aufrufen - etwas bequemer, so lange das Plugin nur über die Konsole nutzbar ist. Vor der ersten Benutzung müssen noch drei Pfadangaben im Script angepasst werden. Dies könnt ihr entweder vor dem Kopieren auf die Box mit einem unix-komformen Editor oder direkt auf der Box über die Konsole machen. Direkt am Anfang des Scripts findet ihr die User Settings mit den Pfadangaben.
      • MOVIE: euer Aufnahmeverzeichnis
      • NAS: der Mountpoint, auf den euer NAS gemountet ist
      • LOGDIR: das Verzeichnis, in dem das Logfile angelegt werden soll

      Quellcode

      1. ########################################################
      2. # USER SETTINGS #
      3. ########################################################
      4. # change to your movie directory here:
      5. MOVIE=/media/hdd/movie
      6. # change to your NAS mount point here:
      7. NAS=/media/net/video/Aufnahmen
      8. # change to your log directory here:
      9. LOGDIR=/var/log
      Alles anzeigen

      Außerdem solltet ihr euch vergewissern, ob bash auf eurer Box installiert ist:

      Quellcode

      1. opkg list-installed | grep bash

      Ist dies nicht der Fall:

      Quellcode

      1. opkg update && opkg install bash


      Anwendung:
      Das Script ist momentan nur über die Konsole nutzbar, eine graphische Oberfläche wird es aber auch geben - sobald ich mich in Python genug auskenne :crazy4:.
      An dieser Stelle muss ich in diesem frühen Entwickungsstadium noch den Hinweis geben, dass die Benutzung auf eigene Gefahr geschieht. Ich selbst nutze das Script aktiv und bis jetzt ist alles gut gegangen. Ich kann jedoch keine Garantie geben, dass es in anderen Umgebungen ebenso keine Probleme gibt. Am besten, ihr kopiert euch ein paar Filme zum Testen in ein extra Verzeichnis und schaut erstmal, was dabei raus kommt :8|
      Das Script kann momentan mit folgenden Parametern aufgerufen werden:

      Quellcode

      1. sync2nas.sh version
      Zeigt die aktuelle Version des Scripts.

      Quellcode

      1. sync2nas.sh usage
      Zeigt Informationen zur Verwendung des Scripts.

      Quellcode

      1. sync2nas.sh sync [movie2nas|nas2movie|both]
      Das ist der hauptsächliche Verwendungszweck von Sync2NAS. Hier gibt es noch drei optionale Parameter, welche die Richtung der Synchronisierung bestimmen.
      • movie2nas - MOVIE --> NAS:
        Es werden zunächst alle Meta- und Video-Dateien vom MOVIE-Verzeichnis ins NAS-Verzeichnis kopiert. Ob eine Datei erfolgreich kopiert worden ist, wird über die MD5-Hashes der beiden Dateien geprüft. Die Meta-Files werden im MOVIE-Verzeichnis belassen, da sie nicht viel Platz brauchen. Die Video-Dateien werden im MOVIE-Verzeichnis gelöscht und ein Symlink auf ihre Kopie im NAS-Verzeichnis angelegt. So macht es in der MovieList bzw. EMC keinen Unterschied, ob die Filme auf der internen Platte liegen oder auf dem NAS.
      • nas2movie - MOVIE <-- NAS:
        Hierbei wird geprüft, ob alle Filme im NAS-Verzeichnis auch im MOVIE-Verzeichnis vorhanden bzw. verlinkt sind. Fehlende Meta-Files werden nach MOVIE kopiert und fehlende Video-Files im MOVIE-Verzeichnis verlinkt. Dies ist z.B. sehr nützlich, wenn die interne HDD der Box getauscht wird oder gleich die ganze Box. Zu beachten ist hierbei jedoch, dass im MOVIE-Verzeichnis gelöschte Filme wiederhergestellt werden, wenn sie im NAS-Verzeichnis nicht auch gelöscht werden! Für diesen Fall wird es aber in einer der nächsten Versionen eine Option geben, um fehlende Aufnahmen auch auf dem NAS zu löschen.
      • both: beide Richtungen; erst movie2nas, dann nas2movie; Standard, wenn keine Richtung angegen wird

      So viel erstmal hierzu...ich freue mich auf Rückmeldungen und konstruktive Kritik und hoffe, dass sich ein paar wagemutige finden, die das Script testen möchten :318:

      Viele Grüße
      Longahr
      Dateien
      • sync2nas.zip

        (3,24 kB, 102 mal heruntergeladen, zuletzt: )
    • Na
      dann mach mal weiter ich bin gespannt und freue mich das was geht.
    • das klingt äußerst interessant - bin nicht so linuxBewandert, aber würde mich über so eine Möglichkeit freuen!
      Viele Grüße von

      JeTi
    • Ich bin momentan am überlegen, ob ich nicht ein Webinterface als Bedienoberfläche einbauen sollte. Wäre in meinen Augen wesentlich besser zu bedienen, als auf der Box. Was meint ihr?
    • Hallo,

      genau so ein Script habe ich schon lange gesucht. Ein Paar Ideen hätte ich noch was man einbauen könnte.

      1. Das NAS über ether-wake aufwecken und danach eine einstellbare Zeit warten bis der Kopiervorgang beginnt. (Zum Beispiel mein Server wecke ich nur auf wenn ich ihn auch benötige).
      2. Eine einstellbare Zeit wenn das Plugin ausgeführt wird. Dann könnte man den Kopiervorgang zum Beispiel einmal die Woche Nachts laufen lassen.
      3. Das Script schaut vor dem Kopiervorgang wie voll die interne Platte ist und beginnt den Kopiervorgang erst ab einer gewissen Prozentzahl.

      Die Vorschläge sind natürlich nur Wünsche aber wenn was davon umgesetzt werden könnte, vor allem der erste, wäre super.

      Ansonsten schonmal danke für deine Mühe.

      Gruß
    • Eine rudimentäre Oberfläche gibt es mittlerweile und die Funktionen des Scripts können über die GUI aufgerufen werden. Während der Bearbeitung des Scripts kann am Receiver momentan allerdings nichts anderes gemacht werden.

      Der ursprüngliche Plan war sowieso, das Skript über die crontab aufrufen zu lassen. Da hänge ich momentan aber fest...kann ich die Crontab direkt aus meinem Python-Plugin ansprechen oder muss ich das über das Script machen? Wäre cool, wenn mir da jemand mal ne kleine Hilfestellung geben könnte!
    • Hi
      gibt es was neue zu berichten?
      Danke Mickus
    • So...mal ein kleiner Zwischenstand...hab am Wochenende ein bisschen weiter gebastelt ;) :

      Über die Plugin-Oberfläche wird es zunächst folgende Konfigurationsmöglichkeiten geben:
      - Quell- und Zielverzeichnis
      - Synchronisierungsrichtung (STB --> NAS, NAS --> STB, beide Richtungen)
      - "Cleanup" (gelöschte Filme im Quellverzeichnis auch im Zielverzeichnis löschen; wirkt nur bei Synchronisierung in eine Richtung)
      - Ausführungszeitpunkt des Sync-Skriptes (Uhrzeit, Wochentag)


      Beispiel für Konfiguration mit zwei Receivern; ein Master-Receiver mit Fesplatte, auf dem aufgenommen wird, und ein Slave ohne Festplatte, auf dem die Aufnahmen verfügbar gemacht werden sollen:

      - Master:
      - Richtung: STB --> NAS
      - Cleanup: aktiv

      - Slave:
      - Richtung: NAS --> STB
      - Cleanup: aktiv

      So werden die Aufnahmen vom Master aufs NAS verschoben und durch Symlinks ersetzt. Auf dem Slave werden nur Symlinks auf die Aufnahmen auf dem NAS angelegt.

      Man kann zwar die Filme auf dem Slave auch direkt über die Netzwerkfreigabe abspielen, aber das muss man ja nicht unbedingt ;-).

      Es ist auch möglich, von zwei oder mehr Receivern, die alle aufnehmen können, alle Aufnahmen aufs NAS zu synchronisieren.

      So long,
      Longahr
    • Hört sich vielversprechend an.
      Aktuell nehme ich auf die interne Platte auf und verschiebe die Aufnahmen dann auf's NAS (manche Sachen nehme ich auch direkt auf's NAS auf)

      Wenn ich mir was wünschen dürfte:
      - Symlinks erstellen nur optional
      - Unterverzeichnisse
      - Zeitpunkt der Kopiertätigkeit konfigurierbar
      - Option zum Festlegen, wie lange Aufnahmen auf der Quelle verbleiben sollen, bevor sie kopiert/verschoben werden
      - Optimal wäre, wenn das Plugin automatisch anhand von programmierten Timern freie Zeiten zum Kopieren erkennen würde (nicht während Aufnahmen, optional einstellbar)
      - Verschiebemodus mit Prüfung, ob Zieldatei korrekt angelegtwurde, vor Löschen der Quelldatei

      D:

      Thema aboniert! ;_)

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

    • Sehr interessant,
      Wird das Projekt noch weiterentwickelt ?
      Skin: Skin CerxFHDMod Nightfall - AEL Edition
      Plugins: Serienrecorder / EnigmaLight / Multi Quickbutton / DreamPlex ivm.

      Plugin Übersicht
      vuplus-support.org/wiki/index.php?title=Plugin_Übersicht