80 votes

Pourquoi est-ce que j'obtiens des fichiers comme ._foo dans mon tarball sur OS X ?

Lorsque j'utilise la commande tar sur certains fichiers dans OS X :

tar cvf foo.tar foo

Cela produit un fichier supplémentaire ._foo dans l'archive tar :

./._foo
foo

qui n'apparaît que si je l'extrait sur un système d'exploitation non-Mac. Mais ._foo n'existe pas sur mon système de fichiers ! Que se passe-t-il ? Comment puis-je m'en débarrasser ?

0 votes

Je déteste ça. Ça fait moche quand je navigue à l'intérieur des archives avec 7-Zip.

86voto

Igal Serban Points 1555

La commande tar d'OS X utilise le format AppleDouble pour stocker les attributs étendus et les ACL.

$ touch file1 file2 file3
$ xattr -w key value file1
$ chmod +a 'admin allow delete' file2
$ ls -le@ *
-rw-r--r--@ 1 lauri  staff  0 25 mai 07:09 file1
    key 5
-rw-r--r--+ 1 lauri  staff  0 25 mai 07:09 file2
 0: group:admin allow delete
-rw-r--r--  1 lauri  staff  0 25 mai 07:09 file3
$ tar -cf 1.tar *
$ tar -tf 1.tar
./._file1
file1
./._file2
file2
file3

La commande tar d'OS X sait également comment convertir les membres ._ en formats natifs, mais les fichiers ._ sont généralement conservés lors de l'extraction des archives sur d'autres plates-formes. Vous pouvez dire à tar de ne pas inclure les métadonnées en définissant COPYFILE_DISABLE sur une valeur quelconque:

$ COPYFILE_DISABLE=1 tar -cf 2.tar file*    
$ tar -tf 2.tar
file1
file2
file3
  • Les fonctions copyfile sont décrites dans man copyfile
  • ls -l@ montre les clés et les tailles des attributs étendus, ls -le affiche les ACL
  • xattr -l liste les clés et les valeurs des attributs étendus
  • xattr -c efface tous les attributs étendus (-d ne peut pas être utilisé seul)
  • chmod -N supprime les ACL
  • Les fichiers Zip créés sur OS X utilisent un dossier __MACOSX pour stocker des métadonnées similaires

Informations stockées en tant qu'attributs étendus:

  • Fourches de ressources (les fourches de ressources sont des attributs étendus depuis 10.4)
    • Icônes personnalisées définies dans Finder et les images des fichiers Icon\r
    • Métadonnées dans les fichiers PSD
    • Objets stockés dans les fichiers scpt, état de la fenêtre de l'Éditeur de scripts AppleScript, descriptions des scripts
  • Informations sur les alias (les alias cessent de fonctionner si les attributs étendus sont supprimés)
  • Statut de quarantaine ou URL source des fichiers téléchargés depuis internet
  • Commentaires Spotlight
  • Encodage des fichiers enregistrés avec TextEdit
  • Position du curseur des fichiers ouverts avec TextMate
  • Notes Skim

0 votes

J'ai GNU tar 1.15.1 par défaut sur MacOS X 10.5.8 (Leopard). La dernière version de GNU est 1.22 (Mars 2009). Téléchargé et construit : il ne semble pas avoir l'option '--no-xattrs' lorsqu'il est construit sur MacOS X.

2 votes

Au lieu d'exporter cette variable à l'ensemble du système, vous pouvez également utiliser env COPYFILE_DISABLE tar -cf archive.tar my_folder/.

0 votes

Une autre option est de les laisser telles quelles. C'est une petite taille d'impression et des informations que vous jetez. Cela agace aussi uniquement ceux qui veulent les voir sans apprendre ce qu'elles signifient. Ce ne sont pas des miniatures ennuyeuses (qui prennent beaucoup de place) ou la crap de DS de Finder (c'est seulement pour Finder) et s'ils existent, c'est généralement parce qu'ils contiennent des données pertinentes.

17voto

Wilson Freitas Points 396

