(gelöst) md5sum

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

(gelöst) md5sum

Beitrag von fischig » 09.06.2020 09:43:15

Ist es möglich, beim Kopieren einer Datei (mit einer Größe im unteren GB-Bereich), gleichzeitig deren Prüfsumme schreiben zu lassen?
Nach meinen Erfahrungen am besten ins Quellverzeichnis, denn da geht das Schreiben der Prüfsumme auch auf alten Rechnern relativ fix, lässt man die Prüfsumme dagegen via nfs ins Zielverzeichnis der kopierten Datei auf einem entfernten Rechner schreiben, dauert das in etwa so lange wie das Kopieren selbst.
Zuletzt geändert von fischig am 11.06.2020 18:20:37, insgesamt 1-mal geändert.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: md5sum

Beitrag von cronoik » 09.06.2020 09:52:50

Ich verstehe die Frage nicht ganz. Geht es dir um eine parallele Ausfuehrung? Schick doch die Befehle mit & in den Hintergrund.
Hilf mit unser Wiki zu verbessern!

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 09:56:05

Ja, parallele Ausführung. Ich hatte vergessen zusätzlich zu fragen, wie sehr das parallele Erstellen der Prüfsumme den Kopiervorgang verzögert, selbst wenn man dabei im Quellverzeichnis verbleibt.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: md5sum

Beitrag von Meillo » 09.06.2020 10:02:28

Wenn es der Kopierbefehl selbst machen wuerde, dann ginge das fast zum Nulltarif.

Wenn du aber md5sum(1) und mv(1) separat ausfuehrst, dann machst du das wohl besser seriell, weil serielles Lesen vermutlich schneller ist als Hin- und Herspringen.


Aber verrate uns doch den Hintergrund deiner Frage. Was willst du damit bezwecken? Vielleicht geht das auf anderem Wege ja einfacher und besser.
Use ed once in a while!

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 10:19:19

Ich kopiere Videos im GB-Bereich im lan. das dauert hier minutenlang. Wenn das Ziel eine DVD-RAM (am Zielrechner) ist, dauert's nochmal länger. Um die Korrektheit der Kopie zu überprüfen, erstelle ich deren Prüfsumme und tranferiere die ebenfalls ans Ziel, um sie dort auch später zur Verfügung zu haben.

Zunächst habe ich nach dem Dateienkopieren auch das Erstellen der Prüfsumme so durchgeführt, dass ich im Quellverzeichnis das md5-Kommando ausgeführt, aber die Summe ins (entfernte) Zielverzeichnis geschrieben habe. Da war schnell klar, dass das Verfahren in etwa die doppelte Kopierzeit beansprucht.
Danach habe ich's so gemacht, dass ich erst kopiert, dann im Quellverzeichnis die Prüfsummendatei erstellt habe und die dann im lan verschoben habe. Das war deutlich schneller.

Und jetzt frage ich mich, ob's eventuell noch schneller geht, wenn ich das parallel mache (Dateikopie+Erstellen der Prüfsummendatei), bzw. ich bin unsicher, inwieweit ein paralleles Erstellen der Prüfsumme das eh schon lahme Kopieren noch weiter verlangsamt.

Hoffe, mich deutlich genug ausgedrückt zu haben.

TomL

Re: md5sum

Beitrag von TomL » 09.06.2020 10:30:01

Ich weiss auch noch nicht so recht, ob ich das Problem richtig verstanden habe. Wenn ich das Resultat einer kopierten Datei prüfen wollte, würde ich lokal auf dem Quell-Rechner vor dem Kopieren mit lokaler Power die Prüfsumme errechnen lassen. Und anschließend nach dem Kopieren würde ich ebenfalls mit lokaler Power auf dem Ziel-Rechner das gleiche zum Abgleich der 2 Prüfsummen wiederholen. Für die Ermittlung beider Prüfsummen selbst wird die kopierte Datei dann nicht (noch mal) durchs Netz transportiert.

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 10:35:05

Thomas, ich denke, du beschreibst in anderen Worten meine mittlere Variante, mit dem Unterschied, dass du die Abfolge von Prüfsummenerstellung und Dateikopie vertauschst, was beliebig sein dürfte. :wink:

