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


22

मेरी समझ यह है कि हार्ड लिंक में मूल फ़ाइल की एक प्रति शामिल है और मैं एक निर्देशिका में एक हार्ड-लिंक की गई फ़ाइल को हटा सकता हूं, और यह अभी भी अन्य निर्देशिका में मौजूद होगी।

अगर ऐसा है, तो मैं हार्ड लिंक का उपयोग क्यों करना चाहूंगा? सिर्फ दो अलग-अलग फाइलें क्यों नहीं हैं?

जवाबों:


29

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

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


3
बहुत बड़ी फ़ाइलों के लिए, मूल फ़ाइल को कॉपी करने की तुलना में हमेशा एक कड़ी कड़ी बना रहा है?
जॉर्ज बुकरान

14

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


4
त्वरित प्रतिक्रिया के लिए धन्यवाद। फिर मैं सॉफ्ट लिंक के बजाय हार्ड लिंक का उपयोग क्यों करना चाहूंगा?
माइक बी

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

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

4
मुझे लगता है कि एलन के इस जवाब का एक महत्वपूर्ण बिंदु है: एक फ़ाइल को बदलना यह सभी हार्डलिंक है, एक प्रति के साथ उनके पास अलग-अलग सामग्री होगी।
donothingsuccessfully

6

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

यह प्रणाली इस बात की गणना करती है कि प्रत्येक इनोड में कितने हार्ड लिंक हैं। जब लिंक की संख्या 0 होती है, तो फ़ाइल नहीं पहुंच सकती है और डेटा को ओवरराइट करने के लिए सुरक्षित के रूप में चिह्नित किया जाता है। तो 2 हार्ड लिंक के साथ एक फ़ाइल दी गई है, यदि आप किसी भी लिंक को हटाते हैं, तो डेटा हटाया नहीं जाएगा। यदि आप दोनों हटाते हैं तो ही डेटा चला जाएगा।

आप कमांड में -iस्विच का उपयोग करके फ़ाइलों की इनकोड संख्या देख सकते हैं ls

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


0

पूछे गए प्रश्न के भाग के संदर्भ में, "मैं हार्ड लिंक का उपयोग क्यों करना चाहूंगा?"

हार्ड-लिंक्ड फ़ाइलें (या उस मामले के लिए नरम (प्रतीकात्मक) -लिंक वाले) एक एकल निष्पादन योग्य फ़ाइल होने का एक उपयोगी तरीका प्रदान करते हैं जिसे विभिन्न उद्देश्यों के लिए बनाया जा सकता है।

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

एक क्लासिक उदाहरण LVM है। एक समय HP-UX विभिन्न निष्पादनयोग्य के लिए कड़ी मेहनत से लिंक की गई फ़ाइलों (प्रयुक्त जैसे vgdisplay, vgcreate, vgextend, आदि आज, लिनक्स की तरह, इन आदेशों वास्तव में प्रतीकात्मक (नरम) के लिंक हैं lvmनिष्पादन योग्य।


इसका सवाल से कोई लेना-देना नहीं है।
rjmunro

1
@rjmunro मैं अलग भीख माँगता हूँ। ओपी ने पूछा, "मैं हार्ड लिंक का उपयोग क्यों करना चाहता हूं?"
JRFerguson

मैं आखिरी उदाहरण नहीं समझता। एक बार, बहुत सारे निष्पादन योग्य लोगों के लिए कठिन लिंक थे, अब एक निष्पादन योग्य के लिए नरम लिंक हैं। वे नरम लिंक कैसे अलग हैं?
इमानुएल बर्ग

@EmanuelBerg मेरा कहना था कि चाहे हार्ड या सॉफ्ट लिंक का उपयोग किया जाए, यह वह नाम है जिसके द्वारा निष्पादन योग्य को लागू किया जाता है जो उन विकल्पों और तर्कों को निर्धारित करता है जो निष्पादन के लिए मान्य हैं।
JRFerguson

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