Vers tar
et gzip
un dossier, la syntaxe est :
tar czf name_of_archive_file.tar.gz name_of_directory_to_tar
Le -
avec czf
est facultatif.
Si vous voulez tar
le répertoire courant, utilisez .
pour désigner cela.
Pour construire dynamiquement des noms de fichiers, utilisez le date
utilitaire (consultez sa page de manuel pour les options de format disponibles). Par exemple :
cd /var/www &&
tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .
Cela créera un fichier nommé quelque chose comme 20120902-185558.tar.gz
.
Sous Linux, il y a de fortes chances que votre tar
prend également en charge la compression BZip2 avec le j
plutôt que z
option. Et éventuellement d'autres. Consultez la page de manuel de votre système local.
Exemples d'algorithmes de compression les plus courants
Le titre de la question est simplement "Compresser un dossier avec tar ?" Étant donné que ce titre est très général, mais que la question et la réponse sont beaucoup plus spécifiques, et en raison du très grand nombre de vues que cette question a attirées, j'ai pensé qu'il serait avantageux d'ajouter une liste à jour d'exemples des deux archivage/compression et extraction/décompression, avec divers algorithmes de compression couramment utilisés.
Ceux-ci ont été testés avec Ubuntu 18.04.4. Ils sont très simples pour une utilisation générale, mais pourraient facilement être intégrés dans le contenu des questions plus spécifiques du PO en utilisant les techniques de la réponse acceptée et les commentaires utiles ci-dessus.
Une chose à noter pour le public plus général est que tar
n'ajoutera pas les extensions nécessaires (comme .tar.gz
) automatiquement - l'utilisateur doit les ajouter explicitement, comme indiqué dans les commandes ci-dessous :
# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball
tar cvf filename.tar *
# 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory
tar xvf filename.tar
# 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip
tar cvzf filename.tar.gz *
# 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory
tar xvf filename.tar.gz # Note: same options as 2 above
# 5: tar (create bzip2'ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2
tar cvjf filename.tar.bz2 * # Note: little 'j' in options
# 6: Untar (extract bzip2'ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory
tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above
# 7: tar (create xz'ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz
tar cvJf filename.tar.xz * # Note: capital 'J' in options
# 8: Untar (extract xz'ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory
tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above
Voir la page man tar (mieux vaut utiliser man tar
sur votre machine spécifique) pour plus de détails. Ci-dessous, je résume les options utilisées ci-dessus directement à partir de la page de manuel :
-c, --create
créer une nouvelle archive-x, --extract, --get
extraire des fichiers d'une archive-v, --verbose
lister de manière détaillée les fichiers traités-z, --gzip
filtrer l'archive via gzip-j, --bzip2
filtrer l'archive via bzip2-J, --xz
filtrer l'archive par xz-f, --file=ARCHIVE
utiliser le fichier d'archive ou l'ARCHIVE de l'appareil
Pas besoin d'ajouter le -
devant les options combinées, soit le =
signe entre le f
option et le nom du fichier.
J'ai tiré tout cela de mon récent article, qui sera développé plus loin dans un article beaucoup plus complet au fur et à mesure que j'aurai le temps d'y travailler.