web-dev-qa-db-fra.com

Compresser un dossier avec tar?

J'essaie de compresser un dossier (/var/www/) à ~/www_backups/$time.tar$time est la date actuelle.

Voici ce que j'ai:

cd /var/www && Sudo tar -czf ~/www_backups $time"

Je suis complètement perdu et ça fait des heures que je suis là. Pas sûr si -czf est correct. Je veux simplement copier tout le contenu dans /var/www dans une $time.tar fichier, et je souhaite conserver les autorisations de fichier pour tous les fichiers. Quelqu'un peut m'aider?

298
qwerty

Pour tar et gzip un dossier, la syntaxe est la suivante:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar

Le - est facultatif. Si vous voulez tar le répertoire courant, utilisez . pour désigner cela.

Pour construire votre nom de fichier, utilisez l'utilitaire date (consultez sa page de manuel pour les options de format disponibles). Par exemple:

cd /var/www && Sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .

Cela aurait créé un fichier nommé quelque chose comme 20120902-185558.tar.gz.

Sous Linux, il est probable que votre tar supporte également la compression BZip2 avec l'option j plutôt que z. Et peut-être d'autres. Consultez la page de manuel de votre système local.

412
Mat

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 suscité, j'ai pensé qu'il serait bénéfique 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 des 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 ajouter explicitement ceux-ci, 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 le tar page de manuel (mieux 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, --créer
Créer une nouvelle archive

-x, --extract, --get
Extraire des fichiers d'une archive

-v, --verbose
Répertorie verbalement les fichiers traités

-z, --gzip
Filtrer l'archive via gzip

-j, --bzip2
Filtrer l'archive via bzip2

-J, --xz
Filtrer l'archive via xz

-f, --file = ARCHIVE
Utiliser un fichier d'archive ou un périphérique ARCHIVE

Pas besoin d'ajouter le - devant les options combinées ou = signe entre l'option f et le nom de fichier.

J'ai obtenu tout cela de mon récent article , qui sera développé plus loin dans un article beaucoup plus complet car j'ai le temps de travailler dessus.

3
Xitalogy