Ich erstelle ein großes tar
Archiv und möchte auch die Prüfsumme des Archivs erstellen. Das könnte ich so erreichen:
$ tar cfz archive.tar.gz files
$ sha256sum archive.tar.gz > archive.tar.gz.sha256sum
Da die Archivdatei jedoch riesig ist und sich auf einem langsamen Medium befindet, möchte ich sie nach dem Ausschreiben nicht noch einmal vollständig einlesen müssen.
Kann ich eine Pipeline erstellen, die die Datei beim Schreiben hasht? Ich dachte, ich könnte das vielleicht mit dem tee
Dienstprogramm tun, aber das schreibt nur in eine Datei, nicht in die Standardeingabe eines anderen Befehls.
Antwort1
Beantwortung meiner eigenen Frage:
Ja, Sie können die Prozesssubstitution „tee“ und „bash“ verwenden:
tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz