tar: --exclude = ". git": Stat impossible: aucun fichier ou répertoire de ce type


11

Ça me rend fou. Je veux tarun répertoire, mais exclure certains fichiers. Voici ma commande:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude='.git' --exclude='.gitignore'

Bien que la commande ci-dessus fonctionne sur RedHat EL5, elle ne fonctionne pas sur Mac OS 10.8.2. J'ai essayé de remplacer le 'par ", \'et \". J'ai essayé de supprimer les signes égaux. Rien ne fonctionne.

Qu'est-ce que je fais mal?


Utilisation gnutarde Brew, MacPort, etc. Le goudron d'Apple est trop paralysé.
2016

Réponses:


23

Toutes les options doivent être réunies avant les arguments, et l' -findicateur doit précéder le fichier tar:

tar -zcv --exclude = '. git' --exclude = '. gitignore' -f $ NAME- $ VERSION.tar.gz $ NAME- $ VERSION

Si c'est le cas tar --help, l' --excludeoption apparaît-elle dans l'aide? Je ne connais pas OSX mais peut-être qu'il y a un gtarau lieu du stock tar.
Flup

2
Ah je le vois :) essayez ceci: tar --exclude='.git' --exclude='.gitignore' -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION Le -fdrapeau attend un nom de fichier comme argument suivant.
Flup

Désolé oui, modifié. Je suis nouveau ici, alors soyez indulgent avec moi!
Flup

2
Peut attester que cela fonctionne sur un Mac - 10.9. Cela m'a pris du temps pour trouver la bonne version de cela, c'est pourquoi je laisse mon commentaire ici!
JohnAllen

2

Cela vous donne ce que vous voulez:

tar czvf $NAME-$VERSION.tar.gz $NAME-$VERSION --wildcards --exclude=.git --exclude=.gitignore

1

Il semble que vous aimiez filtrer les répertoires méta .git, la manière la plus simple consiste à utiliser --exclude-vcs pour exclure les répertoires du système de contrôle de version:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude-vsc

J'ai utilisé "tar (GNU tar) 1.27.1" sur ma machine Linux, il semble que la commande générale BSD de mac (version non GNU) ne supporte pas cette option.


Êtes-vous certain que cela fonctionne avec le goudron d'Apple? Voir la tar(1)page de manuel d'Apple . il ne répertorie pas --exclude-vscou --exclude-vcs.
2016

Merci cher @jww pour ton conseil. J'ai modifié ma réponse pour être plus efficace.
Kayvan Tehrani
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.