Для ответа на другой вопрос вы можете установить недокументированную (?) Переменную среды COPYFILE_DISABLE, чтобы некоторые из поставляемых системой программ (включая tar ) не придавали особого значения ._*
членам архива. В частности, это помешает им:
хранить расширенные данные атрибутов (включая ветки ресурсов) в ._*
элементах архива
(т.е. не «загрязнять» архивы, созданные в Mac OS X, но предназначенные для использования в других системах), и
попытка извлечь расширенные атрибуты или ресурсы из элементов архива, названных как ._*
(то есть не интерпретировать ._*
элементы архива в архивах из других систем).
Значение, которое вы используете для переменной среды, не имеет значения (это может быть даже пустая строка). Значения, как 0
, и false
не будет повторно включить функцию. Единственное, что имеет значение, это то, установлена ли переменная (вы должны «сбросить» ее, чтобы снова включить функцию).
Вы можете использовать эту переменную в отдельных командах, используя возможности оболочек в стиле Борна ( sh , ksh , bash , zsh и т. Д.) Для добавления префиксов к командам с дополнительными переменными среды.
COPYFILE_DISABLE=1 tar cf new.tar …
Если вы сталкиваетесь с проблемой чаще, чем нет, то вы можете установить и экспортировать эту переменную в один из файлов инициализации вашей оболочки.
# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Когда вам нужно, вы можете сбросить переменную для отдельных команд.
(unset COPYFILE_DISABLE; tar cf somefile.tar …)
В этой системе Mac OS X 10.6 следующие команды, кажется, знают о COPYFILE_DISABLE:
/usr/bin/tar
(символическая ссылка на bsdtar
)
/usr/bin/bsdtar
/usr/bin/gnutar
/bin/pax
COPYFILE_DISABLE возникла в Mac OS X 10.5. Если вам нужна поддержка 10.4, у нее есть COPY_EXTENDED_ATTRIBUTES_DISABLE, которая работает таким же образом.