In un commento hai pubblicato che stai lavorando su un sistema Mac OS X. Questo è un indizio importante per lo scopo di questi ._*
file.
Queste ._*
voci di archivio sono pezzi di dati AppleDouble che contengono le informazioni aggiuntive associate al file corrispondente (quello senza ._
prefisso). Sono generati dalla famiglia di funzioni copyfile (3) specifica per Mac OS X. I BLOB AppleDouble memorizzano i dati di controllo di accesso (ACL) e gli attributi estesi (comunemente, flag Finder e "fork di risorse", ma xattrs possono essere utilizzati per archiviare qualsiasi tipo di dati).
Gli strumenti di archiviazione di Mac OS X forniti dal sistema ( bsdtar
(anche con collegamento simbolico tar
), gnutar
e pax
) genereranno un ._*
membro di archivio per qualsiasi file a cui siano associate informazioni estese; in modalità "unarchive", decodificheranno anche quei membri dell'archivio e applicheranno le informazioni estese risultanti al file associato. Questo crea un archivio di "piena fedeltà" per l'uso su sistemi Mac OS X preservando e successivamente estraendo tutte le informazioni che il filesystem HFS + può memorizzare.
Gli strumenti di archiviazione corrispondenti su altri sistemi non sanno dare una gestione speciale a questi ._*
file, quindi vengono decompressi come file normali. Poiché tali file sono abbastanza inutili su altri sistemi, sono spesso visti come "file spazzatura". Di conseguenza, se un sistema non Mac OS X genera un archivio che include file normali che iniziano con ._
, gli strumenti di archiviazione di Mac OS X proveranno a decodificare tali file come informazioni estese.
Esiste tuttavia un modo non documentato (?) Per far sì che gli archivi di Mac OS X forniti dal sistema si comportino come fanno su altri sistemi Unixy: la variabile d'ambiente COPYFILE_DISABLE. L'impostazione di questa variabile (su qualsiasi valore, anche la stringa vuota), impedirà la generazione degli archivi._*
archivi di membri di archivio per rappresentare qualsiasi informazione estesa associata ai file archiviati. La sua presenza impedirà inoltre agli archivisti di provare a interpretare tali membri dell'archivio come informazioni estese.
COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …
È possibile impostare questa variabile nel file di inizializzazione della shell se si desidera lavorare in questo modo il più delle volte.
# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Quindi, quando è necessario riattivare la funzione (per conservare / ripristinare le informazioni estese), è possibile "annullare l'impostazione" della variabile per i singoli comandi:
(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)
Anche gli archiviatori su Mac OS X 10.4 fanno qualcosa di simile, sebbene utilizzino una variabile di ambiente diversa: COPY_EXTENDED_ATTRIBUTES_DISABLE