Im Übrigen dürfte sich meine Frage erledigt haben, Ich habe die letzte Variante in dieser Form gerade durchgezogen: Während der Kopiervorgang lief, habe ich die Prüfsumme erstellt. Letzteres war deutlich vor dem Kopieren fertig. In zukunft werde ich's von Anfang an mit chronoiks „Hintergund"vorschlag machen. Was ich noch nicht weiß, ist ob der Kopiervorgang nicht signifikant verzögert wird. Zu verdoppeln (erste Variante) scheint die Zeit sich immerhin nicht.

Aber vielleicht hat Meillo ja eine noch bessere Idee? :wink:
Zuletzt geändert von fischig am 09.06.2020 10:42:02, insgesamt 1-mal geändert.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: md5sum

Beitrag von cronoik » 09.06.2020 10:36:12

Nimm doch rsync:
man rsync hat geschrieben: Note that rsync always verifies that each transferred file was correctly reconstructed on the receiving side by
checking a whole-file checksum that is generated as the file is transferred, ...
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: md5sum

Beitrag von Lord_Carlos » 09.06.2020 10:37:43

TomL hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 10:30:01
Ich weiss auch noch nicht so recht, ob ich das Problem richtig verstanden habe. Wenn ich das Resultat einer kopierten Datei prüfen wollte, würde ich lokal auf dem Quell-Rechner vor dem Kopieren mit lokaler Power die Prüfsumme errechnen lassen. Und anschließend nach dem Kopieren würde ich ebenfalls mit lokaler Power auf dem Ziel-Rechner das gleiche zum Abgleich der 2 Prüfsummen wiederholen.
Dann musst du Lokal die Datei zwei mal lesen. Und so wie ich OP verstanden habe will ein befehl haben der die Datei nur einmal von der Platte liest, und beim verschieben eine md5sum erstellt.

Ich koennte mir vorstellen das wenn man rsync/cp/sftp direc=kt nach einem md5sum macht, das ein grossteil der Daten noch im ram sind.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 10:43:58

Meine letzte Beitrags-Edition hat sich überschnitten mit chronoiks und Lord_Carlos' Beitrag.

TomL

Re: md5sum

Beitrag von TomL » 09.06.2020 10:48:40

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 10:37:43
Dann musst du Lokal die Datei zwei mal lesen.
Ja, richtig, auf jedem Gerät (Quell- und ZIelrechner) lokal. Und ist das nicht obligatorisch? Was bringt denn sonst eine Prüfsumme, wenn ich den Zustand vorher und hinterher nicht vergleiche? Eine Prüfsumme während des Kopierens auf das Geschriebene zu ermitteln, halte ich für völlig unnütz, weil Schreibfehler damit nicht ermittelt werden können. Ein Prüfsumme während des Kopierens auf das Gelesene zu ermitteln, hat hingegen keinerlei Relevanz für das Geschriebene. :?

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: md5sum

Beitrag von Lord_Carlos » 09.06.2020 10:51:21

TomL hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 10:48:40
Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 10:37:43
Dann musst du Lokal die Datei zwei mal lesen.
Ja, richtig, auf jedem Gerät (Quell- und ZIelrechner) lokal. Und ist das nicht obligatorisch? Was bringt denn sonst eine Prüfsumme, wenn ich den Zustand vorher und hinterher nicht vergleiche? Eine Prüfsumme während des Kopierens auf das Geschriebene zu ermitteln, halte ich für völlig unnütz, weil Schreibfehler damit nicht ermittelt werden können. Ein Prüfsumme während des Kopierens auf das Gelesene zu ermitteln, hat hingegen keinerlei Relevanz für das Geschriebene. :?
Maaan junge. Lokal zwei mal. Und remote einmal. Also insgesamt 3 mal.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: md5sum

Beitrag von Meillo » 09.06.2020 10:51:38

fischic hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 10:35:05
Aber vielleicht hat Meillo ja eine noch bessere Idee? :wink:
Ich eher nicht. Die anderen User die hier bereits gepostet haben sind darin eher die Experten.

