ความสับสนในเมตาดาต้า | Named Forks คุณสมบัติเพิ่มเติม | ตัวแยกทรัพยากร - HFS +


10

ฉันคิดว่ามีความสับสนทั่วไปเกี่ยวกับความสัมพันธ์ระหว่างรายการทั้งสี่เหล่านี้กระจายอยู่ทั่วทั้งเว็บ ฉันต้องการทำให้สิ่งนี้ยืดออก

  1. มีชื่อส้อมเหมือนกับแอตทริบิวต์เพิ่มเติม ? หากไม่มีคุณสมบัติเพิ่มเติมคืออะไร
  2. ตัวแยกทรัพยากรยังคงถูกใช้งานเป็นทางแยกหรือเป็นแอ็ตทริบิวต์ส่วนขยายหรือไม่? หากมีการนำไปใช้ในทางอื่นแล้วจะได้อย่างไร
  3. เมตาดาต้าที่เก็บไว้กับไฟล์(ผู้สร้าง, วันที่แก้ไข ... )จะมีความสัมพันธ์ใด ๆ หรือการทับซ้อนกันในคำศัพท์ระหว่างที่อีกสามที่กล่าวถึง ตัวอย่างเช่นจะเป็นแอตทริบิวต์เพิ่มเติมเพียงคู่ metadataพิเศษ(คีย์ + ค่า)เก็บไว้ในไฟล์

คำตอบใด ๆ ที่สามารถอธิบายได้ว่าทั้งสี่เหล่านี้มีความสัมพันธ์กันอย่างไรโดยเฉพาะอย่างยิ่งเกี่ยวกับคำถามสามข้อจะได้รับการชื่นชมอย่างมาก


สำหรับการเรียนรู้เกี่ยวกับ HFS ​​Plus : คู่มือผู้ใช้และการอ้างอิง fileXray (PDF, 1.8 MB, 173 หน้า) มีประโยชน์มาก ฉันเป็นผู้ใช้ของfileXray นอกจากนี้: หมายเหตุทางเทคนิค TN1150: รูปแบบไดรฟ์ข้อมูล HFS Plusเป็นแบบดั้งเดิมปลดเกษียณโดย Apple แต่ยังคงมีประโยชน์สำหรับวัตถุประสงค์มากมาย
Graham Perrin

คำตอบ:


5

ความสับสนเกิดขึ้นจากข้อเท็จจริงที่ว่าความสัมพันธ์ระหว่างแนวคิดเหล่านี้ซับซ้อนและเปลี่ยนแปลงไปตามกาลเวลา ในระบบปัจจุบันความแตกต่างระหว่าง fork ที่ตั้งชื่อและแอตทริบิวต์เพิ่มเติมนั้นส่วนใหญ่เป็นเรื่องทางวิชาการ

สำหรับแอ็ตทริบิวต์ส่วนขยายข้อมูลจริงจะถูกเก็บไว้ในบันทึกข้อมูลแอ็ตทริบิวต์

สำหรับทางแยกสิ่งที่เก็บไว้คือรายการบล็อกการจัดสรรดิสก์ที่มีข้อมูล ส้อมทรัพยากรยังคงเป็นทางแยก

ข้อมูลเมตาระบบไฟล์พื้นฐานถูกเก็บไว้ในองค์ประกอบเฉพาะของระบบไฟล์บันทึกตัวเองเป็นอิสระจากคุณลักษณะและการอ้างอิงแยกชื่อ


1
แต่แอตทริบิวต์แบบขยายจริง ๆ แล้วถูกจัดเก็บเนื่องจากเป็นทางแยกของตัวเองหรือมีทางแยกสำหรับแอตทริบิวต์แบบขยายหรือไม่ มันเกี่ยวข้องกับ OSX เวอร์ชั่นล่าสุดอย่างไร
rubixibuc

1
ฉันไม่เข้าใจเมื่อคุณพูดถึงคุณลักษณะคุณหมายถึง "คุณสมบัติเพิ่มเติม" ถ้าเป็นเช่นนั้นบันทึกของคุณสมบัติจะถูกเก็บไว้ มันถูกเก็บไว้เป็นส่วนหนึ่งของโครงสร้างระบบไฟล์ HFS + หรือเก็บไว้ในฐานข้อมูลบางประเภทหรือไม่? กรุณาตอบกลับความคิดเห็นแรกเช่นกันเมื่อคุณสามารถ
rubixibuc

2
ขอโทษ ฉันไม่ได้มาที่นี่บ่อยและไม่เห็นคำถามที่ตามมาของคุณจนกว่าฉันจะมาที่นี่เพื่อค้นหาสิ่งอื่น แอตทริบิวต์ที่ขยายเป็นทางแยกชื่อ ฉันใช้คุณลักษณะเป็นแบบย่อสำหรับ "แอตทริบิวต์แบบขยาย" เร็กคอร์ดแอ็ตทริบิวต์ถูกเก็บไว้ในส่วนส่วนตัวของระบบไฟล์ที่เรียกว่าแผนผังทรี คุณสามารถพิจารณาว่าเป็นรูปแบบของฐานข้อมูล ข้อมูลสำหรับแต่ละแอตทริบิวต์อาจหรือไม่อาจจะอยู่ในต้นไม้ที่ขึ้นอยู่กับว่ามันเป็นขนาดใหญ่
GregW

"... ข้อมูลเมตาของระบบไฟล์ถูกเก็บไว้ในองค์ประกอบเฉพาะของบันทึกระบบไฟล์ ... " - ฉันอาจจะพูดว่า "... ข้อมูลเมตาของไฟล์ถูกเก็บไว้ในองค์ประกอบเฉพาะของบันทึกสำหรับไฟล์ ... "
Graham Perrin

อาจจะไม่มีอะไรคุ้มค่าว่าในขณะที่com.apple.FinderInfoอาจปรากฏเป็นแอตทริบิวต์ขยายขยาย Finder ข้อมูล (ปกติdate_added, extended_flagsบวกสามสาขาลิขสิทธิ์) เป็นไม่แอตทริบิวต์ขยาย
Graham Perrin

2

ฉันไม่ได้เป็นผู้เชี่ยวชาญในเรื่องนี้ แต่ฉันได้อ่านนิดหน่อยเพื่อพยายามเข้าใจสิ่งที่เกิดขึ้น

ฉันจะพูดว่า "ความสับสนเกิดขึ้นจากข้อเท็จจริงที่ว่า:

  • ความสัมพันธ์ระหว่างแนวคิดเหล่านี้ซับซ้อนและ
  • มีการเปลี่ยนแปลงตลอดเวลาและ
  • 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 ถ้าคุณเห็นสิ่งนี้มันคงจะดีถ้าได้รับความเห็นจากผู้เชี่ยวชาญว่าฉันอยู่ในแนวที่ถูกต้องหรือสับสนอย่างสิ้นหวัง


นอกจากนี้ยังมีการสนทนาที่นี่แต่ฉันไม่คิดว่า 'jonsview' มีประโยชน์มาก
ทิม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.