Est-ce que quelqu'un sait pourquoi tar
n'inclut pas les fichiers nommés .__init__.py
(notez le point)?
$ mkdir /tmp/work && cd /tmp/work
$ mkdir foo
$ touch foo/.__init__.py
$ touch foo/.namespace__init__.py
$ tar czf foo.tar.gz foo
$ mkdir e && mv foo.tar.gz e/ && cd e/
$ tar zxf foo.tar.gz
$ ls -al foo/
total 0
drwxr-xr-x 2 sridharr wheel 102 14 Mar 17:16 .
drwxr-xr-x 3 sridharr wheel 136 14 Mar 17:17 ..
-rw-r--r-- 1 sridharr wheel 0 14 Mar 17:16 .namespace__init__.py
$
$ echo ".__init__.py file is missing. WTF? This is OSX 10.6"
Mise à jour : tar semble ignorer les fichiers commençant par des ._
caractères; Pourquoi?
Mise à jour 2 : Je ne peux pas reproduire cela sous Linux.
tar
exclusion._
.Réponses:
Trouvé la solution. Sur les systèmes Apple, les fichiers commençant par
._
contient les ressources d'un autre fichier. Ce ne sont pas des fichiers normaux qui peuvent être copiés et déplacés.la source
Certaines variables d'environnement non documentées (?) Peuvent être utilisées pour désactiver le traitement spécial d'attributs étendus et / ou de fourchettes de ressources dans tar (et pax , à sa juste valeur). rsync a
-E
/--extended-attributes
option pour activer ( ! ) cette manipulation, mais sur certains non-Apple rsync s-E
signifie à la--executability
place.Sur Mac OS X 10.4 (la première version qui a créé ces
._*
membres d'archive AppleDouble ), la variable d'environnement estCOPY_EXTENDED_ATTRIBUTES_DISABLE
. Dans Leopard et Snow Leopard, la variable estCOPYFILE_DISABLE
. En règle générale, les variables doivent simplement être définies. N'importe quelle valeur fera l'affaire (même la chaîne vide), maistrue
semble être traditionnelle. Ainsi:La définition de cette variable a les effets suivants:
._*
membres d'archives lors de l'archivage de fichiers avec des attributs étendus.._*
membres d'archives lors de l'archivage de._*
fichiers réels .._*
membres de l'archive sont extraits en tant que fichiers simples au lieu de restaurer les attributs étendus dans le fichier associé.En bref, définir ces variables rend tar , et al. agissent comme ils le feraient sur (par exemple) Linux.
Si vous avez rarement besoin d'archiver des fichiers dotés d'attributs étendus ou de ressources, et que vous ayez éventuellement besoin d'archiver ou d'extraire des
._*
fichiers réels , vous pouvez envisager de définir et d'exporter ces variables dans l'un de vos fichiers d'initialisation du shell:Ces
._*
fichiers sont également utilisés pour stocker des attributs étendus sur des systèmes de fichiers qui ne les prennent pas en charge, le plus souvent les variantes FAT. Ces variables ne vous aideront pas vraiment lorsque vous manipulez des._*
fichiers sur d’autres systèmes de fichiers, mais uniquement sur des archives.Le système de fichiers HFS + utilisé dans Mac OS X est parfaitement capable de stocker des
._*
fichiers réels . Ainsi, une fois que vous utilisez les variables pour extraire les fichiers dans le système de fichiers, vous pouvez y accéder correctement de toutes les manières habituelles.la source
Je ne peux pas répliquer ceci sur un hôte Debian 5.0. Peut-être existe-t-il un bogue dans la version de tar installée sur le système que vous utilisez? Quelle version de * nix utilisez-vous?
la source