W komentarzu napisałeś, że pracujesz w systemie Mac OS X. Jest to ważna wskazówka na temat celu tych ._*
plików.
Te ._*
wpisy archiwalne są fragmentami danych AppleDouble, które zawierają dodatkowe informacje związane z odpowiednim plikiem (ten bez ._
prefiksu). Są one generowane przez specyficzną dla Mac OS X rodzinę funkcji copyfile (3) . Obiekty blob AppleDouble przechowują dane kontroli dostępu (ACL) i rozszerzone atrybuty (zwykle flagi Findera i „widelce zasobów”, ale xattrs mogą być używane do przechowywania dowolnego rodzaju danych).
Dostarczone przez system narzędzia do archiwizacji Mac OS X ( bsdtar
(również symbolizowane jako tar
), gnutar
i pax
) wygenerują element ._*
archiwum dla każdego pliku, z którym powiązane są dowolne informacje rozszerzone; w trybie „niezarchiwizowanym” dekodują również tych członków archiwum i stosują uzyskane rozszerzone informacje do powiązanego pliku. Tworzy to archiwum „pełnej wierności” do użytku w systemach Mac OS X, zachowując, a następnie wyodrębniając wszystkie informacje, które może przechowywać system plików HFS +.
Odpowiednie narzędzia do archiwizacji w innych systemach nie wiedzą, jak obsługiwać te ._*
pliki, więc są one rozpakowywane jak zwykłe pliki. Ponieważ takie pliki są dość bezużyteczne w innych systemach, często są postrzegane jako „niepotrzebne pliki”. Odpowiednio, jeśli system inny niż Mac OS X wygeneruje archiwum zawierające normalne pliki, które zaczynają się od ._
, narzędzia do archiwizacji Mac OS X spróbują dekodować te pliki jako informacje rozszerzone.
Istnieje jednak nieudokumentowany (?) Sposób, aby dostarczone przez system archiwizatory Mac OS X zachowywały się tak, jak w innych systemach Unixy: zmienna środowiskowa COPYFILE_DISABLE. Ustawienie tej zmiennej (na dowolną wartość, nawet pusty ciąg znaków) uniemożliwi archiwizatorom generowanie ._*
elementów archiwalnych do reprezentowania jakichkolwiek rozszerzonych informacji związanych z zarchiwizowanymi plikami. Jego obecność uniemożliwi również archiwizatorom interpretację takich członków archiwum jako rozszerzonych informacji.
COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …
Możesz ustawić tę zmienną w pliku inicjalizacji powłoki, jeśli chcesz pracować w ten sposób częściej niż nie.
# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Następnie, gdy trzeba ponownie włączyć tę funkcję (aby zachować / przywrócić rozszerzone informacje), można „rozbroić” zmienną dla poszczególnych poleceń:
(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)
Archiwa w systemie Mac OS X 10.4 również robią coś podobnego, chociaż używają innej zmiennej środowiskowej: COPY_EXTENDED_ATTRIBUTES_DISABLE