rsync(1) ist mir auch in den Kopf gekommen, aber ich bin zu wenig Admin um genug Erfahrung damit zu haben. Die Praxiserfahrungen von Admins sind was dir hier bestimmt am meisten weiterhilft.

Ich wollte nur die Perspektive weiten um damit die Diskussion in Gang zu bringen. ... und sitze nun ruhig und aufmerksam da und lerne bestimmt auch etwas. ;-)
Use ed once in a while!

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 11:05:06

Mit rsync kenne ich mich nicht so gut aus, das benutze ich alle Schaltjahre mal, wenn ich ein komplettes System kopiere. Für andere, als besser als die von mir praktizierten Vorschläge bin ich jederzeit offen, aber am Ende will ich eine transferierbare Prüfsummendatei haben, mit der ich die zugehörige Datei jederzeit überprüfen kann.

Wie gesagt, das Erstellen der Prüfsummendatei im Hintergrund ist praktikabel, ob's komplett (Prüfsumme+Dateikopie) anders noch schneller geht, scheint mir nach dem Bisherigen zweifelhaft.
Zuletzt geändert von fischig am 09.06.2020 11:13:44, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: md5sum

Beitrag von MSfree » 09.06.2020 11:13:27

fischic hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 09:56:05
Ja, parallele Ausführung. Ich hatte vergessen zusätzlich zu fragen, wie sehr das parallele Erstellen der Prüfsumme den Kopiervorgang verzögert, selbst wenn man dabei im Quellverzeichnis verbleibt.
Ich würde die md5sum erstmal local rechnen. Dazu muß die Quelldatei natürlich einmal komplett durchgelesen werden.

Der folgende Kopierbefehl braucht die Quelldatei dann nicht mehr zu lesen, weil die md5sum-Berechnung dafür gesorgt hat, daß die Datei bereits im Cache des Quellrechners liegt. Die Datenübertragung auf den Zeilrechner über das Netz beschleunigt das natürlich nicht, aber man hat nur einmal den eigentlichen (langsamen) Lesevorgang.

Das klappt natürlich nur solange, wie die Daten auch ins RAM, respektive Cache, passen.

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 11:17:28

Das klappt natürlich nur solange, wie die Daten auch ins RAM, respektive Cache, passen.
Da dürfte der Hund begraben liegen, so anspruchsvolle Hardware (RAM-Ausstattung) habe ich nicht. :P

Aber ok, ich behalt's im Hinterkopf, wenn ich mal in die Situation kommen sollte, dass das klappen könnte.

@TomL
Kleiner Tipp: man muss keine Prüfsummen vergleichen, man kann, wenn man's geschickt genug anstellt (Erstellen der Prüfsummendatei IM Quellverzeichnis, so dass sie keine Pfade enthält!) mit dieser jederzeit eine zugehörige Datei überprüfen (mit md5sum -c [was-weiß-ich].md5), egal wo die zu prüfende Datei gerade gespeichert ist und vorausgesetzt, die Prüfsummendatei befindet sich im selben Verzeichnis mit ihr .
Zuletzt geändert von fischig am 09.06.2020 11:41:10, insgesamt 2-mal geändert.

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: md5sum

Beitrag von wanne » 09.06.2020 11:26:48

fischic hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 09:43:15
Ist es möglich, beim Kopieren einer Datei (mit einer Größe im unteren GB-Bereich), gleichzeitig deren Prüfsumme schreiben zu lassen?
Klar. leider nicht so ganz primitiv.

Code: Alles auswählen

mkfifo /tmp/sum
md5sum /tmp/sum &
cat ~/pfad/alte.datei | tee /tmp/sum > ~/pfad/neue.datei
rm /tmp/sum
Ersetzt

Code: Alles auswählen

cp ~/pfad/alte.datei ~/pfad/neue.datei
Eventuell willst du dir da ein eigenes Script für anlegen.
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: md5sum

Beitrag von wanne » 09.06.2020 11:40:45

rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: md5sum

Beitrag von wanne » 09.06.2020 11:42:06

Ah und in viel kürzer:

Code: Alles auswählen

cat ~/pfad/alte.datei | tee ~/pfad/neue.datei | md5sum
statt

Code: Alles auswählen

cp ~/pfad/alte.datei ~/pfad/neue.datei
rot: Moderator wanne spricht, default: User wanne spricht.

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 09.06.2020 11:45:08

Ziemlich viel Bohai für die Kleinigkeit :P , aber entzückend! Ich werd's beim nächsten mal ausprobieren. :THX:

wanne
Moderator
Beiträge: 7438
Registriert: 24.05.2010 12:39:42

Re: md5sum

Beitrag von wanne » 09.06.2020 13:11:48

fischic hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 11:45:08
Ziemlich viel Bohai für die Kleinigkeit :P , aber entzückend!
Die letzte Variante finde ich fast handlich.
Ansonsten: Wie gesagt: Schreibe/Lade halt das Script, lege es nach local/bin und dann kannst du es wie cp verwenden.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: md5sum

Beitrag von Meillo » 09.06.2020 15:13:56

wanne hat geschrieben: ↑ zum Beitrag ↑
09.06.2020 11:42:06
Allerdings bleibt die Frage, ob es so in der Praxis auch am effektivsten ist. Manchmal lohnt es sich, die Dinge im Detail weniger optimiert zu machen, wenn man dadurch generellere Vorteile oder Vorteile in anderen Bereichen gewinnt. Vielleicht ist das Lesen auf dem Quellsystem gar nicht das Bottleneck, sondern die Uebertragung im Netz.
Genau darum geht es mir doch. Die erste Lösung mit der FIFOs läuft bei mir relativ regelmäßig mit sha384sum. Und das ist halt wirklich der doppelte Speed als anders. Damit kann ich bei uns die Crypto weg optimieren (Daten sind nicht vertraulich.) dann ist das ein noch viel Enormer Vorteil.
Use ed once in a while!

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 10.06.2020 13:49:19

Code: Alles auswählen

cat /pfad/alte.datei | tee /neuer Pfad/alte.datei | md5sum
Soweit, so gut. Der Kopiervorgang erscheint mir deutlich schneller als mit cp. Aber die nackte md5-Summe erscheint nur als Terminal-Ausgabe, in dem das Kommando gestartet wurde. Es ist mir nicht gelungen, das Kommando dahingehend zu ändern, dass eine md5-Summendatei im Zielverzeichnis angelegt wird, in Format, wie es etwa

Code: Alles auswählen

md5sum alte.datei > /neuer Pfad/alte.datei.md5
, ausgeführt im Quellverzeichnis machte. (wenn ich Dateien in andere Verzeichnisse kopiere, ändere ich im Allgemeinen den Dateinamen nicht.)

Code: Alles auswählen

cat ~/pfad/alte.datei | tee ~/neuer pfad/alte.datei | md5sum > /neuer pfad/alte.datei.md5
funktioniert, aber alte.datei.md5 muss dann nachgearbeitet werden.

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: md5sum

Beitrag von MSfree » 10.06.2020 14:05:05

fischic hat geschrieben: ↑ zum Beitrag ↑
10.06.2020 13:49:19

Code: Alles auswählen

cat ~/pfad/alte.datei | tee ~/neuer pfad/alte.datei | md5sum > /neuer pfad/alte.datei.md5
funktioniert, aber alte.datei.md5 muss dann nachgearbeitet werden.
Dann steck es doch in ein kleines Skript namens md5cp mit folgendem Inhalt:

Code: Alles auswählen

#!/bin/bash
sum=$(cat $1 | tee $2 | md5sum)
echo $sum" "$2 > $2.md5
Aufgefufen mit

Code: Alles auswählen

md5cp AlteDatei NeueDatei
entstehen die Dateien NeueDatei und NeueDatei.md5 mit korrektem Inhalt.

fischig
Beiträge: 3584
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: md5sum

Beitrag von fischig » 10.06.2020 22:55:30

Sehe ich recht, dass bei wannes und MSFrees Konstrukt die Prüfsumme der Kopie/des Kopiervorgangs ausgegeben/in die Prüfsummendatei geschrieben wird? Das wäre nicht gerade das, was ich haben will.

Antworten