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



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

800   4  

4 ответов:

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

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

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

export COPYFILE_DISABLE=true

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

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

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

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

См.: http://en.wikipedia.org/wiki/Fork_(file_system)

Comments

    Ничего не найдено.