NAS mit Pi Synchronisieren auf FTP

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi @ all

    ich möchte mit dem Pi gern folgendes Synchronisieren:

    wmdoib9i.png

    Der Pi soll einen Ordner auf dem NAS nur in Richtung des Server Synchronisieren.
    Es stehen die Protokolle FTP,SFTP und WebDav zu Verfügung.

    Dies soll dann zB. alle 3 Tage passieren.

    Ich weiß das man das ganze mit lftp lösen kann(script, cron job, ect).

    Wollte jetzt aber fragen ob jemand von euch etwas mit einer Grafischen Oberfläche kennt.

    Für ein Betriebssystem habe ich mich noch nicht entschieden, typisch ist das Raspbian.
    Solltet ihr das evtl. aber auch noch ein Tipp haben immer her damit.

    Vielleicht noch als Anmerkung: mir ist die Zuverlässigkeit dieses Ablaufes wichtig, sprich die Daten müßen alle ankommen.
    :danke_ATDE:

    Einmal editiert, zuletzt von Polliny (10. Oktober 2014 um 15:28)

  • Wozu brauchst Du eine grafische Oberfläche zum Synchronisieren?
    Ich würde das ganze per rsync machen:
    Der Raspi hat sowohl NAS als auch Server (z.B. via HTTPS-WebDAV/davfs2 direkt ins Raspi-Filesystem) gemounted und alle 3 Tage startet per crontab ein Skript, das per rsync von /nas nach /server synchronisiert...
    Bei mir zuhause wird so z.B. regelmäßig etwas nach BOX.COM per HTTPS-WebDAV kopiert.


  • Wozu brauchst Du eine grafische Oberfläche zum Synchronisieren?


    Brauch ich nicht :D aber ist finde ich irgendwie angenehmer. Kann man beim vorbeilaufen ein Blick drauf werfen (LCD auf dem PI) ob alles ok ist.

    aber dein Vorschlag finde ich auch gut.
    Du meinst quasi

    Code
    sudo mount -t davfs https://mediacenter.gmx.net /mountpunkt


    WebDav einbinden (Bsp ohne User-Daten)

    Code
    rsync -a /etc ZIEL


    dann script schreiben und als cronjob

    und mit dem Parameter -v für rsync könnte ich mir den verlauf auf den Display ausgeben lassen?

    Einmal editiert, zuletzt von Polliny (10. Oktober 2014 um 16:10)

  • eine Frage hätte ich da noch.

    ich möchte das rsync mit cronjob täglich ausgeführt wird um die Daten aktuell zu halten.
    Was passiert wenn rsync erneut aufgerufen wird obwohl der Synchronisation Prozesses von zB. gestern noch gar nicht fertig geworden ist?

  • Prüfe einfach vor dem Start ob der Prozess noch läüft.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • ist das Script so ok?

    fast :)

    Bash
    #!/bin/sh
    if [ -n "$(pidof rsync)" ]
            then
            rsync.........
    fi


    Wenn pidof rsync eine leere Zeichenkette zurück gibt läuft er nicht mehr.
    Allerdings darf dann auch keine andere Instanz von rsync laufen.

    Wenn du feststellen möchtest ob dein Script noch läuft bevor du es erneut startet dann erstelle doch einfach zu beginn deinen eigenen "PID"

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Vielen Dank Imperator!

    habe jetzt ein kleines Problem mit rsync. Ich versuche es mal verständlich zu verfassen.

    Ich starte für die ersten Testläufe Rsync manuel mit :

    Code
    sudo rsync -avhz --progress /Quelle(NAS-mount mit cifs) /Ziel (sftp-mount mit sshfs )

    Das interessante ist jetzt dass er die Daten vom NAS erst runterlädt (auf den Pi).
    Es scheint etwa so als würde er denken der mountpunkt wäre nur ein Lokaler Ordner.

    Nach dem er die Datei runter geladen hat kommt folgende Fehlermeldung:

    Code
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]



    Jetzt haben ich natürlich auch das Problem das die SD Karte voll ist.
    Wo hat er die Daten jetzt hin getan?
    Wie ich kann ich das runterladen vermeiden?
    Bzw. vielleicht kann er die Datei runterladen dann weiterleiten und wieder löschen.

    8a29ar99.png
    l54drrmg.png

    EDIT:
    geht auch nicht:

    Code
    rsync -avhz --progress "/Quelle(NAS-mount mit cifs)" "/Ziel (sftp-mount mit sshfs )"


    wput über ftp klappt super

    Code
    wput -v /meine/Daten/ ftp://Benutzer:Password@Server.com/Ordner/


    Login über sftp klappt auch

    Code
    sftp [user@]host[:file ...]

    EDIT2:

    Habe jetzt etwas dazugelernt und den Rsync Befehl etwas geändert. Trotzendem komm ich nicht weiter :)

    Code
    rsync -azh --progress --stats "/meine/Datein" sftp Benutzer@@Server.com:/Ordner/
    Benutzer@Server.com password: xxxxxxxxx 
    Connection to Server.com closed by remote host.
    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
    rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

    Einmal editiert, zuletzt von Polliny (17. Oktober 2014 um 01:09)

  • Mhh, wenn der die Platte voll macht dann stimmt was mit dem Mount nicht.
    Der Mountpoint ist ja physisch auf dem PI.
    Wenn mount jetzt schief gelaufen ist und /Ziel nicht gemountet, dann wird alles auf die SD gesynct.

    Das ist bei mir auch schon passiert.
    Ich frage vorher ab ob der Ziel Ordner gemountet ist

    Hier ein snip aus meinem Code

    Ich hab zwar noch nie mit sshfs gearbeitet aber wenn das unter mount erscheint geht das bei dir so in etwa :

    Code
    sshfs SFTP-BENUTZER@ihre-domain.de /mnt/backupdir
    if [ -z "$(mount | grep backupdir)" ];then
            exit 1
    fi
    rsync -azh --progress --stats /meine/Datein /mnt/backupdir

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (17. Oktober 2014 um 11:06)

  • also langsam verzweifle ich hier

    guck mal habe nun folgenden Aufbau

    Hab eine Lokale Datei auf dem PI mit der größe 700MB
    und ein WebDav Ordern eingebunden mit davfs

    Code
    rsync -azh --progress /home/pi/Datei.avi /home/pi/WebDav-Cloud
    sending incremental file list
    Datei.avi
         734.02M 100%    1.90MB/s    0:06:07 (xfer#1, to-check=0/1)
    
    
    sent 734.27M bytes  received 31 bytes  1.96M bytes/sec
    total size is 734.02M  speedup is 1.00

    auf dem Cloud-Server liegt jetzt die Datei.avi, ist aber 0 Byte groß.

    Und im Hintergrund fäng an die /sbin/mount.davfs wie verrück was zu machen und der Upload steigt stark an.

    Nach etwas warten war die Datein.avi dann vollständig da.

    Warum zeigt Rsync an das er fertig obwohl mount.davfs noch am übertragen ist.

    So kann ich ja gar nicht prüfen ob Rsync fertig ist oder nicht.

    EDIT:
    Bis jetzt tut wirklich nur wput was es tun soll.
    Hol sich die Daten vom Nas und gibt diese sofort weiter.

    Rsync läd die datei vom NAS und aus der Cloud und vergleicht Sie dann, worauf hin Rsync dann entscheidet was es tut. Das ist ja aus Effizienz siecht eine Katastrophe.

    WAS MACH ICH DEN FASLCH????? :(

    Einmal editiert, zuletzt von Polliny (17. Oktober 2014 um 17:32)


  • warten war die Datein.avi dann vollständig da.

    Warum zeigt Rsync an das er fertig obwohl mount.davfs noch am übertragen ist.

    So kann ich ja gar nicht prüfen ob Rsync fertig ist oder nicht.

    Ich weis es auch nicht genau, vernute jedoch das rsync alle Daten dem davfs treiber übergeben hat und dieser io meldet obwohl er noch fleissig am schaufeln ist,


    EDIT:
    Bis jetzt tut wirklich nur wput was es tun soll.
    Hol sich die Daten vom Nas und gibt diese sofort weiter.

    Rsync läd die datei vom NAS und aus der Cloud und vergleicht Sie dann, worauf hin Rsync dann entscheidet was es tut. Das ist ja aus Effizienz siecht eine Katastrophe.

    WAS MACH ICH DEN FASLCH????? :(

    Rsync vergleich per defaulr Größe unf Timestamp. Überträgt also nie die kompletten files.
    Man kann das in eine Checksumme ändern die dann nur noch verglichen wird.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • guck mal, wenn ich den rsync befehel ausführe fängt er an die Daten runter zu ladenoxjpa9x3.png
    wenn der download abschließt sag er es ist alles fertig und fängt dann an im Hintergrund hochzuladen.
    Beide Verzeichnisse sind mountpunkte (siehe screenshot).
    Das macht er wenn es die Datei auf dern anderen Seite nicht gibt.

    Wenn es die Datei da auch gibt fängt er an dies auch runter zu laden.

  • Versuch mal die Option --size-only und nimm das c raus.
    Einfach mal so aufrufen. Evtl liegt das Problem am NICHT Linux Filesystem

    Code
    rsync -a --size-only  /.....  /.....

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (18. Oktober 2014 um 10:55)

  • ne das gleiche Problem :(

    zjpca7s4.png

    EDIT:

    Das Problem war :lol: das der andere Cloud-Service kein Rsync unterstützte und die Datenauflistung per SSH aben fals nicht.
    Das hatte zu folge das Rsync die Daten auf das eigene Datensystem zog und verglich.

    Einmal editiert, zuletzt von Polliny (30. November 2014 um 21:44)

  • Ich konnte nun ein Service finden der auch Rsync unterstützt.

    Für das backup nutze ich nun folgende Backup per cronjob.


    Hab aber nun wieder mit Problemen zu kämpfen.
    Da die DSL Provider die Verbindung alle 24 Std trennen bekommen ich Verbindungsabbrüche bei synchroniesieren.
    Ich konnte die return codes für Rsync rausfinden


    Wie kann ich das Shellscripts modifizieren das wenn returncode=!0 dann soll das script nochmal laufen

    ich weiß wie ich das in C zu schreiben hab, keiner Ahnung als Shellscripts

  • Für alle Einsteiger hier das komplette Backupscript für Rsync
    Dank für die Hilfe framp und Der_Imperator

    Das Script erstellt eine pid-Datei um sicher zu gehen das das Programm nur einmal Läuft
    Danach wird Rsync in einer Schleife ausgeführt, solange bis Rsync eine 0 für erfolgreiches Abschließen zurück gibt.
    Sollte jedoch Rsync 100-mal ausgeführt worden sein, ohne erfolgt bricht die schleifen ab.

    Ich hab die Schleife eingeführt weil beim Synchronisieren von Großen/Vielen Daten braucht das ganze viel Zeit. Die Provider machen aber alle 24Std wie wir wissen eine Zwangsunterbrechung. Sobald die Zwangsunterbrechung stattfinden bricht Rync seine Arbeit ab und macht nicht weiter. Hier kommt die Schleife zum Einsatz, dies startet Rsync neu und lässt ihn die Arbeit fortsetzten.


    Einmal editiert, zuletzt von Polliny (1. Dezember 2014 um 19:25)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!