O tamanho compactado (por tar gzip) é muito maior que a pasta original

5

Eu fiz o backup da pasta /var/www com o comando tar (incluindo -z (gzip)):

tar -cvzf file.gz /var/www/*

Eu verifiquei o tamanho de www . É em torno de 100kb, mas o tamanho do arquivo produzido por tar é em torno de 185Mb. O que poderia causar isso?

    
por janasaiarun 07.10.2016 / 11:59

3 respostas

17

ls -sh não considera os subdiretórios.

Eu usaria du -csh -- * para calcular isso (o -- previne problemas com arquivos que começam com um "traço"). Onde ...

   -s, --summarize
      display only a total for each argument
  -h, --human-readable
      print sizes in human readable format (e.g., 1K 234M 2G)
   -c, --total
      produce a grand total

homem du

Se você tiver hardlinks, isso atrapalhará os totais.

    
por Rinzwind 07.10.2016 / 12:16
4

Você provavelmente está enganado sobre o tamanho do conteúdo do seu diretório original. No caso de diretórios, ls -l lista o tamanho do próprio diretório, não dos arquivos contidos naquele diretório. Então, por exemplo

drwxr-xr-x 8 www-data www-data 4096 Sep  2 03:12 some-dir

mostra que o próprio diretório leva 4096 bytes. Mas esse é apenas o tamanho da entrada some-dir s na estrutura do seu sistema de arquivos. Para resumir os tamanhos do conteúdo do diretório, você pode usar du ("uso do disco"), por exemplo

du -s some-dir

Assim como com ls e vários outros comandos, você pode usar a opção h para unidades "legíveis por humanos":

du -s some-dir
1804    some-dir

du -sh some-dir
1,8M    some-dir
    
por Henning Kockerbeck 07.10.2016 / 12:22
1

Não é o caso desta vez (veja a resposta aceita ), mas às vezes a sobrecarga extra de arquivamento e compactação pode resultar em um arquivo maior que o conteúdo original.

Isso é verdadeiro quando há entropia extremamente alta, como um diretório preenchido com arquivos de texto e / ou mídia aleatórios.

Exemplo 1: Dados aleatórios

$ dd if=/dev/urandom of=test bs=1M count=100
$ tar -zcf test.tgz test
$ tar -cf test.tar test
$ gzip -ck --best test.tar > test-best.tar.gz
$ gzip -ck --fast test.tar > test-fast.tar.gz
$ xz -ck --fast test.tar >test.tar.xz
$ xz --fast -ck test >test.xz
$ gzip --best -ck test >test.gz
$ bzip2 --best -ck test >test.bz2
$ ls -lS test*
-rw-r--r-- 1 adkatz adkatz 105326395 Oct  7 16:52 test.bz2
-rw-r--r-- 1 adkatz adkatz 104875661 Oct  7 16:49 test-fast.tar.gz
-rw-r--r-- 1 adkatz adkatz 104875661 Oct  7 16:48 test.tar.gz
-rw-r--r-- 1 adkatz adkatz 104874474 Oct  7 16:49 test-best.tar.gz
-rw-r--r-- 1 adkatz adkatz 104874206 Oct  7 16:51 test.gz
-rw-r--r-- 1 adkatz adkatz 104867840 Oct  7 16:48 test.tar
-rw-r--r-- 1 adkatz adkatz 104864052 Oct  7 16:50 test.tar.xz
-rw-r--r-- 1 adkatz adkatz 104862868 Oct  7 16:50 test.xz
-rw-r--r-- 1 adkatz adkatz 104857600 Oct  7 16:47 test

Isso criou um arquivo aleatório de 100M e, em seguida, arquivou e compactou-o de várias maneiras diferentes. Os resultados são classificados por tamanho (maior primeiro). Como você pode ver, a sobrecarga dos contêineres de compactação e cabeçalhos de compactação é grande e há uma falta de padrões distintos para compactar.

O arquivo aleatório original é, sem surpresa, o menor aqui.

(usei -ck e canalizei a saída dos comandos de compactação para que você possa ver com mais clareza qual arquivo de saída foi criado. Isso foi supérfluo).

Exemplo 2: dados de vídeo + áudio

$ youtube-dl -o test.mp4 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
[youtube] dQw4w9WgXcQ: Downloading webpage
[youtube] dQw4w9WgXcQ: Downloading video info webpage
[youtube] dQw4w9WgXcQ: Extracting video information
[youtube] dQw4w9WgXcQ: Downloading js player en_US-vflOj6Vz8
[download] Destination: test.mp4
[download] 100% of 56.64MiB in 00:07
$ gzip --best -ck test.mp4 >test.mp4.gz
$ xz --fast -ck test.mp4 >test.mp4.xz
$ ls -lS test.mp4*
-rw-r--r-- 1 adkatz adkatz  59388616 Oct  7 16:52 test.mp4
-rw-r--r-- 1 adkatz adkatz  59332683 Oct  7 16:52 test.mp4.gz
-rw-r--r-- 1 adkatz adkatz  59320572 Oct  7 16:52 test.mp4.xz

Eu repeti os testes gzip e xz para este vídeo de teste. Havia metadados suficientes para apenas reduzi-lo com a compactação ( xz pode economizar 68k, um gritante 0,1%!). Eu suspeito que isso tem a ver com as dicas .mp4 folhas para garantir streaming adequado e sincronização de áudio-visual. Este vídeo em particular não tem legendas.

Em resumo, não comprima dados aleatórios ou compactados.

    
por Adam Katz 08.10.2016 / 02:30

Tags