Je gzip répertoires très souvent au travail. Ce que je fais normalement, c'est
tar -zcvf file.tar.gz /path/to/directory
Y at-il un moyen de spécifier le niveau de compression ici? Je souhaite utiliser la meilleure compression possible, même si sa compression prend plus de temps.
linux
compression
tar
gzip
Lazer
la source
la source
top
et voir en utilisant n'importe où entre 200% -400 $ CPU.GZIP_OPT
, l'utilisation devrait être la même.Au lieu d'utiliser l'indicateur gzip pour tar, gzip les fichiers manuellement après le processus tar, vous pouvez alors spécifier le niveau de compression du programme gzip:
Ou vous pouvez utiliser:
Le -9 dans la ligne de commande gzip indique à gzip d'utiliser le niveau de compression maximal possible (la valeur par défaut est -6).
Edit: Correction de la ligne de commande du pipe basée sur le commentaire @depesz.
la source
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, puisquegzip
ajoute l'extension ".gz".f -
? s'il n'y a pas de fichier, alors c'est stdin / outLes versions modernes de tar prennent en charge le format d'archive xz (GNU tar, depuis 1.22 en 2009, Busybox depuis 1.17.0 en 2010).
Il est basé sur lzma2 , un peu comme une version 7-Zip de gz . Cela donne une meilleure compression si vous êtes d'accord avec l'exigence de besoin du support xz.
Je viens de découvrir ici (essentiellement une dupe de cette question, mais dans le stackexchange Unix) qu'il existe également une variable d'environnement XZ_OPT = -9 pour contrôler le niveau de compression XZ similaire à celui de GZIP dans l'autre message.
la source
C'est la deuxième solution de Matrix Mole, mais légèrement raccourcie:
Lors de l'appel de tar, l'option
f
indique que la sortie est un fichier. Si vous le-
définissez sur (stdout), tar écrit sa sortie sur stdout, qui est le comportement par défaut sans les deuxf
et-
.Et comme indiqué dans la
gzip
page de manuel, si aucun fichier n'est spécifié, gzip sera compressé à partir de l'entrée standard. Il n'y a pas besoin de-
dans l'gzip
appel.Option
--best
(équivalent à-9
) définit le niveau de compression le plus élevé.la source
xz
etpixz
aussi. C'est un excellent moyen de contrôler le nombre de threads utilisés pour la compression parallèle sans avoir à créer un fichier .tar intermédiaire. Comme sitar -cv /path/to/dir | pixz -p4 > output.tpxz
Il est également possible de spécifier le programme de compression à l'aide de -I. Cela peut inclure l'option de niveau de compression.
la source
-I
argument. Elles essaieront de traiter l'ensemble du projet comme un nom de programme à exécuter, et échoueront donc. Au moins à partir de la version 1.29 de Debian Stretch, cela fonctionne.Et bien sûr, le goudron dérivé de macOS bsd doit être différent:
la source