Могу ли я рассчитать контрольную сумму файла при его создании?

Могу ли я рассчитать контрольную сумму файла при его создании?

Я создаю большой tarархив и хотел бы создать контрольную сумму архива. Я мог бы сделать это так:

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

Но архивный файл большой и находится на медленном носителе, поэтому я бы предпочел не перечитывать его снова после записи.

Могу ли я построить конвейер, который будет хэшировать файл по мере его записи? Я думал, что, возможно, я смогу сделать это с помощью утилиты tee, но она записывает только в файл, а не в стандартный ввод другой команды.

решение1

Отвечая на свой собственный вопрос:

Да, вы можете использовать замену процессов tee и bash:

tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz

Связанный контент