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.
- Sind benannte Gabeln mit erweiterten Attributen identisch ? Wenn nicht, was sind erweiterte Attribute?
- Ist der Ressourcengabel noch als Zweig oder als erweitertes Attribut implementiert ? Wenn es anders implementiert ist, wie dann?
- 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.
metadata
hfs
resources
extended-attributes
terminology
rubixibuc
quelle
quelle
Antworten:
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.
quelle
com.apple.FinderInfo
als erweitertes Attribut erscheinen, Erweiterte Finder Info ( in der Regeldate_added
,extended_flags
plus drei reservierte Felder) ist nicht ein erweitertes Attribut.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:
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
rsrc
könnte also darauf hindeuten, dass auf die Ressourcengabel in der Katalogdatei zugegriffen wird.Wir wissen jedoch, dass die Syntax zwar so aussieht, als würde auf eine Datei unterhalb des
Icon^M
Verzeichnisses zugegriffen, dies jedoch nicht wirklich der Fall ist, daDeshalb hat Apple einen Sonderfall für Resource Forks implementiert.
Wenn wir es stattdessen tun
Dies deutet darauf hin, dass wir auf die Attributdatei zugreifen. Aber auch hier kann die Implementierung von
ls
einen 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.
quelle