Когда я tar некоторые файлы в OS X:
tar cvf foo.tar foo
Он создает дополнительный файл ._foo
в tarball:
./._foo
foo
который появляется только в том случае, если я извлекаю его в операционной системе не Mac. Но ._foo
не существует в моей файловой системе! В чем дело? Как я могу избавиться от этого?
Ответы:
Tar OS X использует формат AppleDouble для хранения расширенных атрибутов и ACL.
Tar OS X также знает, как преобразовать элементы ._ обратно в собственные форматы, но файлы ._ обычно сохраняются при извлечении архивов на других платформах. Вы можете указать tar не включать метаданные, установив для COPYFILE_DISABLE значение:
man copyfile
ls -l@
показывает ключи и размеры расширенных атрибутов,ls -le
печатает ACLxattr -l
перечисляет ключи и значения расширенных атрибутовxattr -c
очищает все расширенные атрибуты (-d нельзя использовать отдельно)chmod -N
удаляет ACLИнформация хранится в виде расширенных атрибутов:
источник
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
илиtype
, по крайней мере, посмотреть, что внутри. И это обычно что-то простой текст, который был введен вручную. Я бы не выбрасывал его для резервного копирования, но это может быть мусором, если вы хотите распространять что-то кроссплатформенное и особенно если это происходит по ошибке. Просто сказать, что возможность их оставить, вполне допустимо.Начиная с
bsdtar 3.0.3 - libarchive 3.0.3
(и, возможно, ранее)bsdtar
команды, вызываемой--disable-copyfile
для подавления создания._
файлов , появилась новая опция .источник
bsdtar 2.8.3 - libarchive 2.8.3
из не документирована , но тем не менее доступны.10.7.5
--disable-copyfile
Эти
._
файлы вилки ресурсов , как указано в других ответах. Однако есть лучший способ избавиться от них при использованииtar
:Есть также
dot_clean
утилита для очистки этих файлов (я думаю, что она обычно используется для внешнего хранилища).источник
Вот скрипт Python для удаления этих файлов. Должно работать в любой популярной ОС.
Не тщательно протестированы, используйте на свой страх и риск!
источник
Символ точки, ".", Используется на платформе Mac в качестве индикатора скрытого файла. В Windows это символ «$». В любом случае, файл ._foo, вероятно, содержит некоторую специфическую информацию для OS X, и я бы рекомендовал не удалять ее. В других системах вам придется это игнорировать, иначе кто-то из вас может предоставить вам скрипт, который будет скрывать файлы и папки, начинающиеся с «.».
источник