Вы опубликовали в комментарии, что вы работаете в системе Mac OS X. Это важный ключ к цели этих._*
файлов.
Эти ._*
записи архива являются порциями данных AppleDouble, которые содержат дополнительную информацию, связанную с соответствующим файлом (который без ._
префикса). Они генерируются специфичным для Mac OS X копируемым файлом (3) . В двоичных объектах AppleDouble хранятся данные контроля доступа (ACL) и расширенные атрибуты (обычно это флаги Finder и «ветки ресурсов», но xattrs можно использовать для хранения любых данных).
Системные инструменты архивирования Mac OS X ( bsdtar
также обозначенные как tar
) gnutar
, иpax
) сгенерируют элемент ._*
архива для любого файла, с которым связана любая расширенная информация; в «разархивированном» режиме они также будут декодировать эти элементы архива и применять полученную расширенную информацию к связанному файлу. Это создает архив «полной точности» для использования в системах Mac OS X путем сохранения и последующего извлечения всей информации, которую может хранить файловая система HFS +.
Соответствующие инструменты архивирования в других системах не знают, как обрабатывать эти ._*
файлы, поэтому они распаковываются как обычные файлы. Поскольку такие файлы довольно бесполезны в других системах, они часто рассматриваются как «ненужные файлы». Соответственно, если система, не относящаяся к Mac OS X, генерирует архив, включающий обычные файлы, которые начинаются с ._
, инструменты разархивирования Mac OS X будут пытаться декодировать эти файлы как расширенную информацию.
Однако существует недокументированный (?) Способ заставить поставляемые системой архиваторы Mac OS X вести себя так же, как в других системах Unixy: переменная среды COPYFILE_DISABLE. Установка этой переменной (любое значение, даже пустая строка) не позволит архиваторам создавать ._*
элементы архива для представления любой расширенной информации, связанной с архивированными файлами. Его присутствие также не позволит архиваторам пытаться интерпретировать таких участников архива как расширенную информацию.
COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …
Вы можете установить эту переменную в файле инициализации вашей оболочки, если хотите работать чаще, чем нет.
# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Затем, когда вам нужно повторно включить функцию (чтобы сохранить / восстановить расширенную информацию), вы можете «сбросить» переменную для отдельных команд:
(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)
Архиваторы в Mac OS X 10.4 также делают нечто подобное, хотя они используют другую переменную среды: COPY_EXTENDED_ATTRIBUTES_DISABLE