Como você define o tamanho do bloco bzip2 ao usar tar?

8

Estou usando tar para fazer backup de um servidor linux em fita. Eu estou usando a opção -j para compactar o arquivo com bzip2 , no entanto não consigo ver uma maneira de ajustar as opções de tamanho de bloco para bzip2 do tar. O tamanho padrão do bloco é de 900.000 bytes, o que dá a melhor compactação, mas é o mais lento. Eu não estou tão preocupado com a taxa de compressão, então estou tentando fazer o bzip2 rodar mais rápido com um tamanho de bloco menor.

    
por Guy C 01.05.2009 / 18:46

5 respostas

8
export BZIP=--fast
tar cjf foo.tar.bz2 foo

Ou canalize a saída de tar para bzip2 .

Embora você deva observar a partir da página de manual do bzip2:

    -1 (or --fast) to -9 (or --best)
              Set  the  block size to 100 k, 200 k ..  900 k when compressing.
              Has no effect when decompressing.  See MEMORY MANAGEMENT  below.
              The --fast and --best aliases are primarily for GNU gzip compat-
              ibility.  In particular, --fast  doesn't  make  things  signifi-
              cantly faster.  And --best merely selects the default behaviour.
    
por 01.05.2009 / 18:57
4
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/
    
por 05.09.2016 / 18:18
2

bzip2 tamanhos de bloco

bzip2 tem algumas opções de tamanho de bloco. Na página de manual bzip2(1) :

-1 (or --fast) to -9 (or --best)
       Set the block size to 100 k, 200 k ..  900 k when compressing.
       Has no effect when decompressing. See MEMORY MANAGEMENT below.
       The --fast and --best aliases are primarily for GNU gzip
       compatibility. In particular, --fast doesn't make things
       significantly faster. And --best merely selects the default
       behaviour.

Como você quer uma compactação mais rápida com menos respeito à taxa de compactação, usando bzip2 , parece que deseja a opção -1 (ou --fast ).

Definindo o tamanho do bloco bzip2 ao usar tar

Você pode definir o tamanho do bloco bzip2 ao usar tar de duas maneiras.

O caminho UNX

A minha maneira favorita, a maneira UNlX, é aquela em que você usa todas as ferramentas de forma independente e as combina através de tubos.

$ tar --create [FILE...] | bzip2 -1 > [ARCHIVE].tar.bz2

Você pode ler isso como "create .tar com tar - > bzip com bzip2 - > escreva-o em [ARCHIVE].tar.bz2 ".

Variável de ambiente

Também é possível definir as opções bzip2 através da variável de ambiente BZIP2 . Na página de manual bzip2(1) :

bzip2 will read arguments from the environment variables BZIP2 and BZIP,
in that order, and will process them before any arguments read from the
command line. This gives a convenient way to supply default arguments.

Então, para usar isso com tar , você poderia, por exemplo, fazer:

$ BZIP2=-1 tar --create --bzip2 --file [ARCHIVE].tar.bz2 [FILE...]

Alternativas mais rápidas

bzip2 usa um algoritmo de compactação lenta. Se você estiver preocupado com a velocidade, poderá investigar algoritmos alternativos, como os usados por gzip ou lzop . Aqui está um bom artigo comparando as ferramentas de compressão: link

    
por 16.11.2016 / 11:14
1

Envie a saída tar para stdout e, em seguida, canalize-a por bzip2 separadamente:

% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2
    
por 01.05.2009 / 18:49
0

É ainda mais fácil:

% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar
    
por 10.01.2013 / 10:49