rsync und TrueCrypt: Funktioniert, übersteigt aber meine Logik

7 Kommentare Autor: Jürgen (jdo)

rsync Logo 150x150Sehr viele Informationen bekommt man nicht gerade, wenn man im Internet über rsync und TrueCrypt-Container recherchiert. Und die gefundenen Optionen verhalten sich dann wie Blinker: Funktioniert, funktioniert nicht, funktioniert …

Sagen wir mal so – ich bekomme es zum Laufen. Allerdings ist das Verhalten von Maschine zu Maschine total unterschiedlich und ich verstehe nicht ganz wieso. Es hängt wahrscheinlich mit der rsync-Version zusammen. Allerdings bekomme ich die für Strato HiDrive nicht heraus – zumindest nicht direkt. Ich sichere Dateien periodisch von meinem Rechner via rsync auf das Synology. Ebenso gehen diverse Daten via rsync und ssh Richtung HiDrive (auch Android-Geräte).

rsync-Version schätzen

Da ich keine Chance habe, die rsync-Version auf dem Remote-Host zu erfahren – dazu müsste ich mich anmelden können und das ist nicht erlaubt – muss ich schätzen. Zumindest kann ich so herausfinden, welche rsync-Version mindestens im Einsatz ist.

rsync -vvvv --dirs --delete --dry-run <irgend eine Datei>  <Benutzer>@rsync.hidrive.strato.com:/<Pfad>

rsync-Version schätzen

rsync-Version schätzen

Protokoll 30 auf beiden Seiten verrät mir also, dass mindestens rsync 3.0.0 im Einsatz ist. Auf meinem Client kann ich nachsehen und hier befindet sich 3.0.9 im Einsatz.

So weit so gut … und nun wird es bizarr …

Was habe ich getestet?

Ich habe mir einen TrueCrypt-Container von fünf MByte erstellt und diesen mit rsync durch die Gegend gejagt. Zunächst einfach den leeren Container. Danach kopierte ich zwei PDF-Dateien rein, die insgesamt 500 KByte groß waren. Hier nun die Ergebnisse und gleich eine gute Nachricht: TrueCrypt-Container lassen sich auch mit Strato HiDrive erfolgreich synchronisieren, ohne dass man jedes mal den kompletten Container durch das Netz jagen muss.

Einige Zusatzinformationen

Die ganze Geschichte scheint an der Option --checksum zu hängen. Diese Option hat allerdings seinen Preis. Ist der Schalter nicht gesetzt, prüft rsync lediglich die Dateigröße und den Zeitstempel der letzten Modifizierung. Der Witz eines TrueCrypt-Containers ist aber gerade, dass dies nicht preisgegeben wird. Aktivierst Du diesen Schalter, prüft rsync alle Dateien mit einer 128-Bit-Prüfsumme, die exakt die selbe Größe haben. Dazu wird auf beiden Seiten allerdings relativ viel Disk I/O produziert, da natürlich die kompletten Dateien ausgelesen werden müssen. Somit kann das den Synchronisations-Prozess deutlich in die Länge ziehen. Allerdings muss dafür nicht der komplette Container übertragen werden.

Wenn das Ganze nun noch logisch konsistent wäre …

Die Tests

Vom Client Richtung Synology

Schicke ich den TrueCrypt-Container auf das Synology, wird beim ersten Mal der komplette Container übertragen und danach kann ich Optionen verwenden was ich möchte – keine weiteren Updates mehr. Das sieht man an der Sende-Größe.

rsync: Allgemeine Tests Richtung Synology

rsync: Allgemeine Tests Richtung Synology

Schiebe ich nun die beiden erwähnten PDF-Dateien in den Container, überträgt sich auch nur diese Differenz zum Synology und die beiden Dateien sind auch im gesicherten Container.

rsync: Geänderter Container, ohne besonderen Optionen

rsync: Geänderter Container, ohne besonderen Optionen

Verwende ich nun die Optionen --checksum oder --checksum --inplace kommt im Prinzip das selbe Ergebnis dabei raus.

rsync: Richtung synology mit checksum

rsync: Richtung synology mit checksum

rsync: Richtung synology mit checksum und inplace

rsync: Richtung synology mit checksum und inplace

Soweit so gut und schön, dass rsync anscheinend TrueCrypt-Container per Standard richtig sichert. Das wäre schön …

Lokale Datensicherung

Veranstalte ich das Ganze nun auf dem lokalen Rechner (kein rsync Daemon involviert), bekomme ich ein komplett anderes Ergebnis. Ich synchronisere also einfach nur von einem Ordner in einen anderen. Auch hier überträgt der erste Lauf die komplette Datei. Gebe ich die Optionen --checksum oder --checksum --inplace nicht an, wird der Container jedes mal komplett übertragen. und dann eben nichts mehr – gut, hat sich ja auch nichts geändert.

rsync: lokale Sicherung

rsync: lokale Sicherung

Schiebe ich hier nun die beiden PDF-Dateien rein und verwende die selben Optionen wie Richtung Synology, kommt das dabei heraus:

rsync: Container mit PDF wird komplett übertragen

rsync: Container mit PDF wird komplett übertragen

rsync: Container mit PDF wird komplett übertragen

rsync: Container mit PDF wird komplett übertragen

Ich verwende --checksum oder --checksum --inplace und der Container überträgt sich komplett – also die gesamten fünf MByte. Ok, lokal ist das weniger schlimm – aber trotzdem – es sind nicht alle Container nur fünf MByte groß.

Richtung HiDrive sichern

So, als wäre das noch nicht verwirrend genug, geht es lustig weiter. Sichere ich nun vom Synology Richtung HiDrive, habe ich wieder ein anderes Verhalten.

Lösche ich die PDF-Dateien aus dem Container, muss ich --checksum verwenden, sonst werden die Änderungen manchmal nicht übertragen. Dann und wann klappt es ohne besondere Optionen, allerdings nicht immer – das zeigt nachfolgendes Beispiel. Befehle direkt hintereinander ausgeführt, TrueCrypt-Container dabei nicht angefasst.

    rsync: Richtung HiDrive, PDF-Dateien gelöscht, mit und ohne checksum

rsync: Richtung HiDrive, PDF-Dateien gelöscht, mit und ohne checksum

Und jetzt?

Wie gesagt blicke ich nicht ganz durch, wann und wie das mit rsync und den TrueCrypt-Containern funktioniert. Ich habe mehrere Testläufe gemacht und immer ähnlich bizarre Ergebnisse bekommen.

Was ich mit Sicherheit sagen kann: Wenn die Option --checksum Verwendung findet, klappt es ganz sicher. Allerdings hat das, auch erwähnt, seinen Preis.

Von daher ist es wahrscheinlich am Geschicktesten, TrueCrpyt-Container einen komplett eigenen und dedizierten rsync-Lauf zu spendieren. Dann kann die Prüfsummen-Option zumindest keinen anderen Dateien beeinflussen. Bei große TrueCrypt-Containern wird durch das Auslesen der Datei das Backup schon deutlich länger dauern. Der Vorteil ist aber, dass man Bandbreite spart – es werden nur die Änderungen plus etwas Overhead übertragen.

Wenn Du so etwas vorhast, mache ausführliche Tests mit Deinem Ziel. Das heißt:

  • TrueCrypt-Container mounten
  • Inhalt verändern
  • synchronsierern
  • vom Ziel wieder herunterladen
  • in TrueCrypt einbinden und nachsehen, ob die Änderungen gezogen haben
  • das Ganze am Besten mehrmals wiederholen und auch innerhalb des Containers Dateien löschen, hinzufügen, anlegen und was weiß ich noch alles. Mag sich alles als ein Overkill anhören, aber beim Schreiben dieses Beitrags habe ich die sprichwörtlichen Pferde vor einer Apotheke kotzen sehen.



 Alle Kommentare als Feed abonnieren

7 Kommentare zu “rsync und TrueCrypt: Funktioniert, übersteigt aber meine Logik”

  1. Thomas says:

    Ich habe nicht alles gelesen, aber das rsync überträgt nur verändere blocks wenn man auf einen anderen host sichert, also via rsync daemon. Ich glaub auch via ssh bin mir da aber nicht sicher (man rsync). rsync lokal überträgt immer alles.
    Vielleicht passt das Kommentar auch nicht weil, wie gesagt, ich nicht alles gelesen habe ;-).

    • jdo says:

      Das mit dem lokal sichern ist auch das geringste Problem. Die Inkonsistenzen zwischen SIchern auf Synology und Sichern auf HiDrive verwirren mich ...

  2. claw says:

    Timestamp prevention an oder aus? Das würde erklären warum du mit csum arbeiten musst. Das sich scheinbar willkürlich die Checksumme ändert kann bei einem Container schonmal passieren. Es ist ein Filesystem mit Verschlüsselung hier wird noch mehr dynamisch geändert als die Dateien die sich darin befinden.

    • jdo says:

      Ja wie gesagt weiß ich nicht, wie HiDrives rsync konfiguriert ist oder welche Version die einsetzen - ich kann bei letzterem nur raten. Ich weiß aber nun zumindest sicher, dass es mit --checksum Richtung HiDrive funktioniert. Verwende ich diese Option nicht, ist es ein Glücksspiel.

  3. Wutz says:

    Ich habe die Erfahrung gemacht, dass rsync bei Truecrypt Containern nur dann zuverlässig und schnell funktioniert, wenn man beide Truecrypt Container entschlüsselt, mounted und dann einen rsync Durchlauf durchführt.
    Dann geht das bei großen Truecrypt Containern auch schnell.
    Diese Methode nutze ich zum Übertragen von Daten an meine externe Festplatte, wo ich die gleichen TC Container gespeichert habe.

    Der Nachteil ist allerdings, dass aufgrund der Verschlüsselung die beiden TC Containerdateien von außen betrachtet bei einem Prüfsummenvergleich, z.B. mit md5sum nicht identisch sind.