Skip to content
Back to Blog
how-to-convert

Comment convertir un ZIP en TAR (pour les migrations de serveurs Linux)

2026-05-17 9 min read

Pourquoi ZIP et TAR sont deux mondes à part

ZIP et TAR proviennent de deux philosophies informatiques différentes. ZIP, né en 1989 pour DOS et Windows, combine l'archivage et la compression en un seul paquet bien propre. Il gère les fichiers individuellement, te permettant d'extraire un seul fichier sans décompresser toute l'archive, et il conserve les métadonnées de type Windows. TAR, abréviation de Tape ARchive, c'est du pur Unix. Il ne fait qu'une seule chose : il concatène des fichiers en un flux unique. C'est tout. La compression est une étape distincte, généralement gérée par des outils comme gzip (.tar.gz) ou bzip2 (.tar.bz2). Cette différence n'est pas juste théorique ; elle a d'énormes conséquences pratiques pour les migrations de serveurs Linux. Tu reçois un ZIP d'un développeur Windows ou d'une sauvegarde cPanel, et tu te retrouves soudain à te battre avec des erreurs de permission, des liens symboliques cassés et des métadonnées perdues quand tu essaies de le déployer. TAR a été conçu pour préserver ce que ZIP ignore : les permissions de fichiers Unix (tes `chmod 755` et `644`), les données de propriétaire, les liens symboliques et les liens physiques. Ça te sauve la vie. Un cauchemar classique : un site WordPress zippé sous Windows. Le script `wp-cron.php` pourrait perdre sa permission d'exécution, ou des liens symboliques cruciaux pourraient être aplatis en fichiers morts. En reconditionnant ce même projet en .tar.gz d'abord, tu évites tous ces problèmes avant de le déployer sur ton serveur Apache ou Nginx. Convertir un ZIP en TAR n'est pas juste une question de goût ; c'est une étape indispensable pour une migration fluide et sans surprise.

La méthode la plus rapide : CocoConvert pour les archives de petite et moyenne taille

Quand tu as affaire à une archive de moins de 2 Go, la solution la plus rapide est un outil en ligne. Quiconque a déjà dû monter une VM temporaire juste pour faire une seule conversion sait que parfois, tu veux juste que le problème soit résolu, et tout de suite. Pour ça, utilise le cloud. Le [convertisseur de ZIP en TAR](/convert/zip-to-tar) de CocoConvert gère tout le processus — extraction et reconditionnement — sur ses serveurs. Tu n'as rien à installer. Son utilisation est simple : 1. Va sur [cocoConvert.com/convert/zip-to-tar](/convert/zip-to-tar). 2. Fais glisser ton fichier .zip sur la page ou utilise le bouton 'Choisir un fichier'. 3. Choisis ton format de sortie. Tu peux obtenir un .tar simple, un .tar.gz compressé, ou un .tar.bz2. 4. Clique sur 'Convertir'. Un fichier ZIP de 500 Mo prend généralement entre 30 et 90 secondes, selon la charge des serveurs. 5. Télécharge l'archive TAR terminée. Tu peux l'enregistrer sur ton ordinateur ou utiliser `wget` pour la télécharger directement sur ton serveur avec le lien fourni. Un petit conseil sur le format à choisir : pour les serveurs avec peu d'espace disque, le .tar.gz est ton meilleur allié. Il réduit généralement les bases de code riches en texte de 60 à 70 %. Si tu as besoin d'une décompression plus rapide sur du matériel plus ancien et que tu peux tolérer un fichier légèrement plus gros, le .tar.bz2 est une option solide, bien qu'il soit plus long à créer. Soyons clairs sur les limites, par contre. CocoConvert est parfait pour des tâches rapides et ponctuelles. Il n'est pas conçu pour les archives de plus de 2 Go, les fichiers ZIP chiffrés, ou les situations exigeant une préservation parfaite des ACLs (Access Control Lists) Unix spécifiques. Pour ces tâches lourdes, il te faudra passer par la ligne de commande, ce que nous allons voir maintenant.

Conversion en ligne de commande sous Linux : la méthode fiable pour les grosses archives

Pour les grosses archives, les fichiers déjà sur un serveur distant, ou tout ce qui a des permissions délicates, la ligne de commande est ta meilleure amie. Elle te donne un contrôle total. Tu n'as besoin que de deux utilitaires présents sur presque tous les systèmes Linux : `unzip` et `tar`. D'abord, assure-toi qu'ils sont installés : ``` which unzip tar ``` Sur Debian/Ubuntu, tu peux les installer avec : `sudo apt install unzip tar`. Sur RHEL/CentOS/AlmaLinux, c'est `sudo dnf install unzip tar`. Le processus lui-même est simple : tu dézippes l'archive dans un répertoire temporaire, puis tu ré-archives ce répertoire en un fichier TAR. D'abord, extrais le ZIP : ``` unzip archive.zip -d ./extracted_content ``` L'utilisation de l'option `-d` n'est pas négociable. Elle crée un répertoire dédié pour le contenu. Si tu l'oublies, `unzip` va éparpiller des fichiers partout dans ton répertoire actuel, créant un bazar monstre que tu devras nettoyer à la main. Ensuite, empaquette le tout dans une archive TAR : ``` tar -czf archive.tar.gz -C ./extracted_content . ``` Décortiquons ces options. `-c` crée une nouvelle archive, `-z` ajoute la compression gzip, et `-f` définit le nom du fichier de sortie. L'option `-C` est la vraie star ici : elle dit à `tar` de se déplacer dans le répertoire `extracted_content` avant de commencer à archiver. Le `.` final lui dit d'archiver tout ce qui se trouve dans son nouveau répertoire courant. Cette petite astuce t'évite d'avoir un niveau de dossier supplémentaire non désiré dans ton archive — une erreur classique qui peut casser les chemins de déploiement. Besoin d'une compression différente ? Pour un .tar.bz2, remplace simplement `-z` par `-j` : ``` tar -cjf archive.tar.bz2 -C ./extracted_content . ``` Et si tes fichiers sont déjà compressés (comme des images ou des vidéos), tu peux créer un TAR simple, non compressé : ``` tar -cf archive.tar -C ./extracted_content . ``` Avant de supprimer le répertoire temporaire, fais toujours une vérification rapide pour t'assurer que l'archive est valide : ``` tar -tzf archive.tar.gz | head -20 ``` Cette commande liste les 20 premiers fichiers. Si la structure semble correcte, c'est bon.

Gérer les permissions et la propriété des fichiers pendant la migration

Fais bien attention ici, car c'est l'étape où la plupart des migrations de ZIP vers TAR échouent. Le problème, ce sont les permissions. Le format ZIP a un champ de 16 bits pour les attributs de fichier, mais c'est très incohérent d'un système d'exploitation à l'autre. Un ZIP provenant de macOS pourrait s'en sortir, mais un ZIP de l'archiveur par défaut de Windows se trompera presque certainement. Quand tu lances `unzip` sur Linux, l'outil fait de son mieux pour deviner les permissions. Il applique généralement 644 pour les fichiers et 755 pour les répertoires, en se basant sur l'umask de ton système (qui est typiquement 022). Bien que ce soit acceptable pour la plupart des ressources web, c'est rédhibitoire pour tout script qui a besoin des permissions d'exécution pour fonctionner. La seule solution fiable est de corriger les permissions toi-même *avant* de créer l'archive TAR. Audite et corrige-les avec `find` : ``` # Appliquer une permission par défaut sûre à tous les fichiers (644) find ./extracted_content -type f -exec chmod 644 {} \; # Appliquer une permission par défaut sûre à tous les répertoires (755) find ./extracted_content -type d -exec chmod 755 {} \; # Rendre les scripts explicitement exécutables find ./extracted_content -name '*.sh' -exec chmod 755 {} \; ``` La propriété des fichiers est l'autre moitié du puzzle. Si tu déplaces une application web, ses fichiers doivent probablement appartenir à `www-data` (sur Debian/Ubuntu) ou `nginx` ou `apache` (sur les systèmes RHEL). Définis la propriété avant de créer l'archive, surtout si un script de déploiement en dépend : ``` sudo chown -R www-data:www-data ./extracted_content ``` TAR préserve fidèlement la propriété et les permissions qui existent au moment où tu crées l'archive. Si tu les règles correctement en amont, ton déploiement devient une simple extraction — fini les scripts `chmod` désordonnés après le déploiement. Pour les déploiements automatisés, c'est un gain opérationnel énorme par rapport à la galère des fichiers ZIP.

Automatiser la conversion de ZIP en TAR dans les scripts de migration

Si tu convertis plus d'un fichier, automatise. Que tu migres des dizaines de sites ou que tu traites simplement des sauvegardes ZIP hebdomadaires d'un serveur cPanel, un script te fera gagner un temps fou et évitera les erreurs bêtes. Ce script shell est un excellent point de départ. Il trouve chaque fichier ZIP dans un répertoire source, le convertit, et place le fichier TAR résultant dans un répertoire de destination. ```bash #!/bin/bash SOURCE_DIR="/srv/backups/zip" DEST_DIR="/srv/backups/tar" TMP_DIR="/tmp/zip_conversion" mkdir -p "$DEST_DIR" "$TMP_DIR" for zipfile in "$SOURCE_DIR"/*.zip; do basename=$(basename "$zipfile" .zip) extract_path="$TMP_DIR/$basename" echo "Processing: $basename" mkdir -p "$extract_path" unzip -q "$zipfile" -d "$extract_path" # Fix permissions find "$extract_path" -type f -exec chmod 644 {} \; find "$extract_path" -type d -exec chmod 755 {} \; tar -czf "$DEST_DIR/${basename}.tar.gz" -C "$extract_path" . # Verify before cleanup if tar -tzf "$DEST_DIR/${basename}.tar.gz" > /dev/null 2>&1; then echo "Success: ${basename}.tar.gz" rm -rf "$extract_path" else echo "ERROR: Conversion failed for $basename" >&2 fi done rm -rf "$TMP_DIR" ``` Pour l'utiliser, enregistre le code sous `convert_zips.sh`, rends-le exécutable avec `chmod 755 convert_zips.sh`, puis lance-le avec `./convert_zips.sh`. Remarque la vérification de sécurité : le script valide que la nouvelle archive TAR est lisible avant de supprimer les fichiers extraits temporaires. C'est une étape cruciale qui t'évite de perdre des données accidentellement si quelque chose se passe mal pendant la commande `tar`. Pour exécuter cela automatiquement, ajoute-le simplement à une tâche cron. Cet exemple exécute le script tous les jours à 2h du matin et enregistre toutes les sorties : `0 2 * * * /srv/scripts/convert_zips.sh >> /var/log/zip_conversion.log 2>&1`.

Erreurs courantes et comment les corriger

Tôt ou tard, une conversion va échouer. Ça arrive. Voici les erreurs les plus courantes que tu rencontreras en convertissant un ZIP en TAR et comment les surmonter. **'End-of-central-directory signature not found'** Cette erreur signifie presque toujours que ton fichier ZIP est corrompu ou incomplet. Vérifie sa taille par rapport à la source originale et essaie de le télécharger à nouveau. En dernier recours, tu peux essayer de le réparer : `zip -FF corrupted.zip --out repaired.zip` **'Cannot allocate memory' pendant l'unzip** Ce n'est généralement pas un problème de RAM. C'est un problème de descripteurs de fichiers. Une archive avec des millions de tout petits fichiers peut épuiser la limite du système. Augmente la limite pour ta session shell actuelle avec `ulimit -n 65536` puis réessaie. **Liens symboliques manquants dans le TAR** Si tes liens symboliques se transforment en simples fichiers texte contenant le chemin du lien, tu utilises peut-être une vieille version de `unzip` qui les gère mal (certaines versions nécessitaient l'option `-X`). Vérifie avec `unzip -v` et mets à jour si tu utilises une version antérieure à 6.0. Une alternative plus robuste est d'utiliser le module `zipfile` de Python, qui préserve très bien les liens symboliques : `python3 -c "import zipfile; zipfile.ZipFile('archive.zip').extractall('extracted/')"`. **Noms de fichiers avec des espaces qui cassent tar** Ah, le problème classique du 'nom de fichier avec des espaces'. Cela peut faire planter des commandes `find` simples utilisées pour corriger les permissions. La manière infaillible de gérer cela est avec l'option `-print0` de `find` redirigée vers `xargs -0` : `find ./extracted_content -type f -print0 | xargs -0 chmod 644` **Archive trop grande pour /tmp** Beaucoup de systèmes configurent `/tmp` comme une partition `tmpfs` en RAM, souvent limitée à la moitié de ta mémoire totale. Si ton archive est énorme, ça va échouer. Tu peux soit dire à `unzip` d'utiliser un répertoire temporaire différent sur un vrai disque (`export TMPDIR=/var/tmp`), soit, encore mieux, spécifier directement un chemin d'extraction sur disque avec l'option `-d`. **Timeout de CocoConvert sur les gros fichiers** Notre outil en ligne est conçu pour être pratique, pas pour des fichiers massifs. Tout ce qui dépasse 2 Go risque de provoquer un timeout. C'est une limite stricte pour la plupart des téléversements via un navigateur. Pour les gros travaux, tu dois utiliser la méthode en ligne de commande.

Choisir la bonne compression TAR pour ton environnement serveur

La compression que tu associes à TAR n'est pas juste un détail ; elle affecte la vitesse de migration, l'utilisation du disque, et même les performances du serveur pendant le déploiement. Voici comment choisir la bonne. **.tar.gz (gzip)** C'est le standard du secteur pour une bonne raison. Il offre un bon taux de compression (généralement de 3:1 à 5:1 sur du code), se décompresse rapidement (un .tar.gz de 1 Go se décompresse en environ 15 secondes sur un serveur moderne), et il est universellement supporté. Mon conseil ? Utilise simplement celui-ci. À moins d'avoir une raison très spécifique et convaincante de choisir autre chose, le .tar.gz est la bonne réponse. **.tar.bz2 (bzip2)** Celui-ci te donnera un fichier environ 10 à 15 % plus petit que gzip, mais à un coût significatif : la compression est 3 à 4 fois plus lente. La décompression est également plus lente. C'est un compromis qui n'a de sens que pour l'archivage à long terme où chaque gigaoctet compte, pas pour des déploiements actifs. **.tar.xz (xz/LZMA)** Il offre la meilleure compression, réduisant souvent le code source de 20 à 30 % de plus que gzip. Mais la décompression est lente et gourmande en mémoire — un .tar.xz de 500 Mo peut facilement bouffer 700 Mo de RAM juste pour être décompressé. Tu devrais éviter ce format pour les migrations, surtout si tu déploies sur un serveur avec des ressources limitées. **.tar (sans compression)** Ne compresse pas ce qui est déjà compressé. Si ton archive est pleine d'images JPEG, de vidéos MP4 ou de dumps de base de données pré-compressés, l'envelopper dans du gzip est juste un gaspillage de cycles CPU pour un gain de taille quasi nul. Dans ce cas, un .tar simple est le choix le plus efficace. Pour quasiment toute migration web — applications PHP, projets Node.js, ou bases de code Python — le .tar.gz est la voie à suivre. C'est ce que les outils de déploiement comme Capistrano, Deployer, et le module `unarchive` d'Ansible attendent, et il représente le parfait équilibre entre vitesse, taille et compatibilité. Si tu fais une conversion ponctuelle et que tu ne veux pas te plonger dans les méandres des options de ligne de commande, le [convertisseur de ZIP en TAR](/convert/zip-to-tar) de CocoConvert t'offre les options les plus pratiques — .tar, .tar.gz, et .tar.bz2 — directement dans le navigateur. C'est un bon raccourci quand tu veux juste que le travail soit fait.

Ready to convert?

Try it now — fast, secure, and private.

Convert Now →