ฉันไม่ได้เป็นผู้เชี่ยวชาญในเรื่องนี้ แต่ฉันได้อ่านนิดหน่อยเพื่อพยายามเข้าใจสิ่งที่เกิดขึ้น
ฉันจะพูดว่า "ความสับสนเกิดขึ้นจากข้อเท็จจริงที่ว่า:
- ความสัมพันธ์ระหว่างแนวคิดเหล่านี้ซับซ้อนและ
- มีการเปลี่ยนแปลงตลอดเวลาและ
- Apple ได้ติดตั้งทั้ง API ระดับโปรแกรมและเครื่องมือเช่น ls หรือ cp เป็นวิธีการที่จะซ่อนความแตกต่างมากมายระหว่างแนวคิด "
AIUI, ไฟล์ HFS + Catalog มี Catalog File Records (เหนือสิ่งอื่นใด) Catalog File Record มีการเรียงลำดับข้อมูลตามปกติเกี่ยวกับไฟล์เช่นวันที่สร้าง, วันที่เข้าถึงเป็นต้น Record File Record ยังมีโครงสร้างสองโครงสร้างที่ให้ข้อมูลเกี่ยวกับที่ตั้งและขนาดของ data fork และส้อมทรัพยากร
AIUI, HFS + ยังมี (คัดลอกมาจาก Wikipedia HFS +) "แอตทริบิวต์ไฟล์ [ซึ่ง] เป็น B-tree ใหม่ใน HFS Plus ที่ไม่มีโครงสร้างที่สอดคล้องกันใน HFS ไฟล์แอตทริบิวต์สามารถเก็บบันทึก 4 KB ได้สามประเภท: ระเบียนแอตทริบิวต์ของข้อมูลในบรรทัดระเบียนของแอตทริบิวต์ของข้อมูลส้อมและระเบียนแอตทริบิวต์ของส่วนขยายระเบียนข้อมูลในแอตทริบิวต์ของแอตทริบิวต์ที่เก็บข้อมูลขนาดเล็กที่สามารถพอดีกับภายในระเบียนเองระเบียนข้อมูลของแอตทริบิวต์ของส้อมมีการอ้างอิงถึงแปดสูงสุดที่สามารถเก็บแอตทริบิวต์ขนาดใหญ่ ใช้เพื่อขยายระเบียนแอตทริบิวต์ของข้อมูลส้อมเมื่อมีการใช้เร็กคอร์ดแปดขอบเขตแล้ว "
AIUI ข้อมูลที่จัดเก็บใน (หรืออ้างอิงจาก) ไฟล์แอตทริบิวต์ (ไม่ว่าจะเป็นแบบอินไลน์, ข้อมูลส้อมหรือแอตทริบิวต์ส่วนขยาย) เป็นที่รู้จักกันในชื่อแอตทริบิวต์เพิ่มเติม
นี่คือโครงสร้างข้อมูลดังนั้นจะใช้อย่างไร
AIUI เวอร์ชันเริ่มต้นของระบบปฏิบัติการ (อาจเป็นรุ่นก่อนหน้า 10.4 Tiger ซึ่งJohn Siracusaดูเหมือนว่าบ่งบอกว่ามีการเปลี่ยนแปลงครั้งใหญ่ในพื้นที่นี้) ชี้ไปที่ data fork และตัวแยกทรัพยากรจากไฟล์ Catalog
AIUI เมื่อเราไปถึง 10.4 Tiger ไฟล์แอททริบิวจะใช้กันอย่างแพร่หลายในการจัดเก็บข้อมูลทุกประเภท
เป็นไปได้ (แต่ฉันไม่รู้) ว่าใน 10.4 และหลังจากนั้นตัวแยกทรัพยากรใด ๆ จะชี้ไปที่จากไฟล์คุณสมบัติ คือคำตอบสำหรับคำถามแรกของคุณฉันจะบอกว่าชื่อ forks คือ Extended Attributes ยกเว้นว่าพวกเขาเป็น Resource Fork และ Resource Fork นั้นอ้างอิงจากไฟล์ Catalog
ปัญหาในการรู้ว่าสิ่งต่าง ๆ ถูกนำไปใช้อย่างไรเพื่อรักษาความเข้ากันได้แบบย้อนหลังและอาจสนับสนุนการเข้าถึงระบบไฟล์ที่เขียนโดย Mac OS เวอร์ชันหนึ่งจากอีกเวอร์ชั่นหนึ่งสิ่งต่าง ๆ
เราไม่สามารถบอกได้จากเครื่องมือบรรทัดคำสั่งเทอร์มินัลปกติที่มีการเก็บข้อมูลจริง
ดังนั้นการเข้าถึงrsrc
อาจแนะนำให้ Resource Fork ในไฟล์ Catalog กำลังถูกเข้าถึง
$ ls -l Icon^M/rsrc
-rwxr-xr-x 1 root admin 486 23 Jul 2004 Icon?/rsrc
อย่างไรก็ตามเรารู้ว่าแม้ว่าไวยากรณ์จะดูเหมือนไฟล์ด้านล่างIcon^M
ไดเรกทอรีกำลังถูกเข้าถึง แต่นี่ไม่ใช่กรณีจริง ๆ เพราะ
$ ls -lR Icon^M
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
ดังนั้น Apple ได้ดำเนินการกรณีพิเศษสำหรับ Resource Forks
ถ้าเราทำเช่นนั้น
$ ls -l@
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
com.apple.FinderInfo 32
com.apple.ResourceFork 486
สิ่งนี้ชี้ให้เห็นว่าเรากำลังเข้าถึงไฟล์คุณสมบัติ แต่อีกครั้งการดำเนินการls
อาจมีกรณีพิเศษสำหรับ Resource Forks
จอห์น Siracusa ชี้ให้เห็นที่นี่ว่ารายการ ACL จะถูกเก็บไว้เป็น 'แอตทริบิวต์ที่ขยาย' xattr
แต่จะมีการสวมหน้ากากออกมาเป็นพิเศษเพื่อให้พวกเขาจะไม่แสดงใน ดังนั้นอีกครั้งมีการประมวลผลกรณีพิเศษในการดำเนินการของ xattr
(โปรดทราบว่าการประมวลผลกรณีพิเศษนี้อาจอยู่ในรหัสของเครื่องมือหรือในรหัสของ API พื้นฐานที่เครื่องมือเข้าถึง)
GregW ถ้าคุณเห็นสิ่งนี้มันคงจะดีถ้าได้รับความเห็นจากผู้เชี่ยวชาญว่าฉันอยู่ในแนวที่ถูกต้องหรือสับสนอย่างสิ้นหวัง