Saya pikir ada beberapa kebingungan umum tentang hubungan antara keempat item ini yang tersebar di seluruh web. Saya ingin ini diluruskan.
- Apakah garpu dinamai sama dengan atribut diperluas ? Jika tidak, apa atribut yang diperluas?
- Apakah garpu sumber daya masih diimplementasikan sebagai garpu atau sebagai atribut yang diperluas ? Jika diterapkan dengan cara lain, lalu bagaimana?
- The metadata disimpan dengan file (pencipta, tanggal dimodifikasi ...) apakah ada hubungan atau tumpang tindih dalam terminologi antara tiga lainnya yang disebutkan. Contohnya adalah, atribut diperluas hanya pasangan metadata tambahan (kunci + nilai) yang disimpan pada file.
Setiap jawaban yang dapat mengklarifikasi bagaimana keempatnya saling terkait, terutama mengenai tiga pertanyaan akan sangat dihargai, dan berkontribusi untuk menyelesaikan perselisihan yang saya lihat terjadi di berbagai sumber yang berbeda.
metadata
hfs
resources
extended-attributes
terminology
rubixibuc
sumber
sumber
Jawaban:
Kebingungan muncul dari kenyataan bahwa hubungan antara konsep-konsep ini kompleks dan telah berubah seiring waktu. Dalam sistem saat ini, perbedaan antara garpu bernama dan atribut yang diperluas sebagian besar bersifat akademis.
Untuk atribut yang diperluas, data aktual disimpan dalam catatan data atribut.
Untuk garpu, yang disimpan adalah daftar blok alokasi disk yang berisi data. Garpu sumber daya masih merupakan garpu.
Metadata sistem file dasar disimpan dalam elemen khusus dari catatan sistem file itu sendiri, tidak tergantung pada atribut dan diberi nama referensi garpu.
sumber
com.apple.FinderInfo
dapat muncul sebagai atribut yang diperluas, Info Finder yang Diperluas (biasanyadate_added
,extended_flags
ditambah tiga bidang yang dipesan) bukan atribut yang diperluas.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:
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.Namun, kita tahu bahwa walaupun sintaksisnya seperti file di bawah
Icon^M
direktori sedang diakses, ini tidak benar-benar terjadi, karenajadi Apple telah menerapkan kasus khusus untuk Resource Forks.
Jika sebaliknya kita lakukan
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.
sumber