Aqui está o meu problema: preciso arquivar para tar arquivos (até 60 TB) de arquivos grandes (geralmente 30 a 40 GB cada). Eu gostaria de criar somas de verificação (md5, sha1, qualquer que seja) desses arquivos antes de arquivar; no entanto, não ler todos os arquivos duas vezes (uma para soma de verificação, duas vezes para tar'ing) é mais ou menos uma necessidade para obter um desempenho de arquivamento muito alto (o LTO-4 quer 120 MB / s sustentados e a janela de backup é limitada).
Então, eu precisaria de alguma maneira de ler um arquivo, alimentando uma ferramenta de soma de verificação de um lado e construindo um alcatrão para fita do outro lado, algo junto:
tar cf - files | tee tarfile.tar | md5sum -
Exceto que eu não quero a soma de verificação de todo o arquivo morto (este exemplo de código de shell faz exatamente isso), mas uma soma de verificação para cada arquivo individual no arquivo morto.
Estudei as opções GNU tar, Pax, Star. Eu olhei para a fonte de Archive :: Tar . Não vejo uma maneira óbvia de conseguir isso. Parece que terei que criar manualmente algo em C ou semelhante para conseguir o que preciso. O Perl / Python / etc simplesmente não diminui o desempenho, e os vários programas tar perdem a "arquitetura de plug-in" necessária. Alguém sabe de alguma solução existente para isso antes de começar a agitar o código?
7z
você pode escolher o hash e imprimi-lo de uma forma que sha1sum
e sha256sum
pode entender: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/... (e sami-lehtinen.net/blog/... ) Experimente: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(testado com a versão 15.09 beta do p7zip)
tar
se você decidir escrevê-lo;) #