Yohoo!
Ich versuche das folgende moelgichst effektiv hinzubekommen:
-Binaeres Einlesen eines Mediums
-Aufteilung in gleich grosse Teile
-md5 Feststellung und Notieren derselben in einer Datei
-Schreiben des jeweiligen Teiles nur, wenn sich die md5sum von der frueher geschriebenen Datei unterscheidet
Anfangs wollte ich das mit dd, tee und split machen. split hat jedoch den Nachteil, dass man es weder pausieren kann noch die Ausgabe auf StdOut geht.
Zweite Idee ist jetzt, einfach eine for Schleife anzulegen und dann dd mit dem berechneten skip- Parameter aufzurufen. Dann bekomme ich in jeder Schleifenrunde via dd auf den StdOut eine Datei, die ich dann mittels tee and md5sum und eine temporaere Datei weitergeben kann. Stimmt die md5 ueberein, wird die temporaere Datei wieder geloescht und der naechste Durchgang gestartet.
Dummerweise startet dd aber bei jedem Durchlauf von vorne. D.h liest die komplette Quelle ein und schreibt dann erst ab Block "skip" in den Output. Das bringt Geschwindigkeitsmaessig nicht wirklich viel....weiterer Nachteil ist, dass ich die Blockgroesse des Mediums vorher feststellen muss, um die richtige Anzahl an Schliefendurchgaengen zu nehmen...
Ach ja, Verbesserungen lohnen sich tatsaechlich, Quellmedium ist ca. 500GB gross!
Also, Ziel ist es, aus >500GB Blockdevice (sonst wuerde rsync gehen) mehrere (viele) Dateien mit ca. 1GB zu machen, die aber nur dann geschrieben werden sollen, wenn sie sich geaendert haben.
Jemand eine Idee?
Werde zwischenzeitlich mal mit dem Offset Parameter des loop devices spielen, das koennte gehen...