Получите mac tar, чтобы прекратить ставить ._ * имена файлов в архивах tar [duplicate]

  

Возможный дубликат:
Почему я получаю файлы как ._foo в моем tarball на OS X?

Я создаю сценарии autoconf на Mac. Когда tar запускается, он помещает все эти имена ._ foobar в архив:

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

Теперь, что происходит, файловая система Apple HFS помещает свойства файла в имена ._ foobar , чтобы их можно было восстановить в другой системе Mac. Но я не хочу их ... они просто для меня. Есть ли способ их подавить?

38 голосов | спросил vy32 19 MarpmSat, 19 Mar 2011 22:21:15 +03002011-03-19T22:21:15+03:0010 2011, 22:21:15

3 ответа


60

Per ответ на другой вопрос , вы можете установить недокументированную переменную среды (?) 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, который работает одинаково.

ответил Chris Johnsen 21 MarpmMon, 21 Mar 2011 12:52:36 +03002011-03-21T12:52:36+03:0012 2011, 12:52:36
0

Не эксперт, но маленький поисковик нашел это: http://www.ofzenandcomputing.com/zanswers/3422

и это: http://hintsforums.macworld.com/archive/index.php/трет-28703.html

Вторая команда выглядит так, как будто она может быть включена в скрипт ... вы не сможете предотвратить создание файлов ресурсов fork, но впоследствии сможете их автоматически удалить.

edit: Я должен был упомянуть, что это может иметь плохие результаты, использовать на свой страх и риск.

ответил CreeDorofl 19 MarpmSat, 19 Mar 2011 22:32:03 +03002011-03-19T22:32:03+03:0010 2011, 22:32:03
0

Вы можете попробовать составить свой собственный tar или установить его из Macports или Fink, если он доступен (у Homebrew его нет). С некоторой «удачей» он должен быть не осведомлен о метаданных OS X и пропустить создание этих файлов.

ответил Daniel Beck 21 MaramMon, 21 Mar 2011 08:49:03 +03002011-03-21T08:49:03+03:0008 2011, 08:49:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132