हार्ड लिंक और फ़ाइल के बीच अंतर क्या है?


37

एक कड़ी को एक इनोड में एक पॉइंटर के रूप में परिभाषित किया गया है। एक नरम लिंक , जिसे एक प्रतीकात्मक लिंक के रूप में भी जाना जाता है , को एक स्वतंत्र फ़ाइल के रूप में परिभाषित किया जाता है जो हार्ड लिंक के प्रतिबंध के बिना किसी अन्य लिंक की ओर इशारा करता है।

फ़ाइल और हार्ड लिंक में क्या अंतर है? एक हार्ड लिंक एक इनोड में इंगित करता है, तो एक फाइल क्या है? इनकोड प्रविष्टि ही? या एक कड़ी के साथ एक इनकोड?

मान लीजिए कि मैं स्पर्श के साथ एक फ़ाइल बनाता हूं। फिर इनकोड तालिका में एक इनोड प्रविष्टि बनाई जाती है । और मैं एक हार्ड लिंक बनाता हूं, जिसमें फ़ाइल के समान इनकोड नंबर है। तो क्या मैंने एक नई फ़ाइल बनाई? या क्या फाइल को केवल एक इनोड के रूप में परिभाषित किया गया है?


यह लगभग निश्चित रूप से unix.stackexchange.com/questions/9575/…
infixed

7
@infixed बिल्कुल नहीं, मैं एक फ़ाइल और एक हार्ड लिंक का अंतर पूछ रहा हूं।
लेवेंट डिविलीग्लू

इसलिए मैंने अपना मूल उत्तर अनिर्धारित किया है जो मुझे लगता है कि उस लिंक किए गए प्रश्न के उत्तर में भी शामिल था। तो क्या यह अभी भी 'बिल्कुल नहीं' है?
infixed

7
एक फ़ाइल और हार्डलिंक के बीच का अंतर वही है जो आपके और फोनबुक में आपके नाम की रेखा के बीच का अंतर है।
जॉर्ग डब्ल्यू मित्तग

जवाबों:


61

बहुत ही कम जवाब है:

  • एक फ़ाइल डेटा की एक गुमनाम बूँद है
  • हार्डलिंक एक फ़ाइल का एक नाम है
  • एक प्रतीकात्मक लिंक एक विशेष फ़ाइल है जिसकी सामग्री एक पथनाम है

यूनिक्स फाइलें और निर्देशिकाएं वास्तविक दुनिया में फाइलों और निर्देशिकाओं की तरह ही काम करती हैं (और वास्तविक दुनिया में फ़ोल्डर्स की तरह नहीं ); यूनिक्स फाइल सिस्टम इस तरह से संरचित हैं (वैचारिक रूप से):

  • एक फ़ाइल डेटा की एक गुमनाम बूँद है; इसमें एक नाम नहीं है, केवल एक संख्या (इनोड)
  • एक निर्देशिका एक विशेष प्रकार की फ़ाइल है जिसमें फ़ाइलों के नाम का मानचित्रण होता है (विशेष रूप से इनोड्स); चूंकि एक निर्देशिका सिर्फ एक फ़ाइल है, निर्देशिकाओं में निर्देशिकाओं के लिए प्रविष्टियां हो सकती हैं, इस तरह से पुनरावृत्ति लागू की जाती है (ध्यान दें कि जब यूनिक्स फाइल सिस्टम प्रस्तुत किए गए थे, तो यह बिल्कुल स्पष्ट नहीं था , बहुत सारे ऑपरेटिंग सिस्टम ने निर्देशिकाओं को निर्देशिकाओं को वापस करने की अनुमति नहीं दी थी। फिर)
  • इन निर्देशिका प्रविष्टियों को हार्डलिंक कहा जाता है
  • एक प्रतीकात्मक लिंक एक और विशेष प्रकार की फ़ाइल है, जिसकी सामग्री एक पथनाम है; इस पथनाम की व्याख्या दूसरी फ़ाइल के नाम के रूप में की जाती है
  • अन्य प्रकार की विशेष फाइलें हैं: सॉकेट, फीफो, ब्लॉक डिवाइस, कैरेक्टर डिवाइस

