Я создаю большой 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