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.
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. [.____]
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/
bzip2
Tamanhos de blocobzip2
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.
bzip2
Tamanho do bloco ao usar tar
Você pode definir bzip2
Tamanho do bloco ao usar tar
de algumas maneiras.
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
".
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...]
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/
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
É ainda mais fácil:
% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar