(gelöst) md5sum
(gelöst) md5sum
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.
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.
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: md5sum
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!
Re: md5sum
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.
Re: md5sum
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.
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!
Re: md5sum
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.
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.
Re: md5sum
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.
Re: md5sum
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.
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?
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?
Zuletzt geändert von fischig am 09.06.2020 10:42:02, insgesamt 1-mal geändert.
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: md5sum
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!
- 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
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.TomL hat geschrieben:09.06.2020 10:30:01Ich 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.
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!
Re: md5sum
Meine letzte Beitrags-Edition hat sich überschnitten mit chronoiks und Lord_Carlos' Beitrag.
Re: md5sum
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.
- 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
Maaan junge. Lokal zwei mal. Und remote einmal. Also insgesamt 3 mal.TomL hat geschrieben:09.06.2020 10:48:40Ja, 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.
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
Re: md5sum
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!
Re: md5sum
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.
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.
Re: md5sum
Ich würde die md5sum erstmal local rechnen. Dazu muß die Quelldatei natürlich einmal komplett durchgelesen werden.fischic hat geschrieben:09.06.2020 09:56:05Ja, 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.
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.
Re: md5sum
Da dürfte der Hund begraben liegen, so anspruchsvolle Hardware (RAM-Ausstattung) habe ich nicht.Das klappt natürlich nur solange, wie die Daten auch ins RAM, respektive Cache, passen.
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.
Re: md5sum
Klar. leider nicht so ganz primitiv.fischic hat geschrieben:09.06.2020 09:43:15Ist es möglich, beim Kopieren einer Datei (mit einer Größe im unteren GB-Bereich), gleichzeitig deren Prüfsumme schreiben zu lassen?
Code: Alles auswählen
mkfifo /tmp/sum
md5sum /tmp/sum &
cat ~/pfad/alte.datei | tee /tmp/sum > ~/pfad/neue.datei
rm /tmp/sum
Code: Alles auswählen
cp ~/pfad/alte.datei ~/pfad/neue.datei
rot: Moderator wanne spricht, default: User wanne spricht.
Re: md5sum
Hier hat das jemand gemacht:
https://github.com/bkidwell/progress-md ... s-md5-copy
https://github.com/bkidwell/progress-md ... s-md5-copy
rot: Moderator wanne spricht, default: User wanne spricht.
Re: md5sum
Ah und in viel kürzer:
statt
Code: Alles auswählen
cat ~/pfad/alte.datei | tee ~/pfad/neue.datei | md5sum
Code: Alles auswählen
cp ~/pfad/alte.datei ~/pfad/neue.datei
rot: Moderator wanne spricht, default: User wanne spricht.
Re: md5sum
Ziemlich viel Bohai für die Kleinigkeit , aber entzückend! Ich werd's beim nächsten mal ausprobieren.
Re: md5sum
Die letzte Variante finde ich fast handlich.fischic hat geschrieben:09.06.2020 11:45:08Ziemlich viel Bohai für die Kleinigkeit , aber entzückend!
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.
Re: md5sum
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.wanne hat geschrieben:09.06.2020 11:42:06Allerdings 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.
Use ed once in a while!
Re: md5sum
Code: Alles auswählen
cat /pfad/alte.datei | tee /neuer Pfad/alte.datei | md5sum
Code: Alles auswählen
md5sum alte.datei > /neuer Pfad/alte.datei.md5
Code: Alles auswählen
cat ~/pfad/alte.datei | tee ~/neuer pfad/alte.datei | md5sum > /neuer pfad/alte.datei.md5
Re: md5sum
Dann steck es doch in ein kleines Skript namens md5cp mit folgendem Inhalt:fischic hat geschrieben:10.06.2020 13:49:19funktioniert, aber alte.datei.md5 muss dann nachgearbeitet werden.Code: Alles auswählen
cat ~/pfad/alte.datei | tee ~/neuer pfad/alte.datei | md5sum > /neuer pfad/alte.datei.md5
Code: Alles auswählen
#!/bin/bash
sum=$(cat $1 | tee $2 | md5sum)
echo $sum" "$2 > $2.md5
Code: Alles auswählen
md5cp AlteDatei NeueDatei
Re: md5sum
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.