जवाबों:
यदि आप किसी फ़ाइल की प्रतिलिपि बनाते हैं, तो यह सामग्री की नकल करेगा। इसलिए यदि आप किसी एकल फ़ाइल की सामग्री को संशोधित करते हैं, तो इसका दूसरे पर कोई प्रभाव नहीं पड़ता है।
यदि आप हार्डलिंक बनाते हैं, तो वह उसी सामग्री की ओर इशारा करते हुए एक फ़ाइल बनाएगा। इसलिए यदि आप दोनों में से किसी भी फाइल की सामग्री को बदलते हैं, तो परिवर्तन दोनों पर दिखाई देगा।
एक हार्ड लिंक मूल रूप से एक ही फ़ाइल के लिए दूसरा फ़ाइल नाम है। इसलिए यदि आप किसी फ़ाइल को हार्डलिंक करते हैं, तो यह केवल एक बार फाइलसिस्टम पर होगा, और इसलिए केवल एक बार स्पेस लेगा। तो आप इस का उपयोग करना चाहते हैं यदि आप डिस्कसपेस को बचाना चाहते हैं
यूनिक्स फ़ाइल सिस्टम पर हर फ़ाइलनाम वास्तव में डिस्क पर डेटा के स्थान की एक कड़ी है, जिसे एक इनोड कहा जाता है। यदि आप किसी मौजूदा फ़ाइल के लिए एक नया हार्ड लिंक बनाते हैं, तो यह डिस्क पर कोई अतिरिक्त स्थान नहीं लेगा, क्योंकि यह उसी डेटा का सिर्फ एक और पॉइंटर है। यदि आप डेटा को एक या अन्य लिंक द्वारा संपादित करते हैं (या सीधे इनोड को संपादित करते हैं) तो दोनों फाइलें बदल दी जाएंगी।
यह प्रणाली इस बात की गणना करती है कि प्रत्येक इनोड में कितने हार्ड लिंक हैं। जब लिंक की संख्या 0 होती है, तो फ़ाइल नहीं पहुंच सकती है और डेटा को ओवरराइट करने के लिए सुरक्षित के रूप में चिह्नित किया जाता है। तो 2 हार्ड लिंक के साथ एक फ़ाइल दी गई है, यदि आप किसी भी लिंक को हटाते हैं, तो डेटा हटाया नहीं जाएगा। यदि आप दोनों हटाते हैं तो ही डेटा चला जाएगा।
आप कमांड में -i
स्विच का उपयोग करके फ़ाइलों की इनकोड संख्या देख सकते हैं ls
।
दूसरी ओर एक नरम लिंक, इसके फ़ाइल नाम से किसी अन्य फ़ाइल को इंगित करता है। यदि आप मूल फ़ाइल को स्थानांतरित करते हैं या हटाते हैं, तो लिंक टूट जाएगा।
पूछे गए प्रश्न के भाग के संदर्भ में, "मैं हार्ड लिंक का उपयोग क्यों करना चाहूंगा?"
हार्ड-लिंक्ड फ़ाइलें (या उस मामले के लिए नरम (प्रतीकात्मक) -लिंक वाले) एक एकल निष्पादन योग्य फ़ाइल होने का एक उपयोगी तरीका प्रदान करते हैं जिसे विभिन्न उद्देश्यों के लिए बनाया जा सकता है।
यही है, नाम जिसके द्वारा कोड लागू किया गया है, यह निर्धारित करने के लिए जांच की जा सकती है कि निष्पादन के लिए कौन से विकल्प उपलब्ध हैं। यह कोड के एक बड़े टुकड़े के विकास और पैकेजिंग को थोड़े अलग उद्देश्यों के लिए आवश्यक सभी साझा कार्यक्षमता के साथ अनुमति देता है। उपयोगकर्ता के दृष्टिकोण से, "क्या" चलाने के लिए (नाम से) के विनिर्देश विकल्पों और प्रस्तुति को विकल्पों के अधिक प्रबंधनीय सबसेट तक सीमित करता है।
एक क्लासिक उदाहरण LVM है। एक समय HP-UX विभिन्न निष्पादनयोग्य के लिए कड़ी मेहनत से लिंक की गई फ़ाइलों (प्रयुक्त जैसे vgdisplay
, vgcreate
, vgextend
, आदि आज, लिनक्स की तरह, इन आदेशों वास्तव में प्रतीकात्मक (नरम) के लिंक हैं lvm
निष्पादन योग्य।