За ответ на другой вопрос вы можете установить недокументированное (?) переменная окружения COPYFILE_DISABLE, чтобы некоторые из поставляемых системой программ (включая tar) не придавали особого значения членам архива ._*
. В частности, это помешает им:
хранение расширенных данных атрибутов (включая ветки ресурсов) в ._*
элементах архива
(т.е. не «загрязнять» архивы, созданные в Mac OS X, но предназначенные для использования в других системах), и
попытка извлечь расширенные атрибуты или ресурсы из членов архива с именем like ._*
(т.е. не следует неверно истолковывать элементы архива ._*
в архивах других систем).
Значение, которое вы используете для переменной среды, не имеет значения (это может быть даже пустая строка). Значения, такие как 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, которая работает таким же образом.