Exclusion du répertoire lors de la création d'un fichier .tar.gz


119

J'ai un /public_html/dossier, dans ce dossier il y a un /tmp/dossier qui contient environ 70 Go de fichiers dont je n'ai pas vraiment besoin.

J'essaye maintenant de créer un .tar.gzd' /public_html/exclusion/tmp/

Voici la commande que j'ai exécutée:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

Le tar est toujours en cours de création, et en faisant un, ls -shje peux voir qu'il a MyBackup.tar.gzdéjà environ 30 Go, et je sais avec certitude que /public_html/sans /tmp/pas plus de 1 Go de fichiers.

Qu'ai-je fait de mal?



l' -poption n'a aucune signification en termes de fonction de création, non !?
Martin Schneider

Réponses:


201

Essayez de supprimer le dernier / à la fin du chemin du répertoire à exclure

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
Pour exclure tout le dossier et son contenu: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Je reçois tar: Error exit delayed from previous errors.dans macos
prieragupd

Obtenir un tar d'erreur: Suppression du premier `/ 'des noms de membres
SenG

2
Ne fonctionne pas, j'ai dû utiliser à la --exclude="/home/user/public_html/tmpplace de--exclude "/home/user/public_html/tmp
Noir

1
Ne tenez pas compte de mon commentaire précédent que je ne peux plus modifier: excludedoit d'abord être spécifié en tant que notes stackoverflow.com/users/3904223/oussaka . Au moins c'est la seule chose qui a fonctionné pour moi
kghbln

46

Essayez de déplacer le --excludevers avant l'inclusion.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

Merci, cela a fonctionné pour moi sur une ancienne boîte Ubuntu 14.04 LTS.
Jamsi

1
J'avais besoin de le faire également sur OS X.
TheJacobTaylor

16

Oui, supprimez la fin /et (au moins dans ubuntu 11.04) tous les chemins indiqués doivent être relatifs ou complets. Vous ne pouvez pas mélanger des chemins absolus et relatifs dans la même commande.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

n'exclura pas le répertoire des journaux mais

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

marchera


1
Travaillez pour moi lorsque je supprime le chemin absolu dans l'argument d'exclusion.
jruzafa

2
L'astuce sur le mélange de chemins absolus et relatifs était la clé pour moi ici
Dmitri DB

12

La commande correcte pour exclure le répertoire de la compression est:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Assurez-vous de mettre --exclude avant les éléments source et destination .

et vous pouvez vérifier le contenu du fichier tar.gz sans décompresser:

tar -tf backup.tar.gz

3

Essaye ça

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

Vous pouvez également en exclure plusieurs en utilisant un seul --exclude. Comme cet exemple:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

Dans --exclude=vous devez terminer le nom du répertoire sans /et doit être entre MyBackup.tar.gz et / home / user / public_html /

La syntaxe est:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

La réponse acceptée n'a pas fonctionné pour moi, exécutant unxutils tar sur windows10. Au lieu de cela, j'ai dû mettre les fichiers / répertoires à archiver en tant que dernier paramètre, comme ceci:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Ensuite, cela a fonctionné.


2

Cela a fonctionné pour moi:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Testé dans Ubuntu 19.10.

  1. L' =après excludeest facultatif. Vous pouvez utiliser à la =place de l'espace après le mot exclude- clé si vous le souhaitez.
  2. Le paramètre excludedoit être placé avant la source.
  3. La différence entre utiliser le nom du dossier (comme le 1er) ou le * (comme le 2ème) est la suivante: le 2ème inclura un dossier vide dans le package mais le 1er ne le fera pas.

-2

L'option d'exclusion doit inclure le =signe et "n'est pas obligatoire.

--exclude=/home/user/public_html/tmp

1
"est requis si le dossier a de l'espace dans le nom
Noir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.