Разный хеш-код при подключении трубопровода «sha1sum» к выходу «tar»

В системе AIX (v 7.1) sha1sum вычисляет разные хеш-коды, когда он напрямую связан с выходом tar по сравнению с тем, когда он читает файл.

В чем причины этого? Есть ли способы обхода этого и получить хеш-код непосредственно из выходного файла tar ?

(В других системах, таких как Debian и Ubuntu, хорошо работает протокол sha1sum to tar output)

 folder=myfolder tarfile=myfolder.tar tar -cf $tarfile $folder && sha1sum $tarfile fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar tar -cf $tarfile $folder && sha1sum $tarfile fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar tar -cf - $folder > $tarfile && sha1sum $tarfile fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar tar -cf - $folder > $tarfile && sha1sum $tarfile fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar tar -cf - $folder | sha1sum f1dd1a0c4e82dd5c441664869b656c7bce799270 - tar -cf - $folder | sha1sum f1dd1a0c4e82dd5c441664869b656c7bce799270 - 

Причиной этой проблемы является команда tar . Он имеет внутренние записи, сделанные из фиксированного количества блоков размером 512 байт. Количество блоков на запись может быть установлено с помощью параметра -b .

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

Исправлена ​​проблема с количеством блоков с параметром -b . Например: tar -b1 -cf - $folder | sha1sum tar -b1 -cf - $folder | sha1sum . Но чтобы сопоставить блоки по умолчанию, предопределенные в первых двух командах вопроса, которые мне пришлось использовать -b20 (записи из 10240 байт по умолчанию для архивов, хранящихся в обычных файлах):

 $ tar -b20 -cf - $folder > $tarfile && sha1sum $tarfile fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar $ tar -b20 -cf - $folder |sha1sum fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d