Причиной этой проблемы является команда tar
. Он имеет внутренние записи, состоящие из фиксированного количества блоков по 512 байт. Количество блоков на запись можно установить с помощью параметра -b
.
Некоторые реализации могут автоматически регулировать количество блоков в соответствии с дескриптором файла, если это лентопротяжное устройство, обычный файл или канал.
Исправление количества блоков с помощью параметра -b
устранило проблему. Вроде как:tar -b1 -cf - $folder | sha1sum
. Но чтобы соответствовать блокам по умолчанию, предопределенным в первых двух командах вопроса, мне пришлось использовать-b20
(10240-байтовые записи по умолчанию для архивов, хранящихся в обычных файлах):
$ tar -b20 -cf - $folder > $tarfile && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
$ tar -b20 -cf - $folder |sha1sum
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d