[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Kopier Leistung HD zu HD optimieren



On Thu, Feb 26, 2015 at 09:58:57AM +0100, Horst Felder wrote:

Juergen Christoffel <jc.debian15@unser.net> schrieb:
Seitdem nutze ich a) -c zusätzlich,

Guter Tipp! Ist das deutlich langsamer?

Hi Horst,

es ist langsamer, weil halt Prüfsummen berechnet werden. Aber dafür ist es
sicherer ;-0

Ab und zu dann ein Abgleich der berechneten md5sum, um zu sehen, ob
der Bitrot schon eingesetzt hat.

Wie genau setzt du das um?

Mit einem Perlscript. Ich lese direkt die SD-Karte aus der Kamera, die im
Card-Reader steckt, um die Fotos an ihren Zielort zu bringen. Das Script
traversiert einfach eine beliebige, als Parameter übergebene Directory und
kopiert in eine beliebige andere Directory, ebenfalls als Parameter
übergeben.
Vorab: meine Fotos liegen unter $DSLR/YYYY/MM/DD/$CAM, wobei $DSLR die
Archiv-Root ist und $CAM die jeweilige Kamera. Also beispielsweise
$DSLR/2015/02/22/70D/für die Fotos aus einer Canon 70D. Mehrere Kameras
(auch die Fotos aus der Kamera meiner Frau) liegen somit in einem nach
Datum geordnetem Verzeichnis. Wir kommen die dahin?

a) berechne md5sum auf der SD-Karte, ermittle Kamera und Datum (mittels
exiftool), um Ziel-Directory zu bestimmen.

b) schaue, ob das File, z.B. img_0815.cr2, (genauer: seine MD5, siehe
nächsten Schritt) im Archiv schon existiert und wenn ja, ob die dort
gespeicherte MD5 übereinstimmt. Dann ignoriere es, sonst meckere über
Diskrepanzen.

c) falls das File neu ist, dann speichere erst die MD5 als img_0815.md5 im
Archiv, dann kopiere das Foto. Das befindet sich nach der Berechnung der
MD5 sowieso im Filecache, also im RAM, ich habe also durch das Lesen zur
Berechnung kaum Zeitverlust.

d) berechne die MD5 des neu abgespeicherten Fotos (remember: Paranoia) und
schaue, ob es mit der zuerst gespeicherten übereinstimmt. Ich will ja auch
latente Bad Blocks schon erkennen, bevor ich das Original von der SD-Karte
entferne. Und erkenne somit gleich auch "Festplatte voll" oder
"Schreibfehler" beim kopieren.

e) falls die Option zum Löschen der SD-Karte mitgegeben wurde, dann kann
ich das File jetzt ggf. auch schon löschen. Das mache ich aber meist in
einem späteren Lauf, nachdem das obige Archiv auf eine weitere Platte bzw.
andere Maschine kopiert wurde. Das macht dasselbe Script, ich könnte auch
ein Logfile mit den Filenamen erzeugen und dann xargs rm < $log sagen.

Zeitaufwand? ist mir vergleichsweise egal, ich hänge halt an meinen Daten.
Und Platten werden immer billiger und schneller. Aber so viel ist es nicht:
eine md5sum zu berechnen dauert auf einem Intel Core i7 mit 2,6 GHz pro
File (im Durchschnitt 25MB) 0.05s, also eine zehntel Sekunde bei
zweimaliger Berechnung. Also 300 Fotos brauchen 30 Sekunden.

Neben dem Foto liegt sowie noch das sogenannte Sidecar-File *.xmp für die
Bildbearbeitung und für das Geotagging. Da passt auch noch das *.md5
daneben. Sonst halt in eine Subdirectory .md5/ pro Kamera.

Um die MD5 zwischendurch mal zu kontrollieren kann das Script einfach im
Verify-Modus laufen, berechnet halt die MD5 der gespeicherten Files,
vergleicht die mit den daneben liegenden und meckert bei Diskrepanzen.

Gruss, JC

P.S. MD5 ist zwar inzwischen kryptografisch unsicher, aber zum
Datenvergleich immer noch sehr gut verwendbar und schnell. Berechnung und
Vergleich zweiter MD5-Signaturen ist immer schneller als ein klassisches
diff.

--
 A great many of today's security technologies are "secure" only because
 no-one has ever bothered attacking them. -- Peter Gutmann


Reply to: