web-dev-qa-db-fra.com

Comment compresser tous les fichiers de tous les sous-répertoires en un seul fichier compressé dans bash

Duplicate possible:
remplir un ensemble de répertoires et créer un fichier compressé au format tar

Cet article décrit comment gzip chaque fichier individuellement dans une structure de répertoires. Cependant, je dois faire quelque chose de légèrement différent. J'ai besoin de produire un gros fichier gzip pour tous les fichiers d'un répertoire donné. Je dois également pouvoir spécifier le nom du fichier de sortie pour le fichier compressé (par exemple, fichiers.gz) et écraser l'ancien fichier compressé s'il en existe déjà un.

187
Doug
tar -zcvf compressFileName.tar.gz folderToCompress

tout dans folderToCompress ira à compressFileName

Edit: Après avoir passé en revue et commenté, j'ai compris que compressFileName pouvait être confondu sans extension. Si vous le souhaitez, vous pouvez utiliser l’extension .tar.gz (comme suggéré) avec compressFileName.

368
amitchhajer

il y a beaucoup de méthodes de compression qui fonctionnent de manière récursive en ligne de commande et il est bon de savoir qui est le public final.

c'est-à-dire que s'il doit être envoyé à quelqu'un qui exécute Windows, alors Zip serait probablement le meilleur:

Zip -r file.Zip folder_to_Zip

unzip filenname.Zip

pour d'autres utilisateurs de linux ou votre propre goudron est génial

tar -cvzf filename.tar.gz folder

tar -cvjf filename.tar.bz2 folder  # even more compression

#change the -c to -x to above to extract

Il faut faire attention avec le goudron et la façon dont les choses sont goudronnées/extraites, par exemple si je cours

cd ~
tar -cvzf passwd.tar.gz /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd


pwd

/ home/myusername

tar -xvzf passwd.tar.gz

cela créera/home/myusername/etc/passwd

je ne sais pas si toutes les versions de tar le font:

 Removing leading `/' from member names
57
Vahid

Le post de @amitchhajer fonctionne pour GNU tar. Si une personne trouve cette publication et en a besoin pour fonctionner sur un système NON GNU, elle peut le faire:

tar cvf - folderToCompress | gzip > compressFileName

Pour développer l'archive:

zcat compressFileName | tar xvf -
18
Jeremy J Starcher