Podczas tarowania niektórych plików w systemie OS X:
tar cvf foo.tar foo
Tworzy dodatkowy plik ._foo
w tarballu:
./._foo
foo
który pojawia się tylko wtedy, gdy wypakuję go w systemie operacyjnym innym niż Mac. Ale ._foo
nie istnieje w moim systemie plików! Co się dzieje? Jak mogę się tego pozbyć?
Odpowiedzi:
Tar OS OS używa formatu AppleDouble do przechowywania rozszerzonych atrybutów i list ACL.
Tar OS X wie także, jak przekonwertować członków ._ z powrotem do formatów macierzystych, ale pliki ._ są zwykle przechowywane, gdy archiwa są rozpakowywane na innych platformach. Możesz powiedzieć tarowi, aby nie dołączał metadanych, ustawiając COPYFILE_DISABLE na pewną wartość:
man copyfile
ls -l@
pokazuje klucze i rozmiary rozszerzonych atrybutów,ls -le
drukuje listy ACLxattr -l
wymienia klucze i wartości rozszerzonych atrybutówxattr -c
usuwa wszystkie rozszerzone atrybuty (-d nie można używać samodzielnie)chmod -N
usuwa listy ACLInformacje przechowywane jako atrybuty rozszerzone:
źródło
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
lubtype
zobaczyć, co jest w środku, co najmniej. I zwykle jest to prosty tekst, który został tam ręcznie wprowadzony. Nie wyrzuciłbym tego do tworzenia kopii zapasowych, ale może to być kosz na wypadek, gdybyś chciał dystrybuować coś między platformami, a zwłaszcza, jeśli jest to przez pomyłkę. Samo powiedzenie opcji ich pozostawienia jest dość ważne.Od
bsdtar 3.0.3 - libarchive 3.0.3
(i być może wcześniej) wbsdtar
komendzie pojawiła się nowa opcja,--disable-copyfile
aby wyłączyć tworzenie._
plików.źródło
bsdtar 2.8.3 - libarchive 2.8.3
z nie jest udokumentowany, ale mimo wszystko dostępne.10.7.5
--disable-copyfile
Te
._
pliki są widelce zasobów jak wspomniano w innych odpowiedzi. Istnieje jednak lepszy sposób na pozbycie się ich podczas używaniatar
:Istnieje również
dot_clean
narzędzie do czyszczenia tych plików (myślę, że zwykle jest używane do przechowywania danych zewnętrznych).źródło
Oto skrypt Pythona do usuwania tych plików. Powinien działać w dowolnym popularnym systemie operacyjnym.
Nie gruntownie przetestowane, używaj na własne ryzyko!
źródło
Znak kropki „.” Jest używany na platformie Mac jako wskaźnik ukrytego pliku. W systemie Windows jest to znak „$”. W każdym razie plik ._foo prawdopodobnie zawiera pewne informacje specyficzne dla systemu OS X i odradzam jego usuwanie. W innych systemach będziesz musiał to zignorować, albo ktoś może tu dostarczyć skryptu, który ukryje pliki i foldery zaczynające się od „.”.
źródło