tar dobrou o tamanho do diretório

0

No Solaris 10, tenho um diretório chamado apps. Eu entro nesse diretório e entro:

-bash-3.00# du -hs
7.2G   .

Então eu entrei:

tar -cvf /var/run/apps.tar apps

O resultado:

-bash-3.00# ls -lad apps.tar 
-rw-r--r--   1 root     root     14174289408 Mar  5 16:05 apps.tar

Como um diretório de 7GB pode se tornar um tar de 14GB?

    
por Thomas 05.03.2012 / 16:25

2 respostas

1
O

tar por si só não é particularmente eficiente no armazenamento de arquivos pequenos. Ele usa blocos de 512 bytes de tamanho fixo. Os metadados também são armazenados de maneira menos compacta do que no sistema de arquivos. A discrepância que você observa pode ser devida por um número significativo de arquivos pequenos no diretório de aplicativos.

Para atenuar esse efeito, sugiro compactar a saída tar dessa maneira:

  tar cvf - apps | gzip -v > /var/run/apps.tgz

Se acontecer de você usar o GNU tar, isso seria:

  gtar czvf /var/run/apps.tgz apps
    
por 05.03.2012 / 22:02
1

O Tar não executa nenhuma compactação nos arquivos e sempre produzirá um arquivo tar resultante maior que a soma de todos os arquivos que foram enviados para ele.

O motivo exato pelo qual o tar é tão muito maior pode ser qualquer um de vários fatores, como um grande número de arquivos pequenos que não são armazenados eficientemente, links rígidos sendo seguidos levando à duplicação em a árvore de diretório ou o achatamento de arquivos esparsos que levam a arquivos não-analisados substancialmente maiores dentro do repositório de tar.

Se você quiser criar um pequeno arquivo para backup ou transferência para outro sistema, sugiro que você comprima o arquivo tar com o arquivo Gzip (para um arquivo tar.gz) ou outro algoritmo de compressão para produzir um arquivo muito menor. Arquivos Tar tendem a comprimir bem, então isso deve produzir um arquivo substancialmente abaixo dos 14GB que você citou.

    
por 05.03.2012 / 22:20