O motivo para esse problema é o comando tar
. Possui registros internos feitos de um número fixo de blocos de 512 bytes. O número de blocos por registro pode ser definido com o parâmetro -b
.
Algumas implementações podem ajustar a quantidade de blocos automaticamente de acordo com o descritor de arquivo, se for um dispositivo de fita, um arquivo regular ou um pipe.
Corrigir a quantidade de blocos com o parâmetro -b
corrigiu o problema. Como: tar -b1 -cf - $folder | sha1sum
. Mas, para corresponder aos blocos padrão predefinidos nos dois primeiros comandos da pergunta, eu tive que usar -b20
(registros de 10240 bytes é o padrão para arquivos armazenados em arquivos regulares):
$ tar -b20 -cf - $folder > $tarfile && sha1sum $tarfile
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d myfolder.tar
$ tar -b20 -cf - $folder |sha1sum
fe2dcba2b25d4bbb35460309c8bb87a1d2514d7d