मैं इस पर एक विशेषज्ञ नहीं हूं, लेकिन मैंने यह समझने की कोशिश करने के लिए थोड़ा पढ़ा है कि क्या चल रहा है।
मैं कहूंगा "भ्रम इस तथ्य से उत्पन्न होता है कि:
- इन अवधारणाओं के बीच संबंध जटिल है और
- समय के साथ बदल गया है और
- ऐप्पल ने प्रोग्राम स्तर एपीआई और उपकरण दोनों को लागू किया है जैसे कि एलएस या सीपीपी इस तरह से अवधारणाओं के बीच कई अंतरों को छिपाने के लिए है। "
AIUI, HFS + कैटलॉग फ़ाइल में कैटलॉग फ़ाइल रिकॉर्ड (अन्य बातों के अलावा) शामिल हैं। कैटलॉग फ़ाइल रिकॉर्ड में फ़ाइल के बारे में सामान्य प्रकार की जानकारी होती है जैसे निर्माण तिथि, अभिगमन तिथि आदि। कैटलॉग फ़ाइल रिकॉर्ड में दो संरचनाएँ भी होती हैं जो डेटा कांटे और संसाधन कांटे के स्थान और आकार के बारे में जानकारी देती हैं।
एआईयूआई, एचएफएस + में भी (विकिपीडिया एचएफएस + से कॉपी) एक "एट्रिब्यूट्स फाइल [है] जो एचएफएस प्लस में एक नया बी-ट्री है जिसमें एचएफएस में एक समान संरचना नहीं है। एट्रिब्यूट्स फाइल तीन अलग-अलग प्रकार के 4 केबी रिकॉर्ड स्टोर कर सकती है: इनलाइन डेटा एट्रिब्यूट रिकॉर्ड्स, फोर्क डेटा एट्रिब्यूट रिकॉर्ड्स और एक्सटेंशन एट्रीब्यूट रिकॉर्ड्स। इनलाइन डेटा एट्रीब्यूट रिकॉर्ड्स छोटी विशेषताओं को संग्रहीत करते हैं जो रिकॉर्ड के भीतर ही फिट हो सकते हैं। फोर्क डेटा एट्रीब्यूट रिकॉर्ड्स में अधिकतम आठ एक्सटेंशन्स के संदर्भ होते हैं जो बड़ी विशेषताओं को धारण कर सकते हैं। फोर्क डेटा एट्रिब्यूट रिकॉर्ड का विस्तार करने के लिए उपयोग किया जाता है जब इसके आठ हद तक रिकॉर्ड पहले से ही उपयोग किए जाते हैं। "
एआईयूआई, एट्रिब्यूट्स फ़ाइल (या इनलाइन, फोर्क डेटा या एक्सटेंशन एट्रीब्यूट्स) में संग्रहीत (या संदर्भित) विस्तारित गुण के रूप में जाना जाता है।
वे डेटा संरचनाएं हैं, इसलिए उनका उपयोग कैसे किया जाता है?
एआईयूआई, ऑपरेटिंग सिस्टम के शुरुआती संस्करण (संभवतः 10.4 टाइगर से पहले के संस्करण, जो जॉन सिराकुसा को इंगित करता है कि इस क्षेत्र में कुछ बड़े बदलाव हुए हैं), कैटलॉग फ़ाइल से डेटा कांटा और संसाधन कांटा को इंगित किया गया है।
एआईयूआई, एक बार जब हम 10.4 टाइगर के पास पहुंच जाते हैं, तो सभी प्रकार के डेटा को संग्रहीत करने के लिए एट्रीब्यूट्स फ़ाइल का व्यापक रूप से उपयोग किया जाता है।
यह संभव है (लेकिन मुझे नहीं पता) 10.4 में और उसके बाद, किसी भी संसाधन कांटे को गुण फ़ाइल से इंगित किया जाता है। आपके पहले प्रश्न के उत्तर में, मैं कहूंगा कि कांटे नाम विस्तारित गुण हैं, जब तक कि वे संसाधन कांटे नहीं हैं, और संसाधन कांटा कैटलॉग फ़ाइल से संदर्भित है।
चीजों को कैसे लागू किया जाता है, यह जानने में समस्या यह है कि पिछड़े अनुकूलता को बनाए रखने के लिए, और विशेष रूप से मैक ओएस के एक संस्करण के दूसरे संस्करण से लिखे गए फाइल सिस्टम तक पहुंच का समर्थन करने के लिए, अलग-अलग चीजों और चीजों के मिश्रण को पारदर्शी रूप से समर्थन करने की आवश्यकता होती है।
हम सामान्य टर्मिनल कमांड लाइन टूल से नहीं बता सकते हैं कि डेटा वास्तव में कहां आयोजित किया जा रहा है।
इसलिए, एक्सेस का rsrc
सुझाव हो सकता है कि कैटलॉग फ़ाइल में संसाधन कांटा एक्सेस किया जा रहा है।
$ 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 ने संसाधन फोर्क्स के लिए एक विशेष मामला लागू किया है।
अगर इसके बजाय हम करते हैं
$ ls -l@
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
com.apple.FinderInfo 32
com.apple.ResourceFork 486
इससे पता चलता है कि हम एट्रिब्यूट्स फाइल को एक्सेस कर रहे हैं। लेकिन फिर, ls
संसाधन फोर्क्स के लिए एक विशेष मामले का कार्यान्वयन हो सकता है।
जॉन सिराकुसा यहां बताते हैं कि एसीएल सूचियों को 'विस्तारित गुण' के रूप में संग्रहीत किया जाता है, लेकिन विशेष रूप से बाहर निकाला जाता है ताकि वे अंदर नहीं दिखाए जाएं xattr
। तो फिर से xattr के कार्यान्वयन में विशेष केस प्रोसेसिंग है।
(ध्यान दें कि यह विशेष मामला प्रसंस्करण उपकरण के कोड में हो सकता है, या अंतर्निहित API के कोड में हो सकता है जो उपकरण तक पहुंचते हैं।)
ग्रेग, यदि आप इसे देखते हैं, तो अधिक विशेषज्ञ राय प्राप्त करना अच्छा होगा क्योंकि मैं सही लाइनों के साथ हूं, या बस निराशाजनक रूप से भ्रमित हूं।