[HowTo] Rsync mit Strato Hidrive

  • Hallo,


    die Verwendung von RSYNC mit STRATO HIDRIVE ist nicht möglich, da die Eingabemaske des QNAP nicht mit der Tatsache klar kommt, dass die Verzeichnisse des Remote Systems nicht mit root beginnen.
    D.h. hier wird versucht die Liste möglicher Verzeichnisse zu ziehen, doch mangels Rechten wird ein leeres Ergebnis zurück gegeben. Hier müsste dann eigentlich „/users/<HiDrive Benutzer>/<Ordner für Backup>“ eingetragen werden, doch da eine händische Eingabe ebenso nicht möglich ist, geht es hier dann nicht weiter.


    Lösungsansatz A:
    Quelle -> http://forum.qnapclub.de/viewt…330&hilit=hidrive#p170330
    Hier wird gezeigt wie man mit HTML Entwicklungstools von Internet-Browsern das "readonly" ( nur Lesen Kennzeichnung ) vom Eingabefeld temporär deaktivieren kann. Dies erlaubt dann händisch das korrekte Verzeichnis einzutragen.
    Vorlage ist: „/users/<HiDrive Benutzer>/<Ordner für Backup>“


    Lösungsansatz B ( der Rest des HowTo ):
    Ein RSYNC mit HIDRIVE ist möglich über die Konsole / Linux-Shell des QNAP, denn alle notwendigen Tools werden bereits geliefert. Dies ist zwar ein wenig aufwendig und lässt ich im QNAP Web-Frontend nicht einsehen, doch dafür lässt es sich genau nach Wunsch konfigurieren.
    Diese Anleitung z.B. beschreibt die Einrichtung einer täglichen SSH verschlüsselten Paket basierten Synchronisierung via RSYNC, und unvollständige Übertragungen fortsetzt anstatt sie erneut zu starten und erst dann entfernte Dateien löscht wenn alle neuen Dateien wie Änderungen übertragen wurden.


    Schritt 1: Erzeugen eines OpenSSH Schlüssels
    Dieser fungiert gleichzeitig als Benutzer-Zugangsdaten und Daten-Verschlüsselung. Zwar könnte man auch unverschlüsselt arbeiten und die Zugangsdaten via Parameter übergeben, aber mit solch halben Sachen will ich mich hier erst garnicht befassen.
    Hierzu wird ein SSH Schlüssel-Generator, wie z.B. „PuTTYGEN“ der „PuTTY“ Tools ( http://www.putty.org/ ), benötigt. Gut wäre z.B. „SSH-2 RSA“ mit 2048 Bits.
    Einen „Key-passphrase“ muss man in diesem Fall nicht hinterlegen.
    Der private Schlüssel ( „Public key“ ) wird später für HIDRIVE benötigt. Der private Schlüssel ( „Private Key“ ) sollte als OpenSSH Key abgelegt werden ( PuTTYGEN Conversion->Export OpenSSH Key ) und wird später vom QNAP benötigt.
    Empfohlener Dateiname für privaten Schlüssel: „cron_hidrive_open.ppk“ .


    Schritt 2: Ablegen des SSH Schlüssels bei / für HIDRIVE
    Anmelden bei HIDRIVE via https://www.hidrive.strato.com/?&lang=de und den Zugangsdaten des dortigen Kontos. Der Dialog findet sich unter „Einstellungen->Kontenverwaltung->OpenSSH Schlüssel“. Einmal hinterlegt kann der PPK ( Endung .ppk, der „Private key“ ) aus Schritt #1 zur Anmeldung für RSYNC verwendet werden.


    Schritt 3: Definieren der Berechtigungen Ihres HIDRIVE Kontos
    Per Default sind alle HIDRIVE Dienste aktiviert. Allerdings sollte man sich aus Sicherheitsgründen auf jene Dienste beschränken die man auch tatsächlich benötigt, und muss auf jeden Fall sicher stellen dass RSYNC verwendet werden darf.
    Der Dialog findet sich unter Einstellungen->Kontenverwaltung->Konteneinstellungen->Box „Admin- und Protokollrechte“, und RSYNC wird hier auch entsprechend als „rsync über SSH“ geführt.


    Schritt 4: Anlegen eines Unterordners für die Backups bei HIDRIVE.
    In der Regel sollte man sein Backup nicht direkt im eigenen Home ablegen, für den Fall dass man evt. Irgendwann noch andere Verwendungszwecke als nur jenem einen RSYNC Abgleich hat.
    Der Dialog findet sich unter Dateimanager->Ordner „Strato HiDrive“->Ordner „users“->Ordner mit Ihrem HiDrive Benutzernamen. Hier können Sie nun einfach einen Ordner Ihrer Wahl ergänzen.
    Ergebnis: „/users/<HiDrive Benutzer>/<Ordner für Backup>“


    Schritt 5: Ablegen Ihres privaten Schlüssels auf dem QNAP
    Um Ihren privaten Schlüssel für RSYNC nutzen zu können, muss dieser auf dem QNAP abgelegt werden. Bitte legen Sie ihn dazu in einem beliebigen Verzeichnis auf dem QNAP, z.B. über die „File Station“, ab. Wichtig ist nur dass Sie sich Pfad und Namen merken, also z.B. „Public/cron_hidrive_open.ppk“ . Diesen Ergänzen sie nun vorne um „/share/“, und Sie erhalten den tatsächlichen Namen in der Verzeichnisstruktur Ihres QNAP.
    Also z.B. „/share/Public/cron_hidrive_open.ppk“ .


    Schritt 5: Anmeldung in der Konsole / der Linux-Shell des QNAP.
    Hierzu wird ein SSH Client, wie z.B. PuTTY ( http://www.putty.org/ ), benötigt. Sie müssen dann Name oder die IP ihres QNAP eingeben sowie darauf die Admin Zugangsdaten des QNAP ( Benutzer mit Admin-Rechten funktionieren nicht ).


    Schritt 6: Sicheres Ablegen Ihres privaten Schlüssels
    Natürlich darf Ihr Schlüssel aus Sicherheitsgründen nicht einfach in einer Freigabe allgemeinzugänglich liegen bleiben. Sie sollten Ihn daher an einen sicheren Ort verschieben sowie vor fremdem Zugriff schützen.


    Linux-Shell Befehle ( sofern Pfad wie bei Schritt 5 ).
    1. mkdir /home/cron
    2. mv /share/Public/cron_hidrive_open.ppk /home/cron/
    3. chmod 400 /home/cron/cron_hidrive_open.ppk


    Ab hier gehe ich nun für die weitere Anleitung davon aus, dass Ihr Schlüssel hier liegt und so heisst: /home/cron/cron_hidrive_open.ppk .


    Schritt 7: Erstellen des eigenen Cron-Scripts
    Dieses Script dient dem Aufruf der einzelnen täglichen Tätigkeiten, wenn auch an dieser Stelle erst einmal nur RSYNC. Das Beispiel-Script ist dazu ausgelegt nur zu starten sofern es nicht bereits ausgeführt wird. Ferner rechnet es mit einer Leitungstrennung mindestens alle 24 Stunden, weshalb u.A. RSYNC 2x aufgerufen wird ( für den Fall dass es bis zur Trennung nur ein paar Minuten sind ).


    Shell: vi /etc/init.d/cron_daily.sh
    Hinweis: ESC für Ende, „i“ für Einfügen+Ändern, „q“ für Verlassen, „qw“ für Speichern und Verlassen, Einfügen meist über rechte Maustaste


    Shell-Script
    1. #!/bin/shlock_cron_daily=/var/lock/cron_daily.lckif [ ! -f $lock_cron_daily ] ; thentouch $lock_cron_daily#echo Sync #1./etc/init.d/cron_daily_rsync.shsleep 60#echo Sync #2 - to counter line hang-ups./etc/init.d/cron_daily_rsync.shrm $lock_cron_dailyelse#echo Just in case something kept being locked.find $lock_cron_daily -type f -mtime +1 | xargs rmfi


    Shell: chmod 700 /etc/init.d/cron_daily.sh


    Schritt 8: Erstellen des RSYNC-Scripts
    Hier erfolgt der eigentliche Aufruf von RSYNC, um cron_daily.sh übersichtlicher zu halten sowie um sicher zu sein, dass beide dort hinterlegten Aufrufe korrekt wie identisch sind.
    Bitte die <...> Passagen entsprechend der eigenen HiDrive-Daten anpassen.


    Shell: vi /etc/init.d/cron_daily_rsync.sh
    Hinweis: ESC für Ende, „i“ für Einfügen+Ändern, „q“ für Verlassen, „qw“ für Speichern und Verlassen, Einfügen meist über rechte Maustaste


    Shell-Script
    1. #!/bin/sh
    2. /usr/bin/rsync -rltDvze "ssh -i /home/cron/cron_hidrive_open.ppk" --chmod=ugo=rwX --inplace --delete-after /share/<Abzugleichender lokaler Ordner, z.B. Public>/ <HiDrive Benutzer>@rsync.hidrive.strato.com:/users/<HiDrive Benutzer>/<Ordner für Backup> --partial


    Shell: chmod 700 /etc/init.d/cron_daily_rsync.sh


    Schritt 9: Prüfen der RSYNC Verbindung
    Rufen Sie nun bitte das Script via Shell: /etc/init.d/cron_daily.sh auf.
    Sofern es ohne Fehlermeldungen mit dem Datenabgleich beginnt, so können Sie es nun mit STRG+C wieder abbrechen sobald Sie unter https://www.hidrive.strato.com/?&lang=de sehen dass dort zumindest schon mal die Order korrekt ankommen.


    Sie müssen anschließend das Script entsperren, sonst wird es das nächste Mal erst in 2 Tagen ausgeführt.
    Shell: rm /var/lock/cron_daily.lck


    Schritt 10: Einrichten von täglichem Abgleich
    Nun müssen Sie noch dafür sorgen, dass RSYNC periodisch ausgeführt wird. Dazu wird crontab / cron verwendet.


    Schritte ( für täglich 18 Uhr ):
    1. Shell: vi /etc/config/crontab
    alternativ auch crontab -e
    2. Einfügen der Zeile ( i )

    Zitat

    0 18 * * * /etc/init.d/cron_daily.sh


    3. Verlassen + Speichern mit ESC und „wq“ .
    4. Neustart des QNAP oder Shell: crontab /etc/config/crontab

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Threadtitel abgeändert.

  • Ich wurde soeben gefragt, ob die Anleitung auch für andere Dienste neben HiDrive nutzbar ist: Ja, im Wesentlichen ist sie das.
    Da ich mein HowTo scheinbar leider nicht mehr entsprechend anpassen / ergänzen kann, hier nun die Antwort zur Frage:


    Die einzige notwendige Änderung / Anpassung ist der RSYNC-Pfad

    Zitat

    <HiDrive Benutzer>@rsync.hidrive.strato.com:/users/<HiDrive Benutzer>/<Ordner für Backup>


    Daraus würde für die Bash in Schritt #8 dann:

    Zitat

    <Benutzername>@<Provider Adresse>:/<Pfad zu Ihrem Home-Verzeichnis>/<Ordner für Backup>


    Bezüglich der einzelnen Schritte:

    • Unverändert, sofern Ihr Provider "rsync über SSH" unterstützt. Wird kein SSH unterstützt und ergeben sich für Sie auch keine anderen Wege der Verschlüsselung, sollten Sie an dieser Stelle besser nicht weiter machen.
    • Kann dann entfallen bzw. Sie müssen schauen wie Sie den selben Schritt bei Ihrem Provider durchführen können.
    • Siehe #2
    • Siehe #2
    • Unverändert.
    • Unverändert.
    • Unverändert.
    • Anpassen Ihres Pfades entsprechend der obrigen Struktur. Normalerweise sollte Ihr Provider Informationen zur Verfügung stellen, mit denen sich die Platzhalter füllen lassen.

      Shell-Script
      1. #!/bin/sh/usr/bin/rsync -rltDvze "ssh -i /home/cron/cron_hidrive_open.ppk" --chmod=ugo=rwX --inplace --delete-after /share/<Abzugleichender lokaler Ordner, z.B. Public>/ <Benutzername>@<Provider Adresse>:/<Pfad zu Ihrem Home-Verzeichnis>/<Ordner für Backup> --partial


      Sofern Sie Ihren Zugriff nicht via SSH Authentifizieren, müssten Sie den SSH Passus entfernen und z.B. ein Kennwort übermitteln.

      Shell-Script
      1. #!/bin/sh
      2. /usr/bin/rsync -rltDvz --chmod=ugo=rwX --inplace --delete-after /share/<Abzugleichender lokaler Ordner, z.B. Public>/ <Benutzername>@<Provider Adresse>:/<Pfad zu Ihrem Home-Verzeichnis>/<Ordner für Backup> --password-file <sicher platzierte Datei mit Passwort, einzeilig> --partial


    • Unverändert.
    • Unverändert.


    Hinweis: Es kann sein dass Ihr Provider nicht die spezifizierten Betriebsparameter akzeptiert ( "-rltDvz --chmod=ugo=rwX --inplace --delete-after --partial ... " ). Sofern sich der Provider hierzu ausschweigt sollte man sich dann eine Anleitung wie z.B. http://wiki.ubuntuusers.de/rsync zu Gemüte nehmen, und mit der Basis beginnend schrittweise an die gewünschte Zielkonfiguration nähern.

  • ACHTUNG!
    Scheinbar ist der Ordner /etc/init.d/ eine reine RAM-Kopie direkt aus dem ROM ( zumindest für mein TS-420 ).
    D.h. alle dort händisch abgelegten Dateien sind nach einem Neustart nicht mehr vorhanden - und der RSYNC dann nicht mehr in Betrieb !!


    Damit die Anleitung funktioniert empfehle ich die Dateien von /etc/init.d nach /home/cron zu verlegen ( und natürlich die Pfade für die Scripte entsprechend anzupassen ) !