48 votes

Faire en sorte que mac tar arrête de mettre des noms de fichiers ._* dans les archives tar

Duplicata possible :
Pourquoi j'obtiens des fichiers comme ._foo dans mon archive sur OS X ?

Je crée des scripts d'autoconf sur un Mac. Quand tar s'exécute, il met tous ces fichiers ._ à jour. foobar noms dans les archives :

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

Ce qui se passe, c'est que le système de fichiers HFS d'Apple place les propriétés du fichier dans le fichier ._. foobar afin qu'ils puissent être restaurés sur un autre système Mac. Mais je n'en veux pas --- ils ne sont que des déchets pour moi. Existe-t-il un moyen de les supprimer ?

76voto

Chris Johnsen Points 36743

Par une réponse à une autre question vous pouvez définir la variable d'environnement non documentée ( ?) COPYFILE_DISABLE afin d'empêcher plusieurs programmes fournis par le système (notamment tar ) de donner une signification particulière à ._* membres des archives. En particulier, cela les empêchera de :

  • le stockage des données d'attributs étendues (y compris les fourchettes de ressources) dans ._* membres des archives
    (c'est-à-dire ne pas "polluer" les archives créées sur Mac OS X mais destinées à être utilisées sur d'autres systèmes), et

  • en essayant d'extraire des attributs ou des ressources étendus de membres d'archives nommés comme ._*
    (c'est-à-dire ne pas interpréter de manière erronée ._* membres d'archives dans les archives d'autres systèmes).

La valeur que vous utilisez pour la variable d'environnement n'est pas importante (il peut même s'agir d'une chaîne vide). Des valeurs comme 0 y false ne réactive pas la fonction. La seule chose qui compte est de savoir si la variable est activée (vous devez la "désactiver" pour réactiver la fonction).

Vous pouvez utiliser cette variable sur des commandes individuelles en profitant de la capacité des shells de type Bourne ( sh , ksh , bash , zsh etc.) pour préfixer les commandes avec des variables d'environnement supplémentaires.

COPYFILE_DISABLE=1 tar cf new.tar …

Si vous rencontrez ce problème plus souvent qu'à votre tour, alors vous pourriez vouloir définir et exporter cette variable dans l'un des fichiers d'initialisation de votre Shell.

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

Lorsque vous en avez besoin, vous pouvez alors désactiver la variable pour les commandes individuelles.

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

Sur ce système Mac OS X 10.6, les commandes suivantes semblent toutes connaître COPYFILE_DISABLE :

  • /usr/bin/tar (un lien symbolique vers bsdtar )
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

COPYFILE_DISABLE est né sous Mac OS X 10.5. Si vous devez prendre en charge la version 10.4, il existe COPY_EXTENDED_ATTRIBUTES_DISABLE qui fonctionne de la même manière.

0voto

CreeDorofl Points 2191

Je ne suis pas un expert, mais une petite recherche sur Google a permis de trouver ceci : http://www.ofzenandcomputing.com/zanswers/3422

et ceci : http://hintsforums.macworld.com/archive/index.php/t-28703.html

La deuxième commande semble pouvoir être incorporée dans un script... vous ne pourrez peut-être pas empêcher la création de fichiers resource fork mais vous pourrez les supprimer automatiquement par la suite.

edit : J'aurais dû mentionner que cela peut avoir de mauvais résultats, à utiliser à vos propres risques.

0voto

Daniel Beck Points 105590

Vous pouvez essayer de compiler votre propre tar ou l'installer à partir de Macports ou Fink si disponible (Homebrew ne l'a pas). Avec un peu de "chance", il devrait ignorer les métadonnées OS X et ne pas créer ces fichiers.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X