[Howto] rsync QNAP zu Strato HiDrive

  • Ich habe es jetzt geschafft das Remote Backup zu Strato HiDrive auch per ssh mit der QNAP Weboberfläche einzurichten. Dazu musste ich allerdings einige Dateien des QNAP-Systems editieren. Die Sache ist also mit einiger Vorsicht durchzuführen, und wer sich bezüglich seiner Linux Kenntnisse nicht sicher ist, sollte vieleicht lieber auf die Modifikation verzichten. Die Modifikationen habe ich an meinem QNAP TS-109 II Pro mit Firmwarestand 3.1.0 Build 0708T durchgeführt. Damit dieses How To auch für andere Modelle möglichst nützlich ist, habe ich versucht, meine Modifikationen so gut es geht allgemeingültig zu beschreiben.


    Zunächst einmal muss man wie von SebaBeer weiter oben beschrieben einen ssh Schlüssel generieren und den öffentlichen Teil beim HiDrive eintragen. Danach sollte ein Backup über die Kommandozeile ohne Abfrage eines Passwords möglich sein. Am besten legt man sich dazu sowohl auf dem QNAP, als auch auf dem HiDrive einen Testordner an. In meinem Beispiel „rsynctest“.


    Code
    # rsync  -avv /share/Public/rsynctest/ <user>@rsync.hidrive.strato.com:/users/<user>/rsynctestopening connection using: ssh -l <user> rsync.hidrive.strato.com rsync --server -vvlogDtpre.is . /users/<user>/rsynctestsending incremental file listdelta-transmission enabledHiRsync.txt is uptodatetotal: matches=0  hash_hits=0  false_alarms=0 data=0sent 75 bytes  received 18 bytes  37.20 bytes/sectotal size is 10  speedup is 0.11


    Jetzt sollte man das auch einmal per QNAP Web Administration einrichten. Natürlich noch ohne ssh. Der einzutragende Zielpfad muss als root/users/<user>/rsynctest angegeben werden.
    Achtung, der Pfad beginnt NICHT mit einem Schrägstrich und im HiDrive müssen unverschlüsselte Verbindungen zugelassen sein.


    Wenn das geklappt hat, existiert ein Eintrag in /etc/config/rsync_schedule.conf

    Code
    [Schedule2]ID = 2Name = rsynctestRemote Volume = root/users/toschRemote Path = /rsynctestLocal Volume = PublicLocal Path = /rsynctestProtocol = 100Remote IP = rsync.hidrive.strato.comUser Name = toschPassword = xxxxSchedule Type = 1Week = 0Month = 0Hour = 0Minute = 0Compressed = FalseIncremental = FalseDelete Extra = FalseStop Net = FalseUse of SSH = FalseSSH PORT = 22RSYNC PORT = 873RSYNC MODE = 1Status = 7Finished Time = 1302353037


    Wenn man einen Zeitplan für die Replikation angegeben hat, so existiert auch ein Eintrag in der crontab.


    Code
    # crontab -l# m h dom m dow cmd20 1 * * * /etc/init.d/rsyncRR.sh Schedule2 2>/dev/null


    Die Remote-Replikation wird also durch das Shell-Skript rsyncRR.sh gesteuert, welches sich die Parameter aus rsync_schedule.conf ausliest. Die Weboberfläche erlaubt lediglich ein komfortables editieren dieser Einträge. Dummerweise ist aber sowohl das Shellskript, als auch die Weboberfläche fehlerhaft, so dass eine Remote-Replikation per ssh zum HiDrive zunächst unmöglich ist.


    Im Skript befnden sich insgesamt vier Stellen, wo rsync aufgerufen wird. Jeweils einmal mit debug Ausgaben oder ohne (-v option), sowie per ssh oder ohne (-e option).


    Code
    [~] # grep rsync /etc/init.d/rsyncRR.sh                /usr/bin/rsync -a --sever-mode=${RR_MODE} -e "${RR_com_ssh}" ${RR_options} --password="${Passwd}" --timeout=120 "${RR_local_path}/" "${UserName}"@${Remote_IP}::"${RR_remote_path}" -v -v -v 1>${RR_OUT} 2>&1                /usr/bin/rsync -a --sever-mode=${RR_MODE} ${RR_options} --password="${Passwd}" --timeout=120 --port=${RR_PORT} "${RR_local_path}/" "${UserName}"@${Remote_IP}::"${RR_remote_path}" -v -v -v 1>${RR_OUT} 2>&1                /usr/bin/rsync -a --sever-mode=${RR_MODE} -e "${RR_com_ssh}" ${RR_options} --password="${Passwd}" --timeout=120 "${RR_local_path}/" "${UserName}"@${Remote_IP}::"${RR_remote_path}" 1>${RR_OUT} 2>&1                /usr/bin/rsync -a --sever-mode=${RR_MODE} ${RR_options} --password="${Passwd}" --timeout=120 --port=${RR_PORT} "${RR_local_path}/" "${UserName}"@${Remote_IP}::"${RR_remote_path}" 1>${RR_OUT} 2>&1


    Auffällig ist, dass immer die Variante mit <remote-ip>::<remote-path> verwendet wird. Dies ist die Syntax (zwei Dopplepunkte), die für die Replikation ohne ssh vorgesehen ist. Der <remote-path> beginnt hierbei mit dem sogenannten Module Namen. Im Falle des HiDrive ist das einzige bekannte Module „root“. Für die Replikation per ssh ist die Syntax <remote-ip>:<remote-path> vorgesehen (ein Doppelpunkt). Der <remote-path> ist hier direkt der Pfad im Dateisystem des HiDrive, also ohne vorgestelltes „root“. Per Option -e kann man noch ein anderes remote shell Kommando angeben, oder noch zusätzliche Parameter an ssh, z.B. einen nicht standard Port. Default ist ssh an Port 22. Was auch immer ich versucht habe, eine Remote-Replikation per ssh ist mir nie mit der Syntax der zwei Doppelpunkte geglückt. Mit nur einem Doppelpunkt läuft es problemlos.


    Modifikation 1:


    An allen vier rsync Aufrufen im /etc/init.d/rsyncRR.sh die doppelten Doppelpunkte durch einen einzelnen Doppelpunkt ersetzen.


    Jetzt kann man schon von Hand in /etc/config/rsync_schedule.conf auf „Use of SSH = True“ umstellen. Im „Remote Volume“ Eintrag das „root“ noch löschen, und schon sollte der nächste Replikations-Auftrag per ssh ausgeführt werden.


    Um das jetzt auch komfortable per GUI zu machen sind weitere Modifikationen nötig.


    Modifikation 2:


    In /home/httpd/ajax_obj/js/backup_wiz.js die Funktion check_client_mode wie folgt ändern:


    Code
    var check_client_mode = function(){var rcm = $j('#RR_CLIENT_MODE');if( rcm.val() == 'QNAP_mode'){$j('input[@name=USE_OF_SSH]').enable();$j('input[@name=RR_SSH_PORT]').enable();}else{var o_USE_OF_SSH = document.getElementById('USE_OF_SSH');o_USE_OF_SSH.checked = true;$j('input[@name=USE_OF_SSH]').enable();$j('input[@name=RR_SSH_PORT]').enable();}}


    In /home/httpd/cgi-bin/backup/html/edit_remote_rep.js die Funktion check_edit_client_mode wie folgt ändern:

    Code
    function check_edit_client_mode(){var form = document.backup;if(form.RR_CLIENT_MODE.selectedIndex == 0){form.USE_OF_SSH.disabled = false;if(form.USE_OF_SSH.checked){form.RR_SSH_PORT.disabled=false;}else{form.RR_SSH_PORT.disabled=true;}SERVER_TYPE_IS_NAS = true;}else{//form.USE_OF_SSH.checked = false;//form.USE_OF_SSH.disabled = true;//form.RR_SSH_PORT.disabled = true;form.USE_OF_SSH.disabled = false;if(form.USE_OF_SSH.checked){form.RR_SSH_PORT.disabled=false;}else{form.RR_SSH_PORT.disabled=true;}SERVER_TYPE_IS_NAS = false;}}


    Jetzt kann man einen neuen Remote-Replikations Auftrag mit Benutzung von ssh per Wizard erzeugen und später auch editieren. Ein Remote-Host-Test und letztendlich auch ein Übernehmen der Änderungen ist aber nicht Möglich, da es hier immer zu Fehlermeldungen kommt. Der Remote-Host-Test, der offensichtlich auch jedesmal beim Übernehmen von Änderungen durchgeführt wird ist in der Datei /home/backup/cgi-bin/backup/backupRequest.cgi realisiert. Dummerweise ist diese Datei ein kompiliertes C Programm, so dass eine Analyse hier nicht so leicht möglich ist. Ein simples "string" fordert aber eine „verdächtige“ Zeichenkette zutage.


    Code
    # strings /home/httpd/cgi-bin/backup/backupRequest.cgi %s --dry-run --check-dest --sever-mode="%d" --port="%d" --timeout=30 --contimeout=30 --password="%s"  "%s"@%s::"%s" > %s 2>&1


    Das sieht sehr nach einem rsync Aufruf mit der zwei Doppelpunkte Syntax aus.


    Modifikation 3:


    In einem Hexeditor in backupRequest.cgi die obige Zeichenfolge suchen und ohne die Länge des Strings zu verändern durch folgende Zeichenfolge ersetzen.


    Code
    %s --dry-run --check-dest --sever-mode="%d" --port="%d" --timeout=30                 --password="%s"   "%s"@%s:"%s" > %s 2>&1


    Das wars.
    Da jetzt in allen rsync Aufrufen nur noch ein Doppelpunkt steht, muss man für eine Remote-Replikation ohne ssh den dann nötigen zweiten Doppelpunkt hinter den Remote-Server setzen. Also z.B. „rsync.hidrive.strato.com:“.


    Ich hoffe, meine Ausführungen sind verständlich genug. Wie gesagt, so ganz ohne Unix-Kenntnisse sollte man sich vieleicht nicht da rantrauen. Auf jeden Fall immer Backups anlegen. Und natürlich alles auf eigene Gefahr. Trotzdem viel Erfolg.


    Grüße
    Torsten Schumacher

  • Hi Torsten,


    das ganze funktioniert aber nur solange bis Du das Nas neustartest.


    Grüsse, David

  • Danke, luckbear, so klappt es auch bei mir (QNAP 219p) über die Administrationsoberfläche :thumb:


    In der Zusammenfassung:
    - Server Tpe: Rsync server
    - Jobname: Test (oder was immer)
    - Name or IP address of the remote server: rsync.hidrive.strato.com
    - Port Number: 873
    - User Name: meinStratoHiDriveUsername
    - Password: meinStratoHiDrivePasswort
    - Destination Path: /root/users/meinStratoHiDriveUsername/Test
    - Local Path: /Test
    - Schedule: Daily / 22:00 (oder wann auch immer)
    - Optionen wie gewünscht (compression, incremental)


    Viele Grüße
    Stephan

  • Hallo!


    Habe heute mal das Thema angegangen, HiDrive in die QNAP einzubinden. Es hat geklappt. Nur mit Bordmitteln, ohne Linux-Kentnisse und cronjob.


    Situation: Ich habe ca. 50 GB Fotos, die ich endlich mal auf meine seit Monaten bezahlte HiDrive sichern will. Ich nutze ein VDSL25 von Telekom mit 5MB Upload. Und ich möchte vermeiden, dass mein PC (Win7) ständig in Betrieb sein muss.


    Ich sichere nun meine Fotos vom PC per NetReplicator täglich bei Änderung auf die QNAP 119PII unter "Datensicherung / Fotos".
    (Von dem ganzen "automatischen Zeug" wie QMulti & Co. halte ich derzeit nicht viel.) Das geht über GbitLAN recht flott mit knapp 40-50 MByte/s.


    Dann habe ich in der QNAP über Sicherung / Remote-Replikation einen RTRR eingerichtet (hat mehr Möglichkeiten als RSYNC).


    IP/Host: ftp.hidrive.strato.com
    Servertyp: FTP-Server
    Benutzername:
    Kennwort:
    Service-Port: 21
    FTP mit SSL/TLS (explizit): aktiviert
    Passiver Modus: aktiviert
    Dann noch die Ordner ausgewählt (mit Einklick Unterordner öffnen, mit Doppelklick übernehmen; /root braucht hier nicht angegeben zu werden.
    Filter setzen, wnen rewünscht.
    Testen: ok


    Derzeit habe ich "jetzt reproduzieren" gestartet, um erstmal alles rüberzunehmen (ca. 30 h).


    Danach lege ich einen neuen Job an "inkrementell". Dann wird geprüft, ob Daten schon vorhanden sind. Und Zeitplan setzen.


    Geschafft!


    Gruß
    f.t.h

  • Das von f.t.h. beschriebene Verfahren über RTRR funktioniert auch bei mir (Turbo NAS mit Firmware 3.7.3 Build 20120801).


    Nun habe ich allerdings zwei HiDrive Konten bei STRATO mit jeweils unterschiedlichen Benutzernamen / Passwörtern. Die Einrichtung des ersten funktioniert problemlos. Wenn ich jedoch das zweite Konto mit demselben Host-Namen einrichte, füllt das Gerät automatisch dieselben Nutzerdaten (Name + Passwort) wie beim ersten aus und graut die entsprechenden Felder dann aus, so dass sie nicht mehr zu ändern sind. Es scheint, dass ein Host-Name untrennbar mit nur einem Satz Nutzerdaten verbunden ist.


    Hat jemand eine Idee, wie ich auf demselben Gerät zwei Zielhost-Konfigurationen mit demselben Host-Namen aber unterschiedlichen Nutzerdaten einrichten kann?

  • Hi!


    Zwei Konten - geht nicht. Dann müsstest du bei einem Konto eine andere Einstellung, z.B. RTRR oder RSYNC wählen, dann kann man ein anderes Login angeben. Damit habe ich es aber bislang nicht geschafft, alles so zu machen, wie ich es wollte. Habe aber seit Januar auch nicht mehr probiert.
    Schreibe aber bitte auf jeden Fall an QNAP, damit das mal geändert wird. Die Logins dürfen nicht auf die Adresse referenzieren, sondern müssen auf das Login referenzieren.


    By the way: wie sieht es mit Verschlüsselung aus? Arbeite mit BoxCryptor. WIeder genau das, was ich will. Du wählst ein Verzeichnis, welches verschlüsselt sein soll, z.B. D:/Daten. Dieses kann beliebig groß sein und sich auch in der Größe ändern. Beim Start des Rechners und nach Eingabe des ausreichend langen Paßwortes (256 Bit AES) entschlüsselt BC in einen eigenes Laufwerk, z.B. T: on-the-fly. D.h. unter T: sind alle deine Daten unverschlüsselt zu sehen (nicht physikalisch). Alle Programme, die auf T: zugreifen, bekommen somit unverschlüsselte Daten, obwohl sie physikalisch verschlüsselt sind.


    Den Order auf D: dann per NetBakReplikator auf die QNAP ziehen und von dort einmal täglich nach Strato. Dort liegen die Daten dann verschlüsselt in der cloud, was mir dann keine Probelme mehr bereitet.


    Gruß
    f.t.h

  • Der QNAP Support bestätigt auf meine Anfrage: Zwei RTRR-Benutzerkonten mit derselben Ziel-URL funktionieren nicht.


    Zitat: "Leider ist dies so nicht möglich. Es müßte bei Strato ein benutzerkonto angelegt werden das quasi als Admin fungiert. Heißt quasi, das man mehrere Strato Konten einbinden kann, allerdings nur wenn man hier den gleichen Nutzernamen + PW hat (quasi der Adminaccount bei Strato der alle Konten zusammenfasst). Am besten an Strato wenden wie das ganze funktioniert."


    Mal schauen, was spätere Firmware Releases bringen...

  • Hallo zusammen,


    ich hab mit gestern auch mal HiDrive gegönnt für rsync über die Qnap. Allerdings funzt es auch mit der Anleitung von fth nicht.


    Wenn ich über RTRR eine FTP Verbinung anlegen will, funktioniert dies nur, wenn ich "FTP mit SSL/TLS(explizit)" nicht aktiviere. Sonst kommt folgender Fehler:
    Ungültige Portnummer, oder der Dienst ist deaktiviert. Bitte die Servereinstellungen überprüfen.


    Bei den HiDrive Einstellungen habe ich rsync über SSH aktiviert. Ich hab keine Schlüssel o.ä. irgendwo eingetragen. Die Einstellung "Nur verschlüsselte Verbindungen" habe ich mal aktiviert gehabt und mal nicht. Klappte beides nicht.


    Kann mir da jemand helfen?


    Danke für Hilfe

  • Wenn ich mich recht erinnere, muss man bei Strato den Dienst mit Verschlüsselung auch aktivieren (oder so ähnlich).
    Bitte prüfe auch noch mal die Einstellungen 1:1. Auch muss die richtige Kennung genutzt werden (bei Strato hat man ja zwei, eine fürs Konto, eine fürs Laufwerk, das Laufwerk muss hinterlegt sein).
    Wenns nicht funktioniert, muss ich nochmal direkt nachsehen...


    Gruß
    f.t.h

  • Also ich hab alles son eingegeben, wie du es anfang des Jahres geschrieben hast. Hab in den Einstellungen bei meinem HiDrive jetzt "Nur verschlüsselte Verbindungen" aktiviert.


    Was meinst du mit korrekter Kennung? Ich habe für HiDrive nur eine Kennung. Ich vermute auch das die richtig, ist, da es klappt, wenn ich SSL weglasse. Kommt für mich aber nicht in Frage. Muss ich den Ordner beim HiDrive eigentlich auch noch extra Freigeben oder so?

  • Nur zur Klarstellung: Das RTRR-Verfahren erfordert in den Konfigurationseinstellungen von HiDrive das Protokoll "FTP über TLS, SFTP" (verschlüsselt). Das RSYNC-Verfahren erfordert das Protokoll "rsync über SSH" (verschlüsselt).

  • Ich habe seit kurzem das gleiche Problem.
    FTP ohne SSL funktioniert, sobal ich den Harken bei "FTP mit SSL/TLS (explizit)" setze, bekomme ich beim Verbindungstest einen Fehler.
    Allerdings hat es bis vor ein paar Wochen noch funktioniert.
    Könnte es sein, dass das Firmware-Update die Probleme hervor gerufen hat?

  • Funktioniert bei jemanden von euch rsync über die Webpberfläsche der QNAP Richtung HiDrive ?


    Bei mir baut er eine Testverbindung auf und das wars dann, bleibt hängen.


    normaler rsync per Script und scronjob-gesteuert funktioniert hingegen auf der QNAP wunderbar, habs genauso eingerichtet wie ich es vorher auf meinem Linux-Server laufen hatte

  • Der Beitrag ist zwar schon "etwas" älter, aber ich habe mit rsync auch Probleme.


    Aktuell klappt das wunderbar mit rtrr, aber dort kann ich ja nur ein Konto angeben X(


    Nachdem ich einen zweitan Account habe, wollte ich dann dort rsync nutzen. Aber ich bekomme das nicht über die Oberfläche hin, egal was ich einstelle.
    Hat da jemand noch nen Tipp für mich?