À partir de bsdtar 3.0.3 - libarchive 3.0.3 (et peut-être plus tôt) il y a une nouvelle option pour la commande bsdtar appelée --disable-copyfile pour supprimer la création des fichiers ._.

# sur Mac OS X
# /usr/bin/tar -> bsdtar
ls -l /usr/bin/tar    

# à partir de la documentation de bsdtar
--disable-copyfile
        Spécifique à Mac OS X. Désactive l'utilisation de copyfile(3).

4 votes

Avec bsdtar 2.8.3 - libarchive 2.8.3 de 10.7.5, l'option --disable-copyfile n'est pas documentée mais disponible néanmoins.

0 votes

1voto

Ryan Fox Points 5181

Les fichiers ._ sont des fourches de ressources comme mentionné dans d'autres réponses. Cependant, il y a une meilleure façon de s'en débarrasser lors de l'utilisation de tar:

export COPYFILE_DISABLE=true
tar cvf foo.tar foo

Il existe également un utilitaire dot_clean pour nettoyer ces fichiers (je pense qu'il est généralement utilisé pour le stockage externe).

0 votes

Merci! Consultez la fin de ma réponse ci-dessus pour cette solution.

0 votes

Dot_clean ne fonctionne pas pour cela car tar crée les fichiers

0voto

BlackVegetable Points 4511

Voici un script python pour supprimer ces fichiers. Devrait fonctionner dans n'importe quel système d'exploitation populaire.

Pas entièrement testé, utilisez à vos propres risques!

import os
import os.path

def dot_clean(dossier):
    fichiers = os.listdir(dossier)
    for fichier in fichiers:
        nom_complet = dossier + "/" + fichier
        if os.path.isdir(nom_complet):
            dot_clean(nom_complet)
        elif fichier.startswith("._"):
            os.remove(nom_complet)

dot_clean('.')

1 votes

Eh bien, sauf pour OS X avec HFS+...

0 votes

Pourquoi pas? Pouvez-vous suggérer comment réparer?

1 votes

Ces fichiers n'existent en réalité pas sur HFS+, car le système de fichiers peut stocker les métadonnées de manière interne. Ces fichiers sont une solution de contournement pour les systèmes de fichiers qui ne le prennent pas en charge, par exemple lorsque vous transférez des fichiers de HFS+ vers une clé USB FAT, ils apparaissent soudainement, et lorsqu'ils sont retransférés, ils disparaissent.

-3voto

marc.d Points 2512

Le caractère point, ".", est utilisé sur la plateforme Mac comme indicateur de fichier caché. Sur Windows, c'est le caractère "$". Quoi qu'il en soit, le fichier ._foo contient probablement des informations spécifiques à OS X et je vous déconseille de le supprimer. Sur d'autres systèmes, vous devrez l'ignorer, ou quelqu'un ici pourrait peut-être vous fournir un script qui masquera les fichiers et dossiers commençant par un ".".

0 votes

C'est tout des métadonnées, principalement des éléments tels que des icônes personnalisées, l'application qui a créé le fichier, etc. Il est sûr de le supprimer.

0 votes

Toutefois, si vous utilisez principalement un Mac, je vous recommanderais de le garder. Si vous utilisez plus Windows que OS X, alors allez-y et supprimez-le.

0 votes

(@dreamlax) Il est vrai que beaucoup des données stockées dans les attributs étendus sont des métadonnées qu'il peut être sûr de supprimer, mais ce n'est pas toujours le cas. En particulier, lorsque des fichiers avec des "fourches de ressources" sont stockés sur quelque chose qui n'est pas dérivé de HFS (FAT, UFS, tar, etc.), ces fichiers '. *' sont utilisés pour contenir les données des fourches de ressources (parmi d'autres attributs étendus). Alors que de nombreux formats de fichiers abandonnent l'utilisation des fourches de ressources (vers des bundles), il y a des fichiers où des données critiques sont stockées dans la fourche de ressources (parfois les données de ressources sont les seules données).

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