इस रूपक को ध्यान में रखते हुए, और विशेष रूप से इस बात को ध्यान में रखते हुए कि यूनिक्स निर्देशिका वास्तविक दुनिया निर्देशिकाओं की तरह काम करती हैं और वास्तविक दुनिया के फ़ोल्डरों की तरह नहीं , कई "विषमताओं" की व्याख्या करती है, जो कि नए चेहरे अक्सर सामना करते हैं, जैसे: मैं एक फ़ाइल को क्यों हटा सकता हूं I डॉन ' t तक पहुँच लिखी है? ठीक है, एक के लिए, आप फ़ाइल को हटा नहीं रहे हैं, आप फ़ाइल के लिए कई संभावित नामों में से एक को हटा रहे हैं, और ऐसा करने के लिए, आपको केवल निर्देशिका तक पहुंच लिखने की आवश्यकता है, न कि फ़ाइल की। बिल्कुल असली दुनिया की तरह।

या, मुझे झुनझुनी क्यों हो सकती है? ठीक है, सिमिलिंक में केवल एक मार्गनाम होता है। ऐसा कुछ भी नहीं है जो कहता है कि वास्तव में उस नाम के साथ एक फ़ाइल होनी चाहिए।

मेरा सवाल बस यह है कि फ़ाइल और हार्ड लिंक में क्या अंतर है?

एक फ़ाइल और हार्ड लिंक के बीच का अंतर फोन बुक में आपके नाम के साथ आपके और रेखा के बीच का अंतर है।

हार्ड लिंक एक इनोड की ओर इशारा कर रहा है, तो एक फाइल क्या है? प्रवेश खुद? या एक हार्ड लिंक के साथ एक आईनोड?

एक फ़ाइल डेटा का एक अनाम टुकड़ा है। बस। एक फ़ाइल एक आईनोड नहीं है, एक फाइल में एक आईनोड है, जैसे आप एक सामाजिक सुरक्षा नंबर नहीं हैं, आपके पास एक एसएसएन है।

एक हार्ड लिंक एक फ़ाइल के लिए एक नाम है। एक फ़ाइल में कई नाम हो सकते हैं।

मान लीजिए, मैं स्पर्श के साथ एक फ़ाइल बनाता हूं, तो इनोड तालिका में एक इनोड प्रविष्टि बनाई जाती है ।

हाँ।

और मैं एक हार्ड लिंक बनाता हूं, जिसमें फ़ाइल के साथ एक ही इनकोड नंबर है।

नहीं, हार्ड लिंक में एक इनोड नंबर नहीं है, क्योंकि यह एक फाइल नहीं है। केवल फाइलों में इनकोड नंबर होते हैं।

हार्डलिंक एक नाम को इनोड नंबर के साथ जोड़ता है।

तो क्या मैंने एक नई फ़ाइल बनाई?

हाँ।

या फाइल को केवल इनोड के रूप में परिभाषित किया गया है?

नहीं। फ़ाइल में एक इनकोड है, यह एक इनोड नहीं है


15
मैं वास्तव में कभी नहीं समझ पाया (या ठीक से इस बारे में सोचा गया) कि रूपक शब्द "निर्देशिका" के पीछे क्या था। फोन बुक उदाहरण एक महान है; शायद आपको इसे पहले शुरू करना चाहिए (जब आप पहली बार वास्तविक दुनिया का उल्लेख करते हैं)। इसी तरह, ज्यादातर लोग कंप्यूटर के बाहर "फाइलों" के साथ शायद ही कभी व्यवहार करते हैं, इसलिए शायद यह "कागज की फाइलों की तरह, और एक फोन बुक की तरह एक निर्देशिका" कहना स्पष्ट होगा।
IMSoP

2
@IMSoP यह एक जनरेशन गैप है। कंप्यूटर से पहले, एक फोन बुक एक निर्देशिका के प्रकार में से एक थी। कैम्ब्रिज डिक्शनरी कहती है: " निर्देशिका: एक पुस्तक जो नामों, पते, या अन्य तथ्यों की एक सूची देती है [... उदाहरण] टेलीफोन निर्देशिका में उनकी संख्या देखें। "
kubanczyk

