Путаница с метаданными | Именные вилки | Расширенные атрибуты | Ресурс Форк - HFS +

10

Я думаю, что существует некоторая общая путаница в отношении между всеми четырьмя из этих предметов, разбросанных по сети. Я хотел уладить это.

  1. Являются ли именованные вилки такими же, как расширенные атрибуты ? Если нет, то каковы расширенные атрибуты?
  2. Является ли вилка ресурсов все еще реализованы в виде вилки или в качестве расширенного атрибута ? Если это реализовано как-то иначе, то как?
  3. Метаданные хранятся с файлом (создателем, датой изменения ...) есть какое - либо отношение или перекрытие в терминологии между тремя другими упомянутым в тексте. Примером могут служить расширенные атрибуты, просто дополнительные пары метаданных (ключ + значение), хранящиеся в файле.

Любые ответы, которые могут прояснить, как все четыре из них взаимосвязаны, особенно в отношении трех вопросов, будут высоко оценены, и будут способствовать урегулированию споров, которые я вижу, возникающих между различными ресурсами.

rubixibuc
источник
Для изучения HFS Plus : руководство пользователя и справочник fileXray (PDF, 1,8 МБ, 173 страницы) очень полезны. Я пользователь fileXray . Также: Техническое примечание TN1150: формат тома HFS Plus является устаревшим, устарел Apple, но по-прежнему полезен для многих целей.
Грэм Перрин

Ответы:

5

Путаница возникает из-за того, что отношения между этими понятиями сложны и со временем изменились. В современных системах различие между именованным ответвлением и расширенным атрибутом является в значительной степени академическим.

Для расширенного атрибута фактические данные сохраняются в записи данных атрибута.

Для форка хранится список блоков выделения диска, которые содержат данные. Ресурсная вилка все еще является форком.

Основные метаданные файловой системы хранятся в отдельных элементах самой записи файловой системы, независимо от атрибутов и именованных ссылок на ветвления.

GregW
источник
1
Но действительно ли расширенный атрибут хранится как его собственный форк, или есть ли форк для расширенных атрибутов? Как это связано с самой последней версией OSX?
Rubixibuc
1
Я не понимаю, когда вы говорите «атрибут», вы имеете в виду «расширенный атрибут». Если это так, где хранится запись атрибута. Хранится ли она как часть структуры файловой системы HFS + или хранится в какой-либо базе данных? Пожалуйста, ответьте на первый комментарий, когда сможете.
Rubixibuc
2
Сожалею. Я не часто бываю здесь и не видела ваши дополнительные вопросы, пока не пришла сюда искать что-то еще. Расширенным атрибутом является именованная вилка. Я использовал атрибут как сокращение для «расширенного атрибута». Записи атрибутов хранятся в частной части файловой системы, которая называется деревом атрибутов. Вы можете считать это формой базы данных. Эти данные для каждого атрибута может или не может быть в том , что дерево в зависимости от того, насколько она велика.
GregW
«… Метаданные файловой системы хранятся в выделенных элементах записи файловой системы …» - вместо этого, я бы, вероятно, сказал «… метаданные файла хранятся в выделенных элементах записи для файла …»
Грэхам Перрин
Может быть , ничего не стоит , что в то время как com.apple.FinderInfoможет показаться , в качестве расширенного атрибута Extended Finder Info (обычно date_added, extended_flagsплюс три зарезервированных полей) не является не расширенный атрибут.
Грэм Перрин
2

Я не эксперт в этом, но я прочитал немного, чтобы попытаться понять, что происходит.

Я бы сказал, «Путаница возникает из-за того, что:

  • связь между этими понятиями сложна и
  • со временем изменился и
  • Apple реализовала как программные API-интерфейсы, так и такие инструменты, как ls или cp, чтобы скрыть многие различия между концепциями ».

AIUI, файл каталога HFS + содержит записи файла каталога (среди прочего). Запись файла каталога содержит обычную информацию о файле, такую ​​как дата создания, дата доступа и т. Д. Запись файла каталога также содержит две структуры, которые предоставляют информацию о местоположении и размере ветвления данных и ветвления ресурса.

AIUI, HFS + также имеет (скопировано из Википедии HFS +) «Файл атрибутов [который] является новым B-деревом в HFS Plus, который не имеет соответствующей структуры в HFS. Файл атрибутов может хранить три различных типа записей по 4 КБ: Встроенные записи атрибутов данных, записи атрибутов данных вилки и записи атрибутов расширения. Встроенные записи атрибутов данных хранят небольшие атрибуты, которые могут поместиться в самой записи. Записи атрибутов данных вилки содержат ссылки максимум на восемь экстентов, которые могут содержать более крупные атрибуты. используется для расширения записи атрибута данных Fork, когда его восемь записей экстента уже используются. "

AIUI, данные, хранящиеся в (или на которые ссылаются) файле атрибутов (будь то встроенные, форковые данные или атрибуты расширения), называются расширенными атрибутами.

Это структуры данных, так как они используются?

AIUI, ранние версии операционной системы (возможно, версии до 10.4 Tiger, которые, по- видимому, указывает Джон Сиракуза , имел некоторые существенные изменения в этой области), указывал на ветвь данных и ветвь ресурсов из файла каталога.

AIUI, как только мы доберемся до 10.4 Tiger, файл атрибутов станет широко использоваться для хранения всех видов данных.

Возможно (но я не знаю), что в 10.4 и позже любые Ресурсные Форки указываются из Файла Атрибутов. То есть, отвечая на ваш первый вопрос, я бы сказал, что именованные вилки - это расширенные атрибуты, если они не являются вилкой ресурсов, а ссылка на вилку ресурса указана из файла каталога.

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

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

Таким образом, доступ к rsrcможет означать, что к ресурсной вилке в файле каталога осуществляется доступ.

$ ls -l Icon^M/rsrc
-rwxr-xr-x  1 root  admin  486 23 Jul  2004 Icon?/rsrc

Тем не менее, мы знаем , что , хотя синтаксис выглядит как файл ниже Icon^Mкаталога осуществляется доступ, это не совсем так, потому что

$ ls -lR Icon^M
-rwxr-xr-x@ 1 root  admin  0 23 Jul  2004 Icon?

поэтому Apple реализовала специальный кейс для Resource Forks.

Если вместо этого мы делаем

$ ls -l@
-rwxr-xr-x@ 1 root  admin   0 23 Jul  2004 Icon?
    com.apple.FinderInfo    32 
    com.apple.ResourceFork  486 

Это говорит о том, что мы обращаемся к файлу атрибутов. Но опять же, реализация lsможет иметь особый случай для Resource Forks.

Джон Сиракуза указывает здесь, что списки ACL хранятся как «Расширенные атрибуты», но специально замаскированы, поэтому они не отображаются в xattr. Итак, опять же, в реализации xattr есть особая обработка.

(Обратите внимание, что эта особая обработка может происходить в коде инструмента или в коде базовых API, к которым инструменты получают доступ.)

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

Тим
источник
Существует также обсуждение здесь , но я не думаю , что «jonsview» очень полезно.
Тим