Repetir os arquivos pode resultar em arquivos diferentes porque a ordem em que tar
anexa os arquivos ao arquivo não é necessariamente estável. Para garantir que os arquivos sejam recalculados na mesma ordem em que estavam originalmente, liste os arquivos no archive e salve-os em um arquivo:
tar -tf your-archive.tar > file-list.txt
Em seguida, re-tar-los na mesma ordem exata, lendo os arquivos a serem adicionados a partir da lista que você criou anteriormente (uma vez que essa lista também pode conter diretórios e não queremos descer para eles nesse ponto, precisamos --no-recursion
):
tar -cf your-new-archive.tar --no-recursion -T file-list.txt
Supondo que nenhum dos arquivos (ou seus atributos) foram alterados, your-new-archive.tar
será exatamente idêntico a your-archive.tar
.
No entanto, você terá um problema ao criar arquivos compactados: por padrão, gzip
adiciona um registro de data e hora a cada arquivo compactado que cria. Para evitar isso, você precisará canalizar a saída de tar
para gzip
(em vez de usar a opção tar
-z
) e desabilite os timestamps com -n
:
tar -c --no-recursion -T file-list.txt | gzip -n > your-new-archive.tar.gz