2
@kubanczyk वास्तव में - जो लोग पूर्व-डिजिटल कार्यालयों में काम करते थे, मुझे लगता है कि रूपकों को इतना स्पष्ट लगता है कि उन्हें समझाने के लिए लगभग कृपालु लगता है। लेकिन मेरी पीढ़ी और नीचे के लोगों के लिए, यह उतना ही अस्पष्ट है जितना कि कार के पीछे के भंडारण क्षेत्र को "बूट" या "ट्रंक" कहा जाता है, इसलिए आपको इसे वास्तव में वर्तनी देना होगा।
IMSoP

शब्द "है" वाक्यांश में "एक हार्ड लिंक में एक इनोड नंबर नहीं है" संभवतः भ्रामक है, क्योंकि तब आप कहते हैं कि "हार्डलाइन एक नाम को एक इनोड नंबर के साथ जोड़ देता है"। "हार्डलिंक" डायरेक्टरी एंट्री के डेटा-स्ट्रक्चर में वास्तव में इनोड # होता है - यह इस प्रकार है कि इनकोड # के साथ लिंक "संबद्ध" है। द्वारा "नहीं है" मुझे लगता है कि आप का मतलब है कि हार्डलिंक में एक इनोड नहीं है # जो इंगित करता है कि लिंक डिस्क पर कहाँ संग्रहीत है।
केल्विन

2
यह कहना कि फ़ाइल में एक इनकोड कुछ पीछे की ओर है। इनोड वह संरचना है जिसमें "डेटा का बूँद" कहाँ है, इसके बारे में जानकारी होती है। यदि कोई इनोड नहीं है, तो कोई फ़ाइल नहीं है।
बरमार

18

एक हार्ड लिंक एक निर्देशिका प्रविष्टि है। एक फ़ाइल में कई निर्देशिका प्रविष्टियाँ हो सकती हैं, यदि यह अलग-अलग नामों के तहत या अलग-अलग निर्देशिकाओं में मौजूद है। एक निर्देशिका प्रविष्टि को "हार्ड लिंक" कहा जाता है जब इसे उसी फ़ाइल के लिए अन्य निर्देशिका प्रविष्टियों के साथ रखा जाता है।

इनकोड में फ़ाइल का मेटाडेटा उसके नाम और सामग्री (सामग्री का स्थान, अनुमति, टाइमस्टैम्प आदि) के अलावा है। प्रति फ़ाइल एक इनोड है। (सभी फाइल सिस्टम ने मेटाडेटा को डिस्क पर एक स्पष्ट रूप से पहचाने जाने योग्य स्थान पर नहीं रखा है जिसे आप "इनोड" कह सकते हैं, लेकिन यह एक सामान्य वास्तुकला है।) एक निर्देशिका प्रविष्टि एक नाम को एक इनोड में जोड़ता है। एक ही इनकोड से लिंक करने के लिए एक से अधिक निर्देशिका प्रविष्टि संभव है, इसलिए शब्द "लिंक"। इस तरह के लिंक को "सॉफ्ट लिंक्स" या "प्रतीकात्मक लिंक" के विरोध में एक "हार्ड लिंक" कहा जाता है, जो इस नाम के लिए "इस नाम का उपयोग नहीं करता है" लेकिन "इस नाम के लिए, उस अन्य नाम को देखें"।

फाइलों को कमरों के रूप में और निर्देशिका प्रविष्टियों को दरवाजे के रूप में सोचें। "फ़ाइल खोलें /foo/bar" का अर्थ है "गलियारे में /fooजाओ और कमरे में जाओ bar"। "कमरे में जाओ bar" का मतलब वास्तव में है "दरवाजे को चिह्नित करें barऔर कमरे में प्रवेश करें" लेकिन "कमरे में जाओ bar" एक ही तरीके को एक छोटे तरीके से कहने के लिए एक अचूक तरीका है। एक ही कमरे में जाने के लिए एक से अधिक दरवाजे होना संभव है।

