Verwirrung über Metadaten | Benannte Gabeln | Erweiterte Attribute | Resource Fork - HFS +

10

Ich denke, es gibt einige allgemeine Verwirrung über die Beziehung zwischen allen vier dieser Elemente, die im Internet verstreut sind. Ich wollte das klären.

  1. Sind benannte Gabeln mit erweiterten Attributen identisch ? Wenn nicht, was sind erweiterte Attribute?
  2. Ist der Ressourcengabel noch als Zweig oder als erweitertes Attribut implementiert ? Wenn es anders implementiert ist, wie dann?
  3. Bei den mit einer Datei gespeicherten Metadaten (Ersteller, Änderungsdatum ...) besteht eine Beziehung oder Überschneidung in der Terminologie zwischen den anderen drei genannten. Ein Beispiel wäre, sind erweiterte Attribute nur zusätzliche Metadatenpaare (Schlüssel + Wert), die in einer Datei gespeichert sind.

Alle Antworten, die klarstellen können, wie alle vier miteinander zusammenhängen, insbesondere in Bezug auf die drei Fragen, wären sehr willkommen und würden zur Beilegung von Streitigkeiten beitragen, die ich über verschiedene Ressourcen hinweg sehe.

rubixibuc
quelle
Informationen zu HFS Plus : fileXray Benutzerhandbuch und Referenz (PDF, 1,8 MB, 173 Seiten) sind sehr nützlich. Ich bin ein Benutzer von fileXray . Außerdem: Technischer Hinweis TN1150: Das HFS Plus-Volumenformat ist ein Legacy- Format , das von Apple eingestellt wurde, aber für viele Zwecke immer noch nützlich ist.
Graham Perrin

Antworten:

5

Verwirrung entsteht durch die Tatsache, dass die Beziehung zwischen diesen Konzepten komplex ist und sich im Laufe der Zeit geändert hat. In gegenwärtigen Systemen ist der Unterschied zwischen einer benannten Gabel und einem erweiterten Attribut weitgehend akademisch.

Bei einem erweiterten Attribut werden die tatsächlichen Daten im Attributdatensatz gespeichert.

Für eine Verzweigung wird die Liste der Plattenzuordnungsblöcke gespeichert, die die Daten enthalten. Eine Ressourcengabel ist immer noch eine Gabel.

Grundlegende Dateisystem-Metadaten werden in dedizierten Elementen des Dateisystemdatensatzes selbst gespeichert, unabhängig von den Attributen und benannten Gabelreferenzen.

GregW
quelle
1
Aber wird ein erweitertes Attribut tatsächlich als eigene Verzweigung gespeichert, oder gibt es eine Verzweigung für erweiterte Attribute? Wie hängt es in der neuesten Version von OSX zusammen?
Rubixibuc
1
Ich verstehe nicht, wenn Sie Attribut sagen, meinen Sie "erweitertes Attribut". Wenn ja, wo wird der Attributdatensatz aufbewahrt? Wird es als Teil der Dateisystemstruktur HFS + gespeichert oder in einer Datenbank gespeichert? Bitte antworten Sie auch auf den ersten Kommentar, wenn Sie können.
Rubixibuc
2
Es tut uns leid. Ich bin nicht oft hier und habe Ihre Anschlussfragen erst gesehen, als ich hierher gekommen bin, um etwas anderes zu suchen. Ein erweitertes Attribut ist eine benannte Gabel. Ich habe Attribut als Abkürzung für "erweitertes Attribut" verwendet. Die Attributsätze sind in einem privaten Teil des Dateisystems genannt Attribute Baum gehalten. Sie könnten es als eine Form der Datenbank betrachten. Die Daten für jedes Attribut können sich in diesem Baum befinden oder nicht, je nachdem, wie groß es ist.
GregW
„... Dateisystem - Metadaten werden in speziellen Elementen des gespeicherten Dateisystem record ...“ - stattdessen würde ich wahrscheinlich sagen : „... Datei - Metadaten in speziellen Elementen des Datensatz für die gespeicherte Datei ...“
Graham Perrin
Vielleicht nichts wert , dass , während com.apple.FinderInfoals erweitertes Attribut erscheinen, Erweiterte Finder Info ( in der Regel date_added, extended_flagsplus drei reservierte Felder) ist nicht ein erweitertes Attribut.
Graham Perrin
2

Ich bin kein Experte in diesem Bereich, aber ich habe ein wenig gelesen, um zu verstehen, was los ist.

