Je veux créer une archive tar d'un répertoire spécifique (avec ses sous-répertoires bien sûr). Mais quand je le fais, en utilisant la commande tar, j'obtiens une liste des fichiers qui ont été inclus, par exemple:
un calendrier_final /._ style.css
un calendrier_final / style.css
Comme vous pouvez le voir, il existe deux versions du même fichier. Cela vaut pour chaque fichier, et il y en a beaucoup. Comment exclure les fichiers temporaires, avec le préfixe ._, de l'archive tar?
Réponses:
Vous avez signalé dans un commentaire que vous travaillez sur un système Mac OS X. Ceci est un indice important de l'objectif de ces
._*
fichiers.Ces
._*
entrées d'archive sont des morceaux de données AppleDouble qui contiennent les informations supplémentaires associées au fichier correspondant (celui sans le._
préfixe). Ils sont générés par la famille de fonctions Copyfile (3) propre à Mac OS X. Les objets blob AppleDouble stockent les données de contrôle d'accès (ACL) et les attributs étendus (généralement, les indicateurs du Finder et les «fourchettes de ressources», mais les xattrs peuvent être utilisés pour stocker tout type de données).Les outils d'archivage Mac OS X fournis par le système (
bsdtar
(également associés en tant quetar
),gnutar
etpax
) généreront un._*
membre d'archive pour tout fichier auquel sont associées des informations étendues; en mode «unarchive», ils décoderont également ces membres d'archive et appliqueront les informations étendues résultantes au fichier associé. Cela crée une archive «pleine fidélité» à utiliser sur les systèmes Mac OS X en préservant et en extrayant plus tard toutes les informations que le système de fichiers HFS + peut stocker.Les outils d'archivage correspondants sur d'autres systèmes ne savent pas donner un traitement spécial à ces
._*
fichiers, ils sont donc décompressés en tant que fichiers normaux. Étant donné que ces fichiers sont assez inutiles sur d'autres systèmes, ils sont souvent considérés comme des «fichiers indésirables». De même, si un système non-Mac OS X génère une archive qui inclut des fichiers normaux commençant par._
, les outils de désarchivage de Mac OS X essaieront de décoder ces fichiers en tant qu'informations étendues.Il existe cependant un moyen non documenté (?) De faire en sorte que les archiveurs Mac OS X fournis par le système se comportent comme ils le font sur d'autres systèmes Unixy: la variable d'environnement COPYFILE_DISABLE. La définition de cette variable (sur n'importe quelle valeur, même la chaîne vide), empêchera les archiveurs de générer
._*
des membres d'archive pour représenter toute information étendue associée aux fichiers archivés. Sa présence empêchera également les archiveurs d'essayer d'interpréter ces membres d'archives comme des informations étendues.Vous pouvez définir cette variable dans le fichier d'initialisation de votre shell si vous souhaitez travailler de cette façon le plus souvent.
Ensuite, lorsque vous devez réactiver la fonction (pour conserver / restaurer les informations étendues), vous pouvez «dé-définir» la variable pour des commandes individuelles:
Les archiveurs sur Mac OS X 10.4 font également quelque chose de similaire, bien qu'ils utilisent une variable d'environnement différente: COPY_EXTENDED_ATTRIBUTES_DISABLE
la source
Cela devrait fonctionner:
la source
tar --version
donne GNU 1.23 ici.tar vzcf ...
pour voir si des fichiers incorrects ont été inclus.Frederik Deweerdt a donné une solution qui fonctionne sur GNU tar (utilisé sur Linux, Cygwin, FreeBSD, OSX, éventuellement d'autres), mais pas sur d'autres systèmes tels que NetBSD, OpenBSD ou Solaris.
POSIX ne spécifie pas la
tar
commande (car elle varie trop fortement entre les variantes d'Unix) et introduit lapax
commande à la place. L'option-w
signifie produire une archive (-r
extraits) et-x
sélectionner le format d'archive. L'option-s '!BRE!!'
exclut tous les fichiers dont le chemin correspond à l'expression régulière de base BRE.la source
Depuis
bsdtar 3.0.3 - libarchive 3.0.3
(et peut-être plus tôt), il existe une nouvelle option (spécifique à Mac OS X) à labsdtar
commande appelée--disable-copyfile
pour supprimer la création de._
fichiers. Les versions antérieures detar
n'ont pas l'--disable-copyfile
option, mais la définition de la variable d'environnementCOPYFILE_DISABLE=1
devrait fonctionner.la source
bsdtar 2.8.3 - libarchive 2.8.3
de10.7.5
l'--disable-copyfile
est , mais pas documentée disponible tout de même.Suivez ces étapes:
Recherchez tous les
._
fichiers et répertoriez-les en utilisant de-ls
sorte que vous puissiez voir tous les._
fichiers et enfin les supprimer.Créez l'archive .tar à l'aide de.
la source