Подтвердить что ты не робот

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

Я пишу свой собственный архиватор. Все работает отлично в моем приложении (даже чтение следов, сгенерированных другими инструментами), однако я не могу заставить файлы 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 это, как представляется, несколько двоичных данных, но я понятия не имею, откуда оно взялось.

4b9b3361

Ответ 1

Это представление файлового ресурса fork/extended attributes.

Попробуйте ls [email protected] Test.txt и xattr -l Test.txt, чтобы узнать, какие дополнительные файлы OSX привязаны к файлу.

Ответ 2

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

export COPYFILE_DISABLE=true

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

tar -xzpvf x.tar --exclude="._*"

Ответ 3

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

Ответ 4

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

Смотрите: http://en.wikipedia.org/wiki/Fork_ (file_system)