Eu verifiquei essas duas perguntas ( pergunta um , pergunta dois ), mas elas não foram úteis para eu entender. Eu tenho um arquivo file.txt
com 40 linhas de Hello World!
string. ls -l
mostra que seu tamanho é de 520 bytes. Agora eu arquivo este arquivo com tar -cvf file.tar file.txt
e quando faço ls -l
novamente vejo que file.tar
são 10240 bytes. Por quê?
Li alguns manuais e entendi que arquivar e compactar são coisas diferentes. Mas alguém pode explicar como funciona?
tar
os arquivos têm um tamanho mínimo de 10240 bytes por padrão; veja o manual do GNUtar
para detalhes (mas isso não é específico do GNU).Com GNU
tar
, você pode reduzir isso especificando um tamanho de bloco diferente ou um fator de bloco diferente, ou ambos:O resultado ainda será maior que
file.txt
, porquefile.tar
armazena metadados sobrefile.txt
além defile.txt
si mesmo. Na maioria dos casos, você verá um bloco para os metadados do arquivo (nome, tamanho, carimbos de data/hora, propriedade, permissões), depois o conteúdo do arquivo, depois dois blocos para a entrada de fim de arquivo, de modo que o menor arquivo contendo um arquivo não arquivo de comprimento zero tem quatro blocos de tamanho (2.048 bytes com um bloco de 512 bytes).tar
precisa fazer três coisas além de simplesmente armazenar arquivos:tar
significa "arquivo de fita". Para fitas, é importante decidir onde é o final do arquivo, e o dispositivo precisa saber mesmo durante a busca (a fita se move mais rápido). So tar para a conveniência da fita adiciona alguns zeros no final de cada arquivo e outro conjunto de seroes no final do arquivo. A segunda pergunta que você apontou explica isso.Você pode ver o que está no arquivo usando
hexdump -C archive.tar |less
.