Myślę, że istnieje pewne ogólne zamieszanie w związku między wszystkimi czterema tymi elementami rozproszonymi w sieci. Chciałem to wyjaśnić.
- Czy nazwane widelce są takie same jak atrybuty rozszerzone ? Jeśli nie, jakie są rozszerzone atrybuty?
- Czy rozwidlenie zasobów jest nadal implementowane jako rozwidlenie lub jako atrybut rozszerzony ? Jeśli jest realizowany w inny sposób, to jak?
- Metadane zapisane w pliku (twórca, daty modyfikacji ...) czy jest jakiś związek lub nakładanie w terminologii pomiędzy pozostałe trzy wymienione. Przykładem mogą być rozszerzone atrybuty tylko dodatkowe pary metadanych (klucz + wartość) przechowywane w pliku.
Wszelkie odpowiedzi, które mogą wyjaśnić, w jaki sposób wszystkie cztery są ze sobą powiązane, szczególnie w odniesieniu do trzech pytań, byłyby bardzo mile widziane i przyczyniłyby się do rozstrzygania sporów, które, jak widzę, dotyczą różnych zasobów.
metadata
hfs
resources
extended-attributes
terminology
rubiksibuc
źródło
źródło
Odpowiedzi:
Zamieszanie wynika z faktu, że związek między tymi pojęciami jest złożony i zmieniał się z czasem. W obecnych systemach różnica między nazwanym widelcem a rozszerzonym atrybutem ma w dużej mierze charakter akademicki.
W przypadku atrybutu rozszerzonego rzeczywiste dane są przechowywane w rekordzie danych atrybutu.
W przypadku rozwidlenia przechowywana jest lista bloków alokacji dysku zawierających dane. Widelec zasobów jest nadal widelcem.
Podstawowe metadane systemu plików są przechowywane w dedykowanych elementach samego rekordu systemu plików, niezależnie od atrybutów i nazwanych odwołań do rozwidleń.
źródło
com.apple.FinderInfo
może pojawić się jako rozszerzonego atrybutu rozszerzonego Finder Info (zwykledate_added
,extended_flags
plus trzy zarezerwowanych pól) to nie rozszerzony atrybut.Nie jestem ekspertem w tej dziedzinie, ale przeczytałem trochę, aby zrozumieć, co się dzieje.
Powiedziałbym, że „zamieszanie wynika z faktu, że:
AIUI, plik katalogu HFS + zawiera rekordy plików katalogu (między innymi). Rekord pliku katalogu zawiera normalne informacje na temat pliku, takie jak data utworzenia, data dostępu itp. Rekord pliku katalogu zawiera także dwie struktury, które podają informacje o lokalizacji i rozmiarze rozwidlenia danych i rozwidlenia zasobów.
AIUI, HFS + ma również (skopiowany z Wikipedii HFS +) „Plik atrybutów [który] jest nowym drzewkiem B w HFS Plus, które nie ma odpowiedniej struktury w HFS. Plik atrybutów może przechowywać trzy różne typy rekordów o wielkości 4 KB: Rekordy Atline Data Atrybut, rekordy Atrybut Danych Widelca i rekordy Atrybut Rozszerzeń. Rekordy Inline Atrybut Danych przechowują małe atrybuty, które mogą zmieścić się w samym rekordzie. Rekordy Atrybut Danych Widelca zawierają odniesienia do maksymalnie ośmiu zakresów, które mogą zawierać większe atrybuty. używane do rozszerzenia rekordu atrybutu danych widelca, gdy jego osiem rekordów zasięgu jest już używanych. ”
AIUI, dane przechowywane w pliku atrybutów (lub do których się odwołuje) (atrybuty wbudowane, dane widelca lub atrybuty rozszerzenia) są znane jako atrybuty rozszerzone.
To są struktury danych, więc jak je wykorzystać?
AIUI, wczesne wersje systemu operacyjnego (być może wersje wcześniejsze niż 10.4 Tiger, które, jak sugeruje John Siracusa , miały pewne poważne zmiany w tym obszarze), wskazywały na rozwidlenie danych i rozwidlenie zasobów z pliku katalogu.
AIUI, kiedy przejdziemy do 10.4 Tygrysa, plik atrybutów staje się szeroko stosowany do przechowywania wszelkiego rodzaju danych.
Możliwe (ale nie wiem), że w wersji 10.4 i późniejszych wszelkie Widelce zasobów są wskazane w pliku atrybutów. To znaczy w odpowiedzi na twoje pierwsze pytanie, powiedziałbym, że nazwane widelce są Rozszerzonymi Atrybutami, chyba że są Widelcem Zasobów, a Widelec Zasobów jest przywoływany z pliku Katalogu.
Problem ze znajomością sposobu implementacji polega na tym, że w celu zachowania kompatybilności wstecznej, a prawdopodobnie szczególnie w celu wsparcia dostępu do systemów plików zapisanych przez jedną wersję systemu Mac OS z innej wersji, różne rzeczy i mieszanki rzeczy muszą być obsługiwane w sposób przejrzysty.
Nie możemy stwierdzić na podstawie zwykłych narzędzi wiersza poleceń terminalu, gdzie faktycznie przechowywane są dane.
Dostęp do
rsrc
może sugerować, że dostęp do Widelca zasobów w pliku katalogu jest dostępny.Wiemy jednak, że chociaż składnia wygląda na dostęp do pliku poniżej
Icon^M
katalogu, tak nie jest, ponieważwięc Apple wdrożyło specjalny przypadek dla widełek zasobów.
Jeśli zamiast tego zrobimy
Sugeruje to, że uzyskujemy dostęp do pliku atrybutów. Ale znowu wdrożenie
ls
może mieć szczególny przypadek dla widełek zasobów.John Siracusa wskazuje tutaj, że listy ACL są przechowywane jako „Rozszerzone atrybuty”, ale są specjalnie maskowane, aby nie były wyświetlane
xattr
. Więc znowu jest specjalne przetwarzanie przypadków w implementacji xattr.(Pamiętaj, że to przetwarzanie specjalnych przypadków może znajdować się w kodzie narzędzia lub w kodzie podstawowych interfejsów API, do których narzędzia mają dostęp).
GregW, jeśli to zobaczysz, fajnie byłoby uzyskać bardziej ekspercką opinię, czy jestem na dobrej drodze, czy po prostu beznadziejnie zdezorientowany.
źródło