File imprevisti che appaiono con tar su OS X 10.6.4

3

Quando impacchettamento e decompressione di un file tar su OS X oggi, mi trovo a guardare cose come:

tar tzf ../tanuki-3.5.6.tar.gz  
./._.
./ 
./._bin

Non credo di aver mai visto questi file extra che iniziano con un '.' prima. Se io x il file, ls -a non li mostra. Cosa sono?

    
posta bmargulies 15.11.2010 - 16:10
fonte

3 risposte

4

Sono fork delle risorse. Il filesystem del Mac supporta più fork e alcuni file Mac hanno due, un fork di dati e un fork di risorse. La maggior parte dei file system non supporta più fork, quindi gli strumenti suddivideranno il fork delle risorse in un file separato con prefisso ._ .

    
risposta data 15.11.2010 - 18:32
fonte
1

Penso che scoprirai che quei file (o directory) sono stati impacchettati all'interno del file .tar.gz. Non normale, ma qualsiasi file può andare in un tar.

    
risposta data 15.11.2010 - 18:26
fonte
1

Comportamento

Per motivi di chiarezza sul problema, il seguente MWE illustra cosa sta succedendo:

cas$ tar --version
bsdtar 2.6.2 - libarchive 2.6.2
cas$ mkdir o
cas$ touch o/a o/b
cas$ tar cv o > /dev/null
a ./._o
a o
a o/._a
a o/a
a o/._b
a o/b

Quindi ogni file e directory ha un file ._ aggiunto al file tar nella stessa directory, come diceva mipadi. Questo tar, chiamiamolo mactar, evita le collisioni ignorando i file che iniziano con ._ nell'input, ad es. Con:

mkdir p && touch p/._a p/._b
cas$ tar cv p p/._b > /dev/null
a ./._p
a p

l'esistenza del file p /._ viene semplicemente ignorata da tar, e così pure il file p /._ b, anche se questo è esplicitamente incluso nel richiamo CLI. Pertanto, non si possono verificare collisioni.

Controllo tar

Se hai uno sfondo Unix, probabilmente non sei soddisfatto di questo comportamento. Il mactar manca della documentazione prevista: la pagina man è per il normale tar gratuito di BSD e non menziona questa idiosincrasia.

Tuttavia, la generazione dei file per le meta fork può essere disabilitata impostando una variabile di ambiente, quindi: export COPYFILE_DISABLE=true .

Storia

Non sono abbastanza chiaro sui tempi, ma OSX ha iniziato con il normale tar Free BSD, quindi Apple ha diffuso un'ulteriore utility, tar_hfs che era l'antenato di mactar, e quindi, penso con Leopard, ha cambiato /usr/bin/tar essere mactar.

    
risposta data 13.11.2011 - 22:29
fonte

Leggi altre domande sui tag