Wenn ich bestimmte Dateien in OS X tariere:
tar cvf foo.tar foo
Es wird eine zusätzliche Datei ._foo
im Tarball erstellt:
./._foo
foo
Das wird nur angezeigt, wenn ich es auf einem Nicht-Mac-Betriebssystem extrahiere. Existiert ._foo
aber nicht auf meinem Dateisystem! Was ist los? Wie kann ich es loswerden?
Antworten:
OS X tar verwendet das AppleDouble-Format, um erweiterte Attribute und ACLs zu speichern.
OS X's tar weiß auch, wie man die ._-Member zurück in native Formate konvertiert, aber die ._-Dateien bleiben normalerweise erhalten, wenn Archive auf anderen Plattformen extrahiert werden. Sie können tar anweisen, die Metadaten nicht einzuschließen, indem Sie COPYFILE_DISABLE auf einen bestimmten Wert setzen:
man copyfile
ls -l@
Zeigt die Schlüssel und Größen der erweiterten Attribute an undls -le
druckt ACLsxattr -l
listet die Schlüssel und Werte erweiterter Attribute aufxattr -c
löscht alle erweiterten Attribute (-d kann nicht alleine verwendet werden)chmod -N
löscht ACLsInformationen, die als erweiterte Attribute gespeichert werden:
quelle
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
odertype
sehen was drin ist, zumindest. Und es ist normalerweise ein einfacher Text, der dort manuell eingegeben wurde. Ich würde es nicht zum Sichern wegwerfen, aber es kann Müll sein, wenn Sie etwas plattformübergreifend verteilen möchten, insbesondere, wenn es versehentlich da ist. Nur zu sagen, dass die Option, sie zu verlassen, ziemlich gültig ist.Ab
bsdtar 3.0.3 - libarchive 3.0.3
(und vielleicht schon früher) enthält derbsdtar
Befehl eine neue Option, mit der--disable-copyfile
die Erstellung von._
Dateien unterdrückt werden kann.quelle
bsdtar 2.8.3 - libarchive 2.8.3
der10.7.5
die--disable-copyfile
nicht dokumentiert ist , dennoch aber zur Verfügung.Die
._
Dateien sind Ressourcengabeln, wie in anderen Antworten erwähnt. Es gibt jedoch einen besseren Weg, um sie loszuwerden, wenn Sietar
:Es gibt auch ein
dot_clean
Hilfsprogramm zum Bereinigen dieser Dateien (ich denke, es wird normalerweise für die externe Speicherung verwendet).quelle
Hier ist ein Python-Skript zum Entfernen dieser Dateien. Sollte in jedem gängigen Betriebssystem funktionieren.
Nicht gründlich getestet, Verwendung auf eigenes Risiko!
quelle
Das Punktzeichen "." Wird auf der Mac-Plattform als Anzeige für versteckte Dateien verwendet. Unter Windows ist dies das Zeichen "$". Wie auch immer, die ._foo-Datei enthält wahrscheinlich einige OS X-spezifische Informationen, und ich würde davon abraten, sie zu löschen. Auf anderen Systemen müssen Sie es ignorieren, oder jemand hier kann Ihnen ein Skript bereitstellen, das Dateien und Ordner versteckt, die mit einem "." Beginnen.
quelle