Python Skript Ftp Sync

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • :bravo2: Finally it seems to work:



    Ausgabe:


    Sieht gut aus, oder ?
    Er announced zwar das er's transferen würde aber macht er nur wenn's remote_file neuer ist als das locale.


    :angel:

  • :thumbs1: Muss gestehen, dass ich mich jetzt nicht hinsetze und die Unterschiede suche und untersuche warum es nun tut :no_sad: Aber Hauptsache es funktioniert nun :)

    :no_sad: Kein Backup - kein Mitleid :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft gehst :)
  • Hallo,
    Ich habe leider ein kleines Problem das ich bissher noch nicht hatte:
    Invalid Syntax bei "print err"
    Python Version: 3.4.1


    Sorry für die Umstände

    Ready when you are :bravo2:

  • ..Ich hab noch mal an meinem ftp_sync.py gebastelt weil da noch ein paar Sachen nicht funktionierten..


    Neu dazu gekommen:

    • Verzeichnisse werden Recursive erstellt. Unterverzeichnisse wurden bisher nicht beachten (z.B.: /movie/Film/Sample/sample.avi)
    • Unerwünschte Dateien werden übersprungen. Zum Beispiel Dateien die mit einem Punkt anfangen oder mit '.backup' enden etc.
    • Nach Transfer die Dateigröße prüfen und falls es so eingestellt wurde nur dann die Datei auf dem FTP-Server löschen.


    Allerdings habe ich bei letzterem ein Problem das keine Verzeichnisse gelöscht werden, und irgendwie krieg ich das auch nicht hin :(



    Wieso löscht er nur 2 von 3 Verzeichnisse? :s
    Kann mir dazu jemand ein Tip geben? Überseh ich da nur was simples oder liegt das generell an meiner Art des Transferes?


    :helpnew:



    //EDIT: Ich glaub jetzt hab ichs


  • Hab den Code etwas angepasst. Läuft sehr gut.
    :bravo2:
    Ich hab noch ein paar Verbesserungsvorschläge.
    Vielleicht finde ich die Tage Zeit Teile davon selber umzusetzen.


    - größere Downloads aufteilen, vielleicht kann man so noch ein bisschen performance rausholen
    - bei kleinen Dateien mehrere Downloads gleichzeitig
    - Datendurchsatz anzeigen
    Edit:
    - Prüfen ob Programm schon ausgeführt wird. (Hatte das mit einer Datei gemacht die angelegt wird und wieder gelöscht wird. War aber nicht ganz optimal gelöst)

    Edited once, last by Moira ().

  • Ich glaube ich hab den ersten Bug gefunden :) oder es liegt an mir.
    Anyway:


    Code
    Error: 'ascii' codec can't encode characters in position 101-103: ordinal not in range(128) occurred

    Edited once, last by Moira ().

  • Steht da auch eine Zeile? Normalerweise gibt Python mind. 3 Zeilen bei Fehlern aus, wo auch die Zeile des Problems mit bei steht :fies: Auf den ersten Blick siehts aber nach nem Transfer Problem aus (ASCII / BINARY)


    Ich arbeite btw gerade an deinen Verbesserungsvorschlägen, weiß aber noch nicht ob das funktioniert


    //EDIT: v0.61

  • Mir sind noch 2 Sachen eingefallen die man besser machen könnte.


    - Für die Kontrolle ob die Datei auf der Platte sich verändert hat oder es eine neue auf dem Server gibt könnte man einen neuen Thread benutzen. Grade bei kleineren Dateien ist das praktisch, während geprüft wird kann dann schon neu runtergeladen werden.


    - Dateien die Runtergeladen werden könnten mit der Endung .incomplete gedownloaded werden, sofern die Datei korrekt runtergeladen und überprüft wurde


    Das ist besser als viele kleine Dateien gleichzeitig runterzuladen und gut gegen Abstürze.


    Edit:
    Kann sein das es daran liegt das ich keine Locale gesetzt hab auf meiner NAS und er dann einfach auf ASCII zurückspringt.
    Mein VPN funktioniert grade nicht, versuche es später nochmal.


    Danke bis hier hin!

    Edited once, last by Moira ().

  • Das Problem hatte ich aber ja leider auch zwischen durch, aber nur sporadisch :(


    Hab den FTP Part aber nun recoded und verzichte auf's ftputil Module, nutze stattdessen direkt die ftplib wodurch es zwar etwas umständlicher wird - aber bisher ist dieses Problem noch nicht wieder aufgetaucht :bravo2:


    Momentan überschreibt das Script locale Dateien.. Auch kann es in den ersten 3 Zeilen ein kleines Durcheinander geben, wenn die vorherige Zeile länger war...


    ...das muss ich noch einbauen... Aber nicht mehr heute :fies:


    :sleepy:


  • Wow, new and shiny!


    Mir ist noch was an der alten Version aufgefallen, wenn es eine Datei schon gibt und der Download Fehlgeschlagen ist kann es sein das der Code diese nicht löscht?
    Muss mir das nacher mal genauer angucken.
    Das mit den locale einstellungen scheints gebracht zu haben, ist wohl ein common bug in debian wheezy.
    Musste es allerdings manuell machen.


    Edit: es scheint das Problem zu minimieren aber es tritt immer noch sehr häufig auf.
    Vielleicht gibt es auch einfach eine Diskrepanz zwischen den Datenmengen die wir schaufeln ^^

    Edited once, last by Moira ().

  • Jetzt auch mit Überprüfung ob remote_file bereits local existiert, größer ist als local_file sowie timestamp Vergleich...
    Ein paar optische Sachen gibts aber noch die nicht so super sind und ich mit unzufrieden bin.



    //EDIT: Seit v0.7 ist das Problem bei mir nie wieder aufgetreten. Hast du es damit schon mal probiert?


    //EDIT:




    //EDIT: Ein paar kleinere Änderungen:
    - Datei Größe vor Timestamp -Vergleich vorgezogen, da eine Datei kleiner sein könnte aber selben Timestamp (wegen Abbruch oder transfer error)
    - Obere 4 Zeilen werden jetzt richtig "gelöscht" und somit entsteht da kein murks wenn eine vorherige Zeile länger war..
    - Maximale Höhe (y) des Terminals wird nun ermittelt und falls output -5 Zeilen erreicht wird der Screen clean'ed. Später soll das aber noch Scrollbar werden...



  • Hallo meigrafd,


    Ist es möglich das Skript so umzuschreiben, das die Daten von einem Server zu einem Server Syncronisiert werden?


    Sodass ich 2 Server mit dem Raspberry Syncronisieren kann?

    Ready when you are :bravo2: