Pourquoi tar –exclude = ". *" Crée une archive vide?

Tout ce que je lis dit que pour exclure .svn et .htaccess et d'autres files cachés lors de la création d'une archive tar, utilisez le --exclude=".*" .

Quand j'essaie, j'obtiens une archive vide. Quand --exclude option --exclude long, tout est archivé.

Voici la command complète que j'utilise:

 tar -czvf ../_migrate/archive_2012-05-07.tgz --exclude=".*" ./* 

J'ai aussi essayé cette variante, sans différence de résultats:

 tar -czvf ../_migrate/archive_2012-05-07.tgz --exclude=".?*" ./* 

Vous semblez utiliser GNU tar . La correspondance de motifs dans GNU tar fonctionne sur tout le path et ne s'arrête pas à / caractères. Comme vous utilisez ./ pour votre list de files, cela signifie que chaque file correspondra à ./* qui correspond également à .?* . Je voudrais essayer quelque chose comme --exclude='.[^/]*' Peut-être.

Votre model exclut ".", Qui est le directory que vous essayez d'archiver. Utilisez ".? *" Comme motif à la place.

.* correspondra toujours à n'importe quel file qui serait inclus, comme vous utilisez des files . (qui même par lui-même correspond .* ).

Vous n'avez pas besoin de faire quoi que ce soit pour exclure les files que vous mentionnez, ils ne seront pas appariés par le glob de toute façon. Le * glob ne correspond pas aux files préfixés par des points, sauf si vous activez cette fonctionnalité manuellement (via dotglob ou l'équivalent de votre shell).