Ich würde sagen "Verwirrung entsteht durch die Tatsache, dass:

  • Die Beziehung zwischen diesen Konzepten ist komplex und
  • hat sich im Laufe der Zeit geändert und
  • Apple hat sowohl APIs auf Programmebene als auch Tools wie ls oder cp implementiert, um viele der Unterschiede zwischen den Konzepten zu verbergen. "

AIUI, die HFS + -Katalogdatei enthält unter anderem Katalogdatensätze. Der Katalogdateidatensatz enthält die normalen Informationen zu der Datei, z. B. Erstellungsdatum, Zugriffsdatum usw. Der Katalogdateidatensatz enthält außerdem zwei Strukturen, die Informationen zum Speicherort und zur Größe des Datengabels und des Ressourcengabels enthalten.

AIUI, HFS + hat auch (kopiert von Wikipedia HFS +) eine "Attributdatei [die] ein neuer B-Baum in HFS Plus ist, der keine entsprechende Struktur in HFS hat. Die Attributdatei kann drei verschiedene Arten von 4-KB-Datensätzen speichern: Inline-Datenattribut-Datensätze, Fork-Datenattribut-Datensätze und Erweiterungsattribut-Datensätze. Inline-Datenattribut-Datensätze speichern kleine Attribute, die in den Datensatz selbst passen. Fork-Datenattribut-Datensätze enthalten Verweise auf maximal acht Bereiche, die größere Attribute enthalten können. Erweiterungsattribute sind wird verwendet, um einen Fork Data Attribute-Datensatz zu erweitern, wenn seine acht Extent-Datensätze bereits verwendet werden. "

AIUI, die Daten, die in der Attributdatei gespeichert sind (oder aus dieser referenziert werden) (ob Inline-, Fork-Daten- oder Erweiterungsattribute), werden als erweiterte Attribute bezeichnet.

Das sind die Datenstrukturen. Wie werden sie verwendet?

AIUI, frühere Versionen des Betriebssystems (möglicherweise Versionen vor 10.4 Tiger, auf die John Siracusa anscheinend einige wesentliche Änderungen in diesem Bereich hingewiesen hat), verwiesen auf die Datengabelung und die Ressourcengabelung aus der Katalogdatei.

AIUI, sobald wir 10.4 Tiger erreicht haben, wird die Attributdatei häufig zum Speichern aller Arten von Daten verwendet.

Es ist möglich (aber ich weiß nicht), dass in 10.4 und danach auf Ressourcengabeln aus der Attributdatei verwiesen wird. Das heißt, als Antwort auf Ihre erste Frage würde ich sagen, dass benannte Gabeln erweiterte Attribute sind, es sei denn, es handelt sich um die Ressourcengabel, und auf die Ressourcengabel wird aus der Katalogdatei verwiesen.

Das Problem beim Wissen, wie Dinge implementiert werden, besteht darin, dass zur Wahrung der Abwärtskompatibilität und wahrscheinlich insbesondere zur Unterstützung des Zugriffs auf Dateisysteme, die von einer Version von Mac OS aus einer anderen Version geschrieben wurden, verschiedene Dinge und Mischungen von Dingen transparent unterstützt werden müssen.

An den normalen Terminal-Befehlszeilentools können wir nicht erkennen, wo tatsächlich Daten gespeichert sind.

Der Zugriff auf rsrckönnte also darauf hindeuten, dass auf die Ressourcengabel in der Katalogdatei zugegriffen wird.

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

Wir wissen jedoch, dass die Syntax zwar so aussieht, als würde auf eine Datei unterhalb des Icon^MVerzeichnisses zugegriffen, dies jedoch nicht wirklich der Fall ist, da

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

Deshalb hat Apple einen Sonderfall für Resource Forks implementiert.

Wenn wir es stattdessen tun

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

Dies deutet darauf hin, dass wir auf die Attributdatei zugreifen. Aber auch hier kann die Implementierung von lseinen Sonderfall für Resource Forks haben.

John Siracusa weist hier darauf hin, dass die ACL-Listen als 'Erweiterte Attribute' gespeichert sind, aber speziell ausgeblendet sind, damit sie nicht angezeigt werden xattr. Es gibt also wieder eine Sonderfallverarbeitung bei der Implementierung von xattr.

(Beachten Sie, dass sich diese Sonderfallverarbeitung möglicherweise im Code des Tools oder im Code der zugrunde liegenden APIs befindet, auf die die Tools zugreifen.)

GregW, wenn Sie das sehen, wäre es schön, eine Expertenmeinung darüber zu bekommen, ob ich in der richtigen Richtung bin oder nur hoffnungslos verwirrt.

Tim
quelle
Es gibt auch eine Diskussion hier , aber ich denke nicht, dass 'jonsview' sehr hilfreich ist.
Tim