Saya bukan ahli dalam hal ini, tetapi saya telah membaca sedikit untuk mencoba memahami apa yang sedang terjadi.
Saya akan mengatakan "Kebingungan muncul dari kenyataan bahwa:
- hubungan antara konsep-konsep ini kompleks dan
- telah berubah seiring waktu dan
- Apple telah mengimplementasikan API tingkat program dan alat-alat seperti ls atau cp sedemikian rupa untuk menyembunyikan banyak perbedaan di antara konsep-konsep tersebut. "
AIUI, file Katalog HFS + berisi Katalog File Records (antara lain). Catatan File Katalog berisi jenis informasi normal tentang file seperti tanggal pembuatan, tanggal akses dll. Catatan File Katalog juga berisi dua struktur yang memberikan informasi tentang lokasi dan ukuran garpu data dan garpu sumber daya.
AIUI, HFS + juga telah (disalin dari Wikipedia HFS +) "File Atribut [yang] adalah B-tree baru di HFS Plus yang tidak memiliki struktur yang sesuai di HFS. File Atribut dapat menyimpan tiga jenis berbeda dari catatan 4 KB: Catatan Atribut Data Inline, catatan Atribut Data Fork, dan catatan Atribut Ekstensi. Catatan Atribut Data Inline menyimpan atribut kecil yang dapat ditampung dalam catatan itu sendiri. Catatan Atribut Data Fork berisi referensi hingga maksimum delapan luasan yang dapat menampung atribut yang lebih besar. digunakan untuk memperpanjang catatan Atribut Data Fork ketika catatan luasnya delapan sudah digunakan. "
AIUI, data yang disimpan dalam (atau direferensikan dari) File Atribut (apakah inline, Fork Data atau Atribut Ekstensi) dikenal sebagai Atribut Diperpanjang.
Itu adalah struktur data, jadi bagaimana mereka digunakan?
AIUI, versi awal sistem operasi (mungkin versi sebelum 10.4 Tiger, yang tampaknya ditunjukkan oleh John Siracusa memiliki beberapa perubahan besar di bidang ini), menunjuk pada garpu data dan garpu sumber daya dari file Katalog.
AIUI, begitu kita mencapai 10.4 Tiger, File Atribut menjadi banyak digunakan untuk menyimpan semua jenis data.
Mungkin (tapi saya tidak tahu) bahwa pada 10.4 dan setelahnya, setiap Resource Fork ditunjukkan dari File Attributes. Yaitu sebagai jawaban untuk pertanyaan pertama Anda, saya akan mengatakan garpu bernama Atribut Extended, kecuali mereka adalah Fork Sumber Daya, dan Resource Fork direferensikan dari file Katalog.
Masalah dalam mengetahui bagaimana hal-hal diimplementasikan adalah bahwa untuk menjaga kompatibilitas ke belakang, dan mungkin terutama untuk mendukung akses ke sistem file yang ditulis oleh satu versi Mac OS dari versi lain, berbagai hal dan campuran hal-hal perlu didukung secara transparan.
Kami tidak dapat mengetahui dari alat baris perintah Terminal normal di mana data sebenarnya ditahan.
Jadi, akses ke rsrc
mungkin menyarankan bahwa Resource Fork di file Katalog sedang diakses.
$ ls -l Icon^M/rsrc
-rwxr-xr-x 1 root admin 486 23 Jul 2004 Icon?/rsrc
Namun, kita tahu bahwa walaupun sintaksisnya seperti file di bawah Icon^M
direktori sedang diakses, ini tidak benar-benar terjadi, karena
$ ls -lR Icon^M
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
jadi Apple telah menerapkan kasus khusus untuk Resource Forks.
Jika sebaliknya kita lakukan
$ ls -l@
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
com.apple.FinderInfo 32
com.apple.ResourceFork 486
Ini menunjukkan bahwa kita sedang mengakses File Atribut. Tetapi sekali lagi, implementasi ls
mungkin memiliki kasus khusus untuk Resource Forks.
John Siracusa menunjukkan di sini bahwa daftar ACL disimpan sebagai 'Atribut Diperpanjang', tetapi secara khusus ditutup-tutupi sehingga tidak ditampilkan di xattr
. Jadi sekali lagi ada pemrosesan kasus khusus dalam implementasi xattr.
(Perhatikan bahwa pemrosesan kasus khusus ini mungkin dalam kode alat, atau dalam kode API yang mendasarinya yang diakses alat.)
GregW, jika Anda melihat ini, akan lebih baik untuk mendapatkan pendapat yang lebih ahli tentang apakah saya berada di jalur yang benar, atau hanya sangat bingung.