जब आप किसी मौजूदा फ़ाइल ( ln existing new) के लिए एक हार्ड लिंक बनाते हैं , तो आप उसी फ़ाइल का दूसरा लिंक बना रहे हैं, यानी आप एक नई निर्देशिका प्रविष्टि बना रहे हैं जो पहले से मौजूद फ़ाइल से लिंक करती है। निर्माण के बाद, दो निर्देशिका प्रविष्टियों की समान स्थिति है: एक "प्राथमिक" नहीं है और एक "माध्यमिक" है, वे दोनों एक ही फ़ाइल के लिंक हैं।

आप फ़ाइल को हटाए बिना फ़ाइल के सभी लिंक भी हटा सकते हैं। ऐसा तब होता है जब आप किसी फ़ाइल को हटाते हैं (यानी आप उसकी सभी डायरेक्टरी प्रविष्टियाँ निकालते हैं) जबकि किसी प्रोग्राम में अभी भी फ़ाइल खुली है। फ़ाइल फ़ाइल सिस्टम पर बनी हुई है, यह केवल वास्तव में हटा दी जाती है जब अंतिम प्रक्रिया जो फ़ाइल खुली थी उसे बंद कर देती है। कमरे और दरवाजों के रूपक में, एक ऐसा कमरा जिसके दरवाजे नहीं हैं, अभी भी जगह लेता है।


क्रमशः कठिन और नरम लिंक पहले कब पेश किए गए थे?
n611x007

2
@ n611x007: क्या आप एक नया प्रश्न खोल सकते हैं यदि आपके पास कोई नया या अनुवर्ती प्रश्न है? टिप्पणी अनुभाग नए प्रश्नों या विस्तारित चर्चा के लिए उपयुक्त या अभिप्रेत नहीं है। धन्यवाद।
डेविड फ़ॉस्टर

1
@ n611x007 हार्ड लिंक यूनिक्स की तुलना में पुराने हैं, v1 उनके पास था । यूनिक्स में साइमलिंक थोड़ा नया है; विकिपीडिया का कुछ इतिहास है।
गिलेस एसओ- बुराई को रोकना '

कमरे और दरवाजे एक महान सादृश्य है! साइमलिंक तब दरवाजों के संकेतों की तरह होते हैं।
उत्सुकतादिनी

1
@curiousdannii: सिम्बलिंक्स उन लोगों के साथ कमरे पसंद करते हैं, जिनमें बैठे व्यक्ति कहते हैं कि "ओआई एम 8 गलत कार्यालय # 234 के बजाय" पर जाता है
लाइटनेस रेस मोनिका

8

अन्य सभी उत्तरों के अलावा मैं निम्नलिखित महत्वपूर्ण गुणों को इंगित करना चाहता हूं:

सॉफ्टलिंक एक सही संदर्भ है, अर्थात यह एक छोटी फ़ाइल है जिसमें एक पाथनाम होता है। सॉफ्टलिंक को हल करने से एप्लिकेशन को पारदर्शी रूप से घटित होता है: यदि कोई प्रक्रिया किसी फ़ाइल को खोलती है, तो यह कहें कि /this/path/hereसिमिलिंक है जो /that/other/pathतब खोलने /that/other/pathका पूरा प्रबंध ओएस द्वारा किया जाता है। इसके अलावा, यदि /that/other/pathस्वयं एक सिम्लिंक होता है, तो यह भी ओएस द्वारा निपटा जा रहा है। वास्तव में, OS कुछ और (जैसे एक नियमित फ़ाइल) या जब तक यह कई प्रविष्टियों तक नहीं पहुँचता SYMLOOP_MAX(देखें sysconf(3)) तक सिम्लिंक की श्रृंखला का अनुसरण करता है , जिस स्थिति में OS (अधिक सटीक: सिस्टम कॉल के अनुसार) एक त्रुटि देता है और सेट करता है errnoको ELOOP। इस प्रकार, एक गोलाकार संदर्भ xyz -> xyzप्रक्रिया को रोक नहीं पाएगा। (लिनक्स सिस्टम के path_resolution(7)लिए पूर्ण विवरण देखें।)

ध्यान दें कि एक प्रक्रिया यह जांच सकती है कि एक पथनाम एक सिम्लिंक है या नहीं के उपयोग के माध्यम से lstat(2)और अपनी फ़ाइल विशेषताओं (इनोड तालिका में संग्रहीत) को संशोधित कर सकता है lchown(2)और अन्य ( symlink(7)पूरी कहानी के लिए देखें )।

अब, अनुमति के संदर्भ में आप देखेंगे कि सहानुभूति हमेशा 777 ( rwxrwxrwxप्रतीकात्मक संकेतन में) की अनुमति है। यह इस तथ्य के कारण है कि किसी भी अन्य अनुमतियों को वास्तविक फ़ाइल तक पहुंचने से वैसे भी बाईपास किया जा सकता है। इसके विपरीत, एक सहानुभूति के लिए 777 सिमिलिंक फ़ाइल को सुलभ नहीं बनाता है यदि यह पहली जगह में सुलभ नहीं है। उदाहरण के लिए, अनुमतियाँ 777 के साथ एक सिमलिंक, अनुमतियों के साथ एक फ़ाइल की ओर इशारा करते हुए 640 "फ़ाइल अन्य" (आम जनता) के लिए सुलभ नहीं है। दूसरे शब्दों में, एक फ़ाइल xyzसिम्लिंक के माध्यम से सुलभ है यदि और केवल अगर यह सीधे पहुंच योग्य है, अर्थात बिना अप्रत्यक्ष। इस प्रकार, सीलिंक की अनुमतियों का कोई सुरक्षा प्रभाव नहीं है।

हार्डलिंक्स और सिमलिंक (उर्फ सॉफ्टलिंक) के बीच मुख्य रूप से दिखाई देने वाला अंतर यह है कि सिमिलिंक फाइलसिस्टम में काम करते हैं जबकि हार्डलिंक एक फाइलसिस्टम तक ही सीमित है। यानी, विभाजन A पर एक फ़ाइल को विभाजन B से सिम्लिंक किया जा सकता है, लेकिन इसे वहां से हार्डलिंक नहीं किया जा सकता है। यह इस तथ्य से स्पष्ट है कि हार्डलिंक वास्तव में एक निर्देशिका में एक प्रविष्टि है, जिसमें एक फ़ाइल नाम और एक इनोड संख्या होती है, और यह इनोड संख्या केवल फ़ाइल सिस्टम के अनुसार अद्वितीय होती है।

हार्डलिंक शब्द वास्तव में कुछ भ्रामक है। जबकि सिम्बलिंक स्रोत और गंतव्य स्पष्ट रूप से अलग-अलग हैं (इनकोड तालिका में सिमलिंक की अपनी प्रविष्टि है), यह हार्डलिंक के लिए सही नहीं है। यदि आप किसी फ़ाइल के लिए हार्डलिंक बनाते हैं, तो मूल प्रविष्टि और हार्डलिंक पहले क्या था, इसके संदर्भ में अप्रभेद्य हैं। (चूंकि वे एक ही इनोड को संदर्भित करते हैं, वे अपनी फ़ाइल विशेषताओं जैसे कि स्वामी, अनुमतियाँ, टाइमस्टैम्प आदि को साझा करते हैं) यह इस कथन की ओर जाता है कि प्रत्येक निर्देशिका प्रविष्टि वास्तव में एक हार्डलिंक है, और एक फ़ाइल को हार्डलिंक करने का अर्थ केवल एक दूसरा बनाना है ( या तीसरा, या चौथा ...) हार्डलिंक। वास्तव में, प्रत्येक इनोड हार्डकोड की संख्या के लिए एक काउंटर को स्टोर करता है।

अंत में, ध्यान दें कि सामान्य उपयोगकर्ता निर्देशिकाओं को हार्डलिंक नहीं कर सकते हैं। ऐसा इसलिए है क्योंकि यह अत्यंत सावधानी के साथ किया जाना चाहिए: एक अनियंत्रित उपयोगकर्ता अन्यथा कड़ाई से पदानुक्रमित फ़ाइल ट्री में चक्र का परिचय दे सकता है, जो सभी सामान्य उपकरण (जैसे fsck) और ओएस खुद से निपटने के लिए तैयार नहीं हैं।


6

एक सरल जवाब:

  • एक निर्देशिका में एक फ़ाइल प्रविष्टि उस फ़ाइल का एक कठिन लिंक है।

  • कुछ फाइलों में एक से अधिक हार्ड लिंक होते हैं, क्योंकि एक ही फाइल के कई हार्ड लिंक की अनुमति होती है।


3

यूनिक्स के शुरुआती दिनों में, आंतरिक रूप से फाइलें एक विशेष डिस्क ड्राइव पर इनोड थीं। फ़ाइल नाम उन्हें एक्सेस करने का एक अधिक अनुकूल तरीका था।

एक हार्ड लिंक एक इनोड में एक से अधिक फ़ाइल नाम असाइन कर रहा था। आप एक फ़ाइल बना सकते हैं, इसके लिए एक दूसरा नाम कड़ी कर सकते हैं और पहला नाम हटा सकते हैं और यह पहली जगह में दूसरे नाम के साथ फ़ाइल बनाने से अप्रभेद्य था।

वास्तव में, सिस्टम कॉल जिसे प्रोग्राम को फाइल डिलीट करने के लिए उपयोग करना होता है वह है 'अनलिंक (2) `। जब तक अंतिम नाम इनोड से अनलिंक नहीं किया जाता है तब तक डेटा दूर नहीं जाता है। (और इनोड कहीं प्रक्रिया द्वारा नहीं खुला है)

यह वही है जो लिनक्स को चीजों को अपग्रेड करने के लिए आसान बनाता है जबकि अभी भी प्रोग्राम चला रहा है। यदि कोई प्रक्रिया एक निष्पादन योग्य चल रही है, और एक अद्यतन होता है, तो प्रोग्राम का नाम पुन: उपयोग हो जाता है, लेकिन पुराने संस्करण वाले इनोड अभी भी मौजूद है इसलिए यह चलना जारी रख सकता है। और जब उस पुराने संस्करण को चलाने वाली अंतिम प्रक्रिया बंद हो जाती है, तो उस पुराने संस्करण का संग्रहण जारी हो जाता है।

शीतल लिंक के बारे में आया क्योंकि जब आपके पास एकात्मक फ़ाइल ट्री होता है, तो कई माउंट पॉइंट्स के साथ, आप एक हार्ड ड्राइव से एक दूसरे पर एक इनोड में एक हार्ड लिंक नहीं बना सकते हैं। इसलिए नरम लिंक का आविष्कार किया गया था।


मुझे लगता है कि यह unix.stackexchange.com/questions/9575/…
23

2
early daysअब यह अलग क्यों है? आपका उत्तर किसी भी तरह उस दृश्य को प्रतिबिंबित नहीं करता है?
n611x007

@ n611x007 क्योंकि 'इन दिनों' लिनक्स जैसी चीजें गैर-यूनिक्स प्रकार की फाइल सिस्टम को माउंट कर सकती हैं जो इनोड मॉडल में फिट नहीं होती हैं। उदाहरण के लिए FAT डेरिवेटिव और ISO-9660। यह एक एक आकार के बजाय एक अधिक विविध फाइल सिस्टम पारिस्थितिकी सभी फिट बैठता है
infixed

1

एक फाइल डिस्क पर लिखा डेटा है। इस डेटा को इसके इनकोड द्वारा संदर्भित किया जाता है, जिसमें फाइल के बारे में मेटाडेटा होता है जो सिस्टम को बताता है कि डिस्क पर कौन से ब्लॉक इस फाइल द्वारा उपयोग किए जाते हैं, अन्य चीजों के साथ। एक हार्ड लिंक इस फाइल के इनकोड नंबर की ओर इशारा करता है।

तो तकनीकी रूप से, हाँ, आप एक नई फ़ाइल बना रहे हैं, लेकिन इस फ़ाइल में यह संदर्भ वाली फ़ाइल का एक इनोड नंबर है और यह एक नाम है। यह बेहतर है कि इसे इनकोड को पॉइंटर बनाएं, या फाइल को पॉइंटर बनाएं।


1

फ़ाइल एक फ़ाइल सिस्टम में प्रविष्टियों के बारे में व्यापक रूप से उपयोग की जाने वाली अवधारणा है।

आमतौर पर इसमें डायरेक्टरी , रेगुलर फाइल (हार्ड लिंक) और सिंबोलिक लिंक (सॉफ्ट लिंक) शामिल होते हैं। और यहां तक ​​कि डिवाइस और सॉकेट भी शामिल हो सकते हैं।

मेरा सवाल बस यह है कि फ़ाइल और हार्ड लिंक में क्या अंतर है? हार्ड लिंक एक इनोड की ओर इशारा कर रहा है, तो एक फाइल क्या है? प्रवेश खुद? या एक हार्ड लिंक के साथ एक आईनोड?

मान लीजिए, मैं स्पर्श के साथ एक फ़ाइल बनाता हूं, तो इनोड तालिका में एक इनोड प्रविष्टि बनाई जाती है। और मैं एक हार्ड लिंक बनाता हूं, जिसमें फ़ाइल के साथ एक ही इनकोड नंबर है। तो क्या मैंने एक नई फ़ाइल बनाई? या फाइल को केवल इनोड के रूप में परिभाषित किया गया है?

चूंकि प्रतीकात्मक लिंक को आमतौर पर फ़ाइल के रूप में गिना जाता है, इसलिए एक कठिन लिंक को भी एक फ़ाइल के रूप में गिना जा सकता है। आप कह सकते हैं कि यह एक फ़ाइल है चाहे वह एक कठिन या सॉफ्ट लिंक हो।

अवधारणा थोड़ी अस्पष्ट है इसलिए यह कहना भी ठीक है कि एक इनकोड प्रविष्टि एक फ़ाइल है, हालांकि आप वास्तव में डेटा को संदर्भित करना चाह सकते हैं।

यदि आप एक C ++ या जावा प्रोग्रामर हैं, तो आप std :: filesystem :: file_type , java.io.File और java.nio.file.Files के बारे में पढ़ना चाह सकते हैं ।

हार्ड लिंक और सॉफ्ट लिंक के बीच अंतर के बारे में विवरण infixed की टिप्पणी में लिंक में पाया जा सकता है।


1

किसी दिए गए नाम के साथ "फ़ाइल" और "हार्ड लिंक" के बीच का अंतर इतिहास में से एक है। एक दिए गए नाम के साथ एक (नियमित) फ़ाइल एक क्रिएशन सिस्टम कॉल का उपयोग करके बनाई गई है, एक लिंक सिस्टम कॉल का उपयोग करके एक कठिन लिंक बनाया गया है।

हालाँकि, जब मनुष्य निर्देशिका प्रविष्टियों के इतिहास के बारे में बात करते हैं और याद करते हैं और उन्हें फ़ाइल और हार्ड लिंक कहते हैं, तो फ़ाइल सिस्टम नहीं करता है। "मूल फ़ाइल" और "हार्ड लिंक" की निर्देशिका प्रविष्टियाँ गुणवत्ता में पूरी तरह से अविभाज्य हैं: दोनों एक फ़ाइल नाम और फ़ाइल के इनोड के बीच एक संदर्भ स्थापित करते हैं, और एक बार ऐसा अंतिम संदर्भ चला जाता है (संदर्भ केवल फ़ाइल नाम नहीं हैं एक फ़ाइल लेकिन फाइल डिस्क्रिप्टर भी जिसके साथ एक खोली गई फ़ाइल तक पहुँचा जा सकता है), अपरिचित इनोड के लिए फ़ाइल को हटा दिया गया माना जाता है और इनोड और संबंधित फ़ाइल स्थान को पुनः प्राप्त किया जाता है।

इसलिए जब मानव "फाइल" और "हार्ड लिंक" के विपरीत होता है, तो सबसे पहले "लिंक 1 की गिनती" के साथ अस्तित्व में आया, और अन्य सभी एक बड़ी लिंक गणना के साथ अस्तित्व में आए। अंतर अकादमिक है, और वास्तव में एक समय में एक फ़ाइल का नाम बदलना लक्ष्य नाम के लिए एक कठिन लिंक बनाने और फिर स्रोत नाम के लिए लिंक को हटाने में शामिल है। आजकल, आमतौर पर एक एकल प्रणाली कॉल का उपयोग किया जाता है जो परमाणु रूप से ऐसा करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.