Плутанина в метаданих | Іменовані виделки | Розширені атрибути | Вилка ресурсу - HFS +


10

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

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

Будь-які відповіді, які можуть пояснити, як усі ці чотири взаємопов'язані, особливо стосовно трьох питань, були б дуже вдячні та сприятимуть врегулюванню суперечок, які, як я бачу, виникають на різних ресурсах.


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

Відповіді:


5

Плутанина виникає з-за того, що зв’язок між цими поняттями складний і з часом змінювався. У сучасних системах різниця між названим вилкою та розширеним атрибутом значною мірою академічна.

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

Для вилки зберігається список блоків розподілу дисків, що містять дані. Вилка ресурсу все ще є виделкою.

Метадані базової файлової системи зберігаються у виділених елементах самої записи файлової системи, незалежно від атрибутів та іменованих посилань вилок.


1
Але чи розширений атрибут насправді зберігається як його власний вилка, чи є форка для розширених атрибутів? Як це пов'язано в останній версії OSX?
rubixibuc

1
Я не розумію, коли ти кажеш, що атрибут має на увазі "розширений атрибут". Якщо так, то де зберігається запис атрибутів. Чи він зберігається як частина структури файлової системи HFS + або зберігається в якійсь базі даних? Будь ласка, відповідайте на перший коментар також, коли зможете.
rubixibuc

2
Вибачте. Я не буваю тут часто і не бачив ваших наступних питань, поки я не прийшов сюди шукати щось інше. Розширений атрибут - іменований вилка. Я використовував атрибут як скорочення для "розширеного атрибута". Записи атрибутів зберігаються у приватній частині файлової системи під назвою дерево атрибутів. Ви можете вважати це формою бази даних. Ці дані для кожного атрибута може або не може бути в тому , що дерево в залежності від того, наскільки вона велика.
GregW

"... метадані файлової системи зберігаються у виділених елементах запису файлової системи ..." - замість цього, я б, напевно, сказав "... метадані файлу зберігаються у виділених елементах запису для файлу ..."
Грем Перрін

Можливо, нічого не варто, хоча він com.apple.FinderInfoможе відображатися як розширений атрибут, розширена інформація про пошук (як правило date_added, extended_flagsплюс три зарезервовані поля) не є розширеним атрибутом.
Грем Перрін

2

Я не експерт з цього питання, але я трохи прочитав, щоб спробувати зрозуміти, що відбувається.

Я б сказав: «Плутанина виникає через те, що:

  • взаємозв'язок між цими поняттями складний і
  • змінився з часом і
  • Apple реалізувала як програмні API, так і такі інструменти, як ls чи cp, що дозволяє приховати багато відмінностей між поняттями ".

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

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

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

Це структури даних, тож як вони використовуються?

AIUI, ранні версії операційної системи (можливо, версії до 10.4 Тигр, на які, схоже, вказує Джон Сіракуза , мали деякі істотні зміни в цій області), вказали на форк даних та вилку ресурсу з файлу каталогу.

AIUI, як тільки ми дістаємось до 10.4 Тигра, файл атрибутів широко використовується для зберігання всіляких даних.

Можливо (але я не знаю), що через 10.4 і пізніше будь-які Forks Forks вказуються з файла атрибутів. Тобто, відповідаючи на ваше перше запитання, я б сказав, що названі вилки - це розширені атрибути, якщо вони не є Fork Fork, і на Fork Fork не посилається з файлу каталогу.

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

З звичайних інструментів командного рядка Terminal ми не можемо сказати, де саме зберігаються дані.

Отже, доступ до rsrcможе підказати, що доступ до Fork Fork у файлі Каталог є доступним.

$ 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» дуже корисно.
Тім
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.