Cette question a déjà une réponse ici:
La façon dont je comprends l'utilisation de tar + gzip est qu'il tar
est normalement utilisé pour consolider un groupe de fichiers dans un seul fichier, puis gzip
est utilisé pour compresser ce fichier.
J'ai récemment appris que l' tar
on peut aussi compresser.
Comme je ne comprends pas tout à fait le fonctionnement de la compression, c’est peut-être ridicule que l’envoi d’un fichier .tar pré-compressé à gzip empêche celle-ci de se compresser aussi bien que son potentiel le permet.
Ma question est essentiellement la suivante: quelle combinaison d'arguments / méthodes de compression dois-je utiliser pour créer le plus petit fichier tar.gz absolu, et à quoi ressemble l'instruction en ligne de commande?
command-line
compression
gzip
tar
Mario Zigliotto
la source
la source
Réponses:
Vous pouvez également indiquer à tar la compression maximale de l'utilisateur de la manière suivante:
De plus, pour que vos envvars ne soient pas encombrés, vous pouvez procéder comme suit:
la source
Comme vous l'avez dit - " tar peut aussi compresser ", cela signifie que -
tar
ne compresse pas toujours les données toutes seules.Il ne le fait que lorsqu'il est utilisé avec l'
z
option. Cela aussi, pas par lui-même, mais en transmettant les données tarées à travers gzip.Toutefois, comme indiqué dans cette réponse, vous pouvez diriger les deux commandes:
tar
& degzip
telle sorte que vous puissiez spécifier explicitement le niveau de compression de lagzip
commande afin d’atteindre une taille de sortie minimale.Ici
9
spécifie le niveau de compression maximum possible.la source
tar -cvf /path
En général, ni gzip ni tar ne peuvent créer "le plus petit fichier tar.gz". Il existe de nombreux utilitaires de compression pouvant compresser au format gz. J'ai écrit un script bash « gz99 » pour essayer
gzip
,7z
etadvdef
pour obtenir le fichier le plus petit. Pour utiliser ceci afin de créer la plus petite exécution de fichier possible:L'
advdef
utilitaire de AdvanceCOMP donne généralement le plus petit fichier, mais est également bogué (l'gz99
utilitaire vérifie qu'il n'a pas corrompu le fichier avant d'accepter la sortie deadvdef
). Pour l'utiliseradvdef
directement, créez file.tar.gz comme bon vous semble. Puis lancez:Cela créera un fichier gz standard qui peut être lu par gzip et tar normalement, mais un peu plus petit. C’est à peu près tout ce que vous pouvez faire avec le format gz.
Comme vous n’avez appris que récemment que tar peut compresser, sans indiquer pourquoi vous vouliez le plus petit fichier ".tar.gz", vous ignorez peut-être qu’il existe des formats plus efficaces pouvant être utilisés avec des fichiers tar, tels que xz. En règle générale, le passage à un format différent peut entraîner une bien meilleure amélioration de la compression que de jouer à tour de rôle avec les options gzip. Le principal inconvénient de xz est qu’il n’est pas aussi courant que gzip, il est donc possible que les personnes à qui vous envoyez le fichier doivent installer un nouveau paquet. Il a également tendance à être un peu plus lent, en particulier lors de la compression. Si cela ne vous concerne pas et que vous voulez vraiment le plus petit fichier tar, essayez:
Les versions modernes de tar, par exemple sous Ubuntu 13.10, détectent automatiquement les fichiers compressés. Donc, même si vous utilisez la compression xz, vous pouvez toujours décompresser comme d'habitude:
Pour donner une idée rapide de la comparaison de ces utilitaires de compression, considérons l'effet de la compression du patch 3.1.1 à partir du noyau Linux:
Dans cet exemple trivial, nous voyons que pour obtenir le plus petit gz, il faut advdef (bien que 7z -tgzip soit presque aussi bon et beaucoup moins bogué). Nous voyons également que le passage à xz nous fait gagner beaucoup plus d’espace que d’essayer de tirer le meilleur parti de l’ancien format gz, sans que la compression prenne trop de temps.
la source
xz -9
prend quelque chose comme 5 fois legz -9
temps, pas seulement 1.5x comme Votre table suggère.gzip
L'option--best
(équivalente à-9
) demande le niveau de compression le plus élevé.la source
--best
flag: -9 est source de confusion pour le lecteur.