Kebingungan tentang Metadata | Garpu Bernama | Atribut yang Diperpanjang | Resource Fork - HFS +

10

Saya pikir ada beberapa kebingungan umum tentang hubungan antara keempat item ini yang tersebar di seluruh web. Saya ingin ini diluruskan.

  1. Apakah garpu dinamai sama dengan atribut diperluas ? Jika tidak, apa atribut yang diperluas?
  2. Apakah garpu sumber daya masih diimplementasikan sebagai garpu atau sebagai atribut yang diperluas ? Jika diterapkan dengan cara lain, lalu bagaimana?
  3. 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.

rubixibuc
sumber
Untuk mempelajari tentang HFS Plus : Panduan Pengguna dan Referensi fileXray (PDF, 1,8 MB, 173 halaman) sangat berguna. Saya pengguna fileXray . Juga: Catatan Teknis TN1150: Format Volume HFS Plus adalah warisan, dipensiunkan oleh Apple, tetapi masih bermanfaat untuk banyak tujuan.
Graham Perrin

Jawaban:

5

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.

GregW
sumber
1
Tetapi apakah atribut diperluas sebenarnya disimpan sebagai garpu sendiri, atau adakah garpu untuk atribut diperluas? Bagaimana ini terkait dengan versi OSX terbaru?
rubixibuc
1
Saya tidak mengerti, ketika Anda mengatakan atribut maksud Anda "atribut diperluas." Jika demikian, di mana catatan atribut disimpan. Apakah disimpan sebagai bagian dari struktur sistem file HFS + atau disimpan dalam semacam database? Harap balas komentar pertama juga saat Anda bisa.
rubixibuc
2
Maaf. Saya tidak sering ke sini dan tidak melihat pertanyaan tindak lanjut Anda sampai saya datang ke sini mencari sesuatu yang lain. Atribut yang diperluas adalah garpu bernama. Saya menggunakan atribut sebagai singkatan untuk "atribut diperluas." Atribut catatan disimpan di bagian pribadi dari sistem file yang disebut atribut pohon. Anda bisa menganggapnya sebagai bentuk basis data. The Data untuk setiap atribut mungkin atau mungkin tidak di pohon itu tergantung pada seberapa besar itu.
GregW
"... metadata sistem file disimpan dalam elemen khusus dari catatan sistem file ..." - sebagai gantinya, saya mungkin akan mengatakan "... metadata file disimpan dalam elemen khusus catatan untuk file ..."
Graham Perrin
Mungkin bernilai apa-apa yang sementara com.apple.FinderInfodapat muncul sebagai atribut yang diperluas, Info Finder yang Diperluas (biasanya date_added, extended_flagsditambah tiga bidang yang dipesan) bukan atribut yang diperluas.
Graham Perrin
2

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 rsrcmungkin 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^Mdirektori 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 lsmungkin 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.

Tim
sumber
Ada juga diskusi di sini , tetapi saya tidak berpikir bahwa 'jonsview' sangat membantu.
Tim