Tutoriel Linux

Zstd sous Linux : mesurer le gain face à gzip sur une sauvegarde

Débutant3 min de lecture
n
Illustration Linux de deux sauvegardes compressées avec zstd et gzip
zstd permet de comparer rapidement le compromis entre taille d’archive et temps de compression.
n nn

Vous compressez des sauvegardes avec gzip parce que c’est l’outil historique ? zstd mérite un test sur vos fichiers et vos flux. Il vise un compromis plus intéressant entre temps de compression, taille finale et vitesse de décompression, sans changer la logique de vos commandes Linux.

Je vous montre ici les commandes utiles, puis une comparaison simple avec gzip. Le résultat dépend toujours du processeur, du disque et du contenu de la sauvegarde. Mesurez sur un extrait représentatif avant de modifier votre script de production.

Compresser et décompresser un fichier avec zstd

Installez le paquet fourni par votre distribution si la commande n’est pas déjà présente, puis compressez une copie du fichier :

cp sauvegarde.img sauvegarde-test.img
zstd sauvegarde-test.img

La commande crée sauvegarde-test.img.zst et conserve normalement le fichier source. Pour choisir un niveau, ajoutez un nombre de 1 à 19. Les niveaux élevés cherchent une meilleure compression, mais consomment davantage de temps et de mémoire :

zstd -3 sauvegarde-test.img
zstd -9 sauvegarde-test.img

Pour décompresser l’archive :

zstd -d sauvegarde-test.img.zst

Évitez d’utiliser --rm avant d’avoir contrôlé le résultat. Cette option peut supprimer le fichier source après compression. Sur une sauvegarde, je préfère garder l’original jusqu’à la vérification.

Comparer zstd et gzip sur le même fichier

Faites les deux tests avec une copie identique et mesurez le temps avec /usr/bin/time :

cp sauvegarde.img test-zstd.img
cp sauvegarde.img test-gzip.img
/usr/bin/time -f 'zstd: %e s' zstd -3 test-zstd.img
/usr/bin/time -f 'gzip: %e s' gzip -6 test-gzip.img
ls -lh test-zstd.img.zst test-gzip.img.gz

Le fichier compressé n’a pas la même extension, mais la comparaison est directe : regardez la taille affichée et le temps mesuré. Un niveau zstd modéré suffit souvent pour une sauvegarde quotidienne. Le niveau 19 n’est pas automatiquement un meilleur choix : le gain de taille peut être faible alors que le temps de compression augmente fortement.

Pour éviter d’écraser un ancien résultat pendant les essais, utilisez deux répertoires distincts :

mkdir -p test-zstd test-gzip
zstd -3 -o test-zstd/sauvegarde.img.zst sauvegarde.img
gzip -6 -c sauvegarde.img > test-gzip/sauvegarde.img.gz
du -h test-zstd/sauvegarde.img.zst test-gzip/sauvegarde.img.gz

Utiliser tar avec une sauvegarde de dossiers

Pour archiver un dossier puis le compresser avec zstd, utilisez l’option --zstd de tar :

tar --zstd -cf sauvegarde-home.tar.zst /home/mon-utilisateur

Vous pouvez régler le niveau en passant une option au compresseur :

tar -I 'zstd -3' -cf sauvegarde-home.tar.zst /home/mon-utilisateur

Pour lister le contenu sans extraire l’archive :

tar --zstd -tf sauvegarde-home.tar.zst

Et pour extraire dans un répertoire de test :

mkdir restauration-test
tar --zstd -xf sauvegarde-home.tar.zst -C restauration-test

Vérifier l’archive avant de remplacer l’original

Une compression terminée n’est pas une preuve que votre sauvegarde est exploitable. Vérifiez que l’archive peut être lue et que la liste des fichiers est cohérente :

zstd -t sauvegarde-test.img.zst
tar --zstd -tf sauvegarde-home.tar.zst > /dev/null
echo $?

Le code de retour doit être égal à 0. Pour une sauvegarde importante, extrayez aussi quelques fichiers dans un dossier temporaire, comparez leur taille ou leur somme, puis seulement après remplacez l’ancienne archive.

zstd est particulièrement intéressant quand la décompression est fréquente ou quand le temps de restauration compte. Pour une sauvegarde envoyée vers un stockage lent, la taille finale peut peser davantage dans le choix. Dans les deux cas, mesurez avec vos propres données et gardez un niveau raisonnable, généralement -3 ou -5, avant de déployer le changement partout.

sudo apt update && sudo apt upgrade