Kann ich die Prüfsumme einer Datei berechnen, wenn ich sie erstelle?

1661
jl6

Ich erstelle ein großes tarArchiv und möchte auch die Prüfsumme des Archivs erstellen. Ich könnte es so erreichen:

$ tar cfz archive.tar.gz files $ sha256sum archive.tar.gz > archive.tar.gz.sha256sum 

Aber die Archivdatei ist riesig und auf langsamen Medien, so dass ich es vorziehen würde, sie nach dem Schreiben nicht noch einmal einzulesen.

Kann ich eine Pipeline erstellen, die die Datei während des Schreibvorgangs hashpt? Ich dachte, ich könnte dies vielleicht mit dem teeDienstprogramm tun, aber das schreibt nur in eine Datei, nicht in die Standardeingabe eines anderen Befehls.

3

1 Antwort auf die Frage

4
jl6

Beantwortung meiner eigenen Frage:

Ja, Sie können Tee- und Bash-Prozessersetzung verwenden:

tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz 
Kleinere Verbesserungen: Sie benötigen wahrscheinlich nicht den Teil "` | cat ". Sie können ihn einfach direkt schreiben. Sie möchten wahrscheinlich auch den Unterbefehl (das "` (sha256sum) `) irgendwo schreiben, dh` (sha256sum> archive.tar.gz.sha256sum) ` MAP vor 7 Jahren 0
Verwenden Sie einfach `| tee archive.tar.gz | sha256sum` dann. grawity vor 7 Jahren 2