12 votes

Comment définir la taille des blocs de bzip2 lors de l'utilisation de tar ?

J'utilise tar pour sauvegarder un serveur linux sur bande. J'utilise le logiciel -j pour compresser le fichier avec bzip2 Cependant, je ne vois aucun moyen d'ajuster les options de taille de bloc pour bzip2 à partir de tar. La taille de bloc par défaut est de 900 000 octets, ce qui donne la meilleure compression mais la plus lente. Le taux de compression ne me préoccupe pas vraiment, je cherche donc à faire fonctionner bzip2 plus rapidement avec une taille de bloc plus petite.

12voto

beno Points 1148
export BZIP=--fast
tar cjf foo.tar.bz2 foo

Ou encore, vous pouvez envoyer la sortie de l'application tar à bzip2 .

Cependant, il convient de noter la page de manuel de 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.

4voto

Kaili Points 724
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/

3voto

UFO Points 1

bzip2 taille des blocs

bzip2 dispose de quelques options de taille de bloc. Extrait de la page de manuel 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.

Si vous souhaitez une compression plus rapide avec moins d'importance pour le taux de compression, l'utilisation de bzip2 vous semblez vouloir la -1 (ou --fast ).

Paramètres bzip2 taille du bloc lors de l'utilisation de tar

Vous pouvez définir bzip2 taille du bloc lors de l'utilisation de tar de plusieurs manières.

La voie UNlX

Ma méthode préférée, la méthode UNlX, consiste à utiliser chaque outil indépendamment et à les combiner au moyen de tuyaux.

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

Vous pouvez lire cela comme "créer .tar avec tar -> bzip avec bzip2 -> l'écrire à [ARCHIVE].tar.bz2 ".

Variable d'environnement

Il est également possible de définir bzip2 par le biais de la variable d'environnement BZIP2 . A partir de la page du manuel 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.

Pour l'utiliser avec tar vous pouvez par exemple faire :

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

Des alternatives plus rapides

bzip2 utilise un algorithme de compression lent. Si vous êtes préoccupé par la vitesse, vous pouvez étudier d'autres algorithmes, tels que ceux utilisés par gzip o lzop . Voici un article intéressant qui compare les outils de compression : https://aliver.wordpress.com/2010/06/22/huge-unix-file-compresser-shootout-with-tons-of-datagraphs/

2voto

Munesawagi Points 2065

C'est encore plus simple :

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

2voto

Joey deVilla Points 4487

Envoyer le tar la sortie vers stdout et l'acheminer par l'intermédiaire de bzip2 séparément :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X