Команда tar в mac os x добавляет скрытые файлы, почему?

Пишу свой архиватор tar. Все работает нормально в моем приложении (даже чтение tars, созданных с помощью других инструментов), однако я не могу заставить свои tar-файлы работать со сторонними программами для чтения tar-файлов. Итак, я попытался создать tar-файл в командной строке, построив его с помощью моего кода и двоичного кода, сравнивая их.

Но, похоже, есть проблема:

У меня есть текстовый файл Test.txt, который я хочу добавить в свой tar, поэтому я запускаю следующую команду в терминале:

tar -c -f x.tar Test.txt

При этом:

tar -tf x.tar

Получаю следующий список:

./._Test.txt
Test.txt

Это находится в Терминале в Mac OS X Lion.

Откуда этот ./._Test.txt файл? Я не вижу этого, когда выполняю ls -a

После проверки содержимого tar это, похоже, какие-то двоичные данные, но я понятия не имею, откуда они.


person Joris Mans    schedule 07.01.2012    source источник


Ответы (4)


Это представление файловой вилки ресурсов / расширенных атрибутов.

Попробуйте ls -l@ Test.txt и xattr -l Test.txt, чтобы увидеть, какие дополнительные вещи OSX добавила к файлу.

person blahdiblah    schedule 07.01.2012

Вы можете добавить в свой файл bashrc следующее:

export COPYFILE_DISABLE=true

Или вы можете добавить эту опцию в вашу tar команду во время извлечения

tar -xzpvf x.tar --exclude="._*"
person jaypal singh    schedule 07.01.2012
comment
Параметр exclude здесь не работает, а команда экспорта работает. - person Joris Mans; 07.01.2012
comment
--exclude у меня сработал (после того, как каким-то образом попал в ситуацию, когда распаковка даже на OS X засоряла все ._-файлами). - person David Moles; 30.01.2015
comment
Во многих случаях слишком жадные. Мы хотим настроить таргетинг на КОПИФИЛЫ, а не на ВСЕ СКРЫТЫЕ ФАЙЛЫ - person Sandwich; 09.10.2020

Что касается bsdtar 3.0.3 - libarchive 3.0.3 (и, возможно, более ранней версии), для команды bsdtar имеется новая (специфичная для Mac OS X) опция --disable-copyfile для подавления создания ._ файлов.

person mdm    schedule 11.03.2012
comment
С bsdtar 2.8.3 - libarchive 2.8.3 из 10.7.5 --disable-copyfile не документирован, но, тем не менее, доступен. - person Stefan Schmidt; 01.05.2013

Таким образом OSX хранит вилки файловой системы, когда целевая файловая система их не поддерживает.

См .: http://en.wikipedia.org/wiki/Fork_%28file_system%29

person al01    schedule 07.01.2012