ti-enxame.com

Como você define o tamanho do bloco Bzip2 ao usar o alcatrão?

Eu estou usando tar para fazer backup de um servidor Linux para fita. 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 alcatrão. O tamanho do bloco padrão é de 900.000 bytes que dá a melhor compressão, mas é mais lento. Eu não sou tão incomodado sobre a taxa de compressão, então estou olhando para fazer o BZip2 correr mais rápido com um tamanho menor de bloco.

9
Guy C
export BZIP=--fast
tar cjf foo.tar.bz2 foo

Ou tocar a saída de tar para bzip2.

Embora você deve notar da página do homem Bzip2:

 -1 (ou - rápido) para -9 (ou --best) [.____] Defina o tamanho do bloco para 100 k, 200 k. 900 K ao compactar. [.____] Nenhum efeito quando descomprimir. Veja o gerenciamento de memória abaixo. [.____] Os aliases - rápidos e mais fétidos são principalmente para GNU Compat Gzip - [.____] ibbility. Em particular, - quase não T Faça as coisas Signifi - [.____] Cantemente mais rápido. E o mais só seleciona o comportamento padrão. [.____]
9
Brian Campbell
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/
4
steveayre

bzip2 Tamanhos de bloco

bzip2 Tem algumas opções de tamanho de bloco. Na página 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 compactação mais rápida com menos relação à taxa de compactação, usando bzip2, Você parece querer o -1 (Ou --fast) Opção.

Definindo bzip2 Tamanho do bloco ao usar tar

Você pode definir bzip2 Tamanho do bloco ao usar tar de algumas maneiras.

O caminho unlx

Minha maneira favorita, o caminho unlx, é aquele em que você usa todas as ferramentas de forma independente e combinam-as através de tubos.

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

Você pode ler isso como "Criar .tar com tar -> Bzip com bzip2 -> Escreva para [ARCHIVE].tar.bz2".

Variável de ambiente

Também é possível definir opções de bzip2 Através da variável de ambiente BZIP2. Na página 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 compressão lento. Se você está preocupado com a velocidade, poderá investigar algoritmos alternativos, como aqueles usados ​​por gzip ou lzop. Aqui está um artigo agradável comparando ferramentas de compressão: https://aliver.wordpress.com/2010/06/22/huge-unix-file-compresser-shootout-with-tons-of-dagraphs/

2
aude

Envie o tar Saída para stdout e então canalizá-lo através de bzip2 separadamente:

% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2
1
Alnitak

É ainda mais fácil:

% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar
0
Andreas Spindler