सवाल एक हार्ड लिंक और प्रतीकात्मक लिंक के बीच क्या अंतर है?


जैसा कि शीर्षक कहता है, मैं एक हार्ड लिंक और कमांड द्वारा बनाए गए सॉफ्ट लिंक के बीच का अंतर जानना चाहता हूं ln। आदेश man ln जानकारी प्रदान करता है, लेकिन मेरे प्रश्न का पर्याप्त जवाब नहीं देता है।

साथ ही, यह अच्छा होगा अगर कोई ऐसी सेटिंग प्रदान कर सके जहां एक प्रतीकात्मक लिंक पर हार्ड लिंक बेहतर हो सकता है।


447
2018-02-29 09:03


मूल


मतभेदों में से एक ... आपके पास कुछ फ़ाइल है, उदाहरण के लिए फ़ाइल परीक्षण। यदि आप एलएन टेस्ट हार्डलिंक बनाते हैं, तो एलएन-टेस्ट सिम्लिंक बनाएं और फिर फ़ाइल डिवीजन को अन्य डीआईआर (या नाम बदलें) में ले जाएं, सिम्लिंक काम नहीं करेगा। हार्डलिंक काम करेगा। अब फ़ाइल परीक्षण हटाने का प्रयास करें। हार्डलिंक अभी भी काम करेगा, असल में आप फाइल को तब तक acces करने में सक्षम होंगे जब तक फ़ाइल में हार्डलिंक्स की संख्या नहीं है 0. इनोड्स की वजह से, यह मैन्युअल में लिखा गया है ... - Denwerko
मैंने इसे फिर से खोल दिया है क्योंकि इस मुद्दे पर यह एक अच्छा सामान्य जवाब है (पिछले प्रश्न के विपरीत जो एक अस्पष्ट सी उदाहरण था)। - Oli♦
सबसे बढ़िया उत्तर: youtube.com/watch?v=aO0OkNxDJ3c - Abhishek Bhatia
इसके अलावा एक पूरा जवाब भी: stackoverflow.com/questions/185899/... - Elzo Valugi
@ अभिषेक भाटिया वीडियो उपलब्ध नहीं है - Ooker


जवाब:


 लिनक्स / यूनिक्स में, शॉर्टकट को लिंक के रूप में जाना जाता है


लिंक दो प्रकार के होते हैं: मुलायम लिंक (प्रतीकात्मक लिंक) या हार्ड लिंक।

  1. सॉफ्ट लिंक (प्रतीकात्मक लिंक)

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

    अगर असली प्रतिलिपि हटा दी गई है, लिंक काम नहीं करेगा

  2. हार्ड लिंक

    हार्ड लिंक केवल फाइलों के लिए हैं; आप एक अलग इनोड नंबर के साथ विभिन्न विभाजन पर एक फ़ाइल से लिंक नहीं कर सकते हैं।

    अगर असली प्रति हटा दी गई है लिंक काम करेगा, क्योंकि यह अंतर्निहित डेटा तक पहुंचता है, वास्तविक प्रतिलिपि एक्सेस कर रही थी।


सवाल: मैं मुलायम लिंक कैसे बना सकता हूं?

उत्तर: एक मुलायम लिंक के साथ बनाया जा सकता है ln -s; सबसे पहले आपको स्रोत को परिभाषित करने की आवश्यकता है और फिर आपको गंतव्य को परिभाषित करने की आवश्यकता है। (यह ध्यान रखें कि आपको स्रोत और गंतव्य दोनों के पूर्ण पथ को परिभाषित करने की आवश्यकता है, अन्यथा यह काम नहीं करेगा।)

 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib32/libGL.so.1
             (----------Source-------)             ( Destination )

enter image description here

जैसा कि आप देख सकते हैं कि इसमें एक अलग इनोड है और इसे एक अलग विभाजन पर बनाया जा सकता है।


सवाल: मैं हार्ड लिंक कैसे बना सकता हूं?

उत्तर: एक हार्ड लिंक के साथ बनाया जा सकता है ln; सबसे पहले आपको स्रोत को परिभाषित करने की आवश्यकता है और फिर आपको गंतव्य को परिभाषित करने की आवश्यकता है। (यह ध्यान रखें कि आपको स्रोत और गंतव्य दोनों के पूर्ण पथ को परिभाषित करने की आवश्यकता है, अन्यथा यह काम नहीं करेगा।)

मान लें कि मेरे पास एक स्क्रिप्ट है /script नाम की निर्देशिका firefox

 ls -i # Shows you the inode
 5898242 firefox

 ln /scripts/firefox /scripts/on-fire
       ( Source )    ( Destination )

enter image description here

जैसा कि आप देख सकते हैं, इसमें एक ही इनोड है। यदि मैं मूल को हटा देता हूं तो लिंक काम करेगा, और यह मूल के रूप में कार्य करेगा।

enter image description here

ऊपर मैं जांचता हूं कि लिंक काम कर रहा है, और उसके बाद मूल फ़ायरफ़ॉक्स स्क्रिप्ट हटा दें।


आप प्रश्न: यह अच्छा होगा अगर कोई ऐसी सेटिंग प्रदान कर सके जहां एक प्रतीकात्मक लिंक पर हार्ड लिंक बेहतर हो सकता है।

उत्तर : डिस्क विभाजन लेआउट के आधार पर, हार्ड लिंक सीमा है कि वे एक ही विभाजन पर होना चाहिए (-1 बिंदु) और केवल फाइलों से लिंक कर सकते हैं (-1 बिंदु) ), परंतु +1 बिंदु यदि मूल हटा दिया गया है तो लिंक काम करेगा और यह मूल की तरह कार्य करता है।

दूसरी ओर, एक नरम लिंक निर्देशिका या फ़ाइलों (+1 बिंदु) को इंगित कर सकता है और कोई विभाजन सीमा नहीं है (+1 बिंदु), लेकिन (-1 बिंदु) अगर स्रोत हटा दिया गया है तो लिंक काम नहीं करेगा।


32
2018-05-09 00:42





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

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


314
2018-05-18 09:51



एक बात यह है कि (अपने शब्दों से) "फाइल को इंगित करता है"  एक कहा जा सकता है सूचक (यह लगभग tautologically सच है)। यदि हम नाइटपिक कर रहे हैं तो (सामान्य रूप से) हार्डलिंक की धारणा मौजूद हो सकती है भले ही कोई फाइल सिस्टम इनोड्स का उपयोग न करे। - jfs


"एक तस्वीर एक हजार शब्दों के बराबर होती है।" Pictorial representation


और, "एक उदाहरण सौ अनुच्छेदों के लायक है ..."

दो फाइलें बनाएं:

$ touch blah1   
$ touch blah2

उनमें कुछ डेटा दर्ज करें:

$ echo "Cat" > blah1
$ echo "Dog" > blah2

और जैसा कि अपेक्षित था:

$cat blah1; cat blah2
Cat
Dog

चलो कठिन और मुलायम लिंक बनाते हैं:

$ ln blah1 blah1-hard
$ ln -s blah2 blah2-soft

चलो देखते हैं कि अभी क्या हुआ:

$ ls -l

blah1
blah1-hard
blah2
blah2-soft -> blah2

Blah1 का नाम बदलना कोई फर्क नहीं पड़ता:

$ mv blah1 blah1-new
$ cat blah1-hard
Cat

blah1-हार्ड पॉइंट इनोड, फ़ाइल की सामग्री, जो कि नहीं बदला गया था।

$ mv blah2 blah2-new
$ ls blah2-soft
blah2-soft
$ cat blah2-soft  
cat: blah2-soft: No such file or directory

फ़ाइल की सामग्री नहीं मिली क्योंकि सॉफ्ट लिंक नाम को इंगित करता है, जो बदला गया था, और सामग्री के लिए नहीं।
इसी प्रकार, अगर blah1 हटा दिया गया है, blah1-hard अभी भी सामग्री रखती है; अगर blah2 हटा दिया गया है, blah2-soft एक गैर-मौजूदा फ़ाइल का सिर्फ एक लिंक है।


स्रोत: इसे स्पष्ट रूप से कॉपी करना स्टैक ओवरफ़्लो!


294
2017-07-21 07:33



आप के लिए उचित होना - आपने शीर्ष पर सुंदर छवि जोड़ दी है ... आह आपने भी इसकी प्रतिलिपि बनाई है! दो उत्तरों का मिश्रण वास्तव में बहुत उपयोगी है :) - icc97
बेहतर समझाया, कहीं नहीं! - dennisbot
मैंने 20 सेकंड के लिए छवि पर घूरते रहे और फिर अचानक, मैंने इसे समझ लिया। यह वास्तव में शानदार है। - Mohammed Joraid
बीटीडब्ल्यू: हार्डलिंक्स का उपयोग करना git  एक बुरा विचार है, बस किसी के मामले में (मुलायम लिंक पर निराश) आश्चर्य ... अन्य संस्करण प्रणालियों पर भी लागू हो सकता है। - Frank Nocke
क्या किसी भी डिवाइस पर क्लाउड में संग्रहीत फ़ाइल के समान इसकी हार्डलिंक्स में एक इनोड है? - Ooker


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

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

आप बता सकते हैं कि फ़ाइल के आउटपुट से कितने नाम हैं ls -l। फ़ाइल मोड के बाद पहला नंबर लिंक गिनती है। 1 से अधिक लिंक वाली एक फ़ाइल में अन्य नाम हैं, और इसके विपरीत, केवल 1 की लिंक गिनती वाली फ़ाइल में कोई अन्य (हार्ड) हार्ड लिंक नहीं है।


87
2018-05-18 15:23



If you replace the named file, then the link still contains the same name, and so now it points to the new file - मुझे लगता है कि यह अच्छी तरह से समझाया नहीं गया है। क्या आपका मतलब है कि अगर मैं उस फ़ाइल को प्रतिस्थापित करता हूं जहां मुझे प्रतीकात्मक लिंक मिला है, तो नाम वाले लिंक छूटे रहते हैं। लेकिन यह केवल प्रतिस्थापित फ़ाइल को इंगित करेगा जब इसकी फ़ाइल नाम (यानी पुरानी फाइल को प्रतिस्थापित करने वाली नई फ़ाइल) प्रतिस्थापित की गई है (यानी पुरानी फ़ाइल जिसे नए द्वारा प्रतिस्थापित किया गया है) एक, सही है? - Mike
@ माइक, हां: प्रतीकात्मक लिंक मूल फ़ाइल नाम को इंगित करता है, इसलिए उस फ़ाइल को प्रतिस्थापित करने का अर्थ है कि लिंक अब नई फ़ाइल को इंगित करता है। - psusi
बस अगर केवल वही नाम सही हो गया है? Symlink केले को इंगित करेगा और मैं फ़ाइल को नारंगी के साथ प्रतिस्थापित करता हूं, फिर sy लिंक फ़ाइल केले को नहीं ढूंढ सकता है यानी यह काम नहीं करेगा - Mike
@ माइक, दुनिया बदलने के इसका मतलब है कि इसका एक ही नाम है, अन्यथा आप केवल एक फ़ाइल को हटा रहे हैं और एक और जोड़ रहे हैं;) - psusi


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

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


57
2018-02-29 09:20



धन्यवाद, यह मुझे बताता है कि वे कैसे काम करते हैं, लेकिन हार्ड लिंक वास्तव में क्या करता है? और यह निर्देशिकाओं के लिए क्यों काम नहीं करता है? - ste_kwr
@knittl: आपको यकीन है? ऐसा लगता है कि कुछ फाइल सिस्टम निर्देशिकाओं के लिए हार्डलिंक की अनुमति है लेकिन केवल रूट ही उन्हें बना सकता है। देखें -d, -F, --directory स्विच। और हाँ, मैं है में नोट देखा ln(1) पृष्ठ :) - 0xC0000022L
@kniwor: हार्डलिंक का वर्णन करने का सबसे आसान तरीका है "एक ही फ़ाइल के लिए बस एक और नाम (यानी, डिस्क पर डेटा)"। और - कम से कम मेरे सिस्टम (ओं) पर - ln निर्देशिकाओं के लिए हार्डलिंक बनाने के लिए इस्तेमाल नहीं किया जा सकता है। निर्देशिकाओं के लिए हार्डलिंक्स मौजूद हैं, हालांकि, सबसे प्रमुख उदाहरण है . तथा ..। मैं इसे अपने मूल उत्तर में शामिल नहीं करना चाहता था, क्योंकि यह केवल चीजों को जटिल करेगा। - knittl
@STATUS_ACCESS_DENIED: ठीक है ठीक है ... लेकिन आमतौर पर यह एक अच्छा विचार नहीं है। यही कारण है कि मैंने आमतौर पर «मेरे मूल उत्तर में लिखा था। उदाहरणों के लिए मेरी पिछली टिप्पणी भी देखें। - knittl
तो एक कठिन लिंक उसी फ़ोल्डर / फ़ाइल को अलग-अलग नामों के साथ इंगित कर सकता है यानी अलग-अलग नाम जो एक ही इनोड से लिंक करते हैं? - Charlie Parker


अन्य धागे के उत्तरों में से एक (अब आपकी पोस्ट के शीर्ष से जुड़ा हुआ है) उल्लेख करता है यह पन्ना जो मुझे लगता है कि काफी अच्छा माध्यम-स्तर स्पष्टीकरण है। यदि आप एसीआई कला में खो रहे हैं, तो यहां टीएल; डी संस्करण है:

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

कर्नेल और फाइल सिस्टम शामिल सब कुछ पारदर्शी रूप से अनुवाद करते हैं।

तो उस पर आधारित है:

  • हार्ड-लिंक केवल समान-फाइल सिस्टम लिंकिंग की अनुमति देते हैं। सिम्लिंक किसी भी पथ पर इंगित कर सकते हैं।
  • हार्ड-लिंक (अनिवार्य रूप से) पूर्ण डेटा को इंगित करते हैं। सिम्लिंक रिश्तेदार पथ को इंगित कर सकते हैं (उदाहरण के लिए ../parent.file)
  • विस्तार से, यदि आप एक हार्ड-लिंक के लक्ष्य सूचक को स्थानांतरित करते हैं (जो, याद रखें, स्वयं अनिवार्य रूप से केवल एक हार्ड-लिंक इंगित होता है), हार्ड-लिंक अभी भी काम करता है। एक सिम्लिंक के लक्ष्य को स्थानांतरित करना आम तौर पर सिम्लिंक को तोड़ देगा।
  • हार्ड-लिंक को हल करना तेजी से होगा लेकिन अतुलनीय रूप से ऐसा होगा। गति का यह महत्वहीन हिस्सा एक लचीला फाइल सिस्टम की लागत पर आता है।

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

हार्डलिंक जोड़ना सिर्फ एक अतिरिक्त फाइल सिस्टम-आधारित सूचक के साथ एक इनोड प्रदान करता है। क्या वह सही है?


20
2018-05-18 15:10



मुझे लगता है कि आप सही हैं, प्रत्येक फ़ाइल एक इनोड के लिए पथनाम है, और एक हार्ड लिंक एक ही इनोड के लिए एक अतिरिक्त पथनाम है। तो एक हार्ड लिंक एक सामान्य फ़ाइल से अलग नहीं है। - enzotib
मैं इसे समझने की कोशिश कर रहा हूं ... लेकिन आप कहते हैं:> "प्रतीकात्मक-लिंक अलग-अलग फाइलें हैं (अलग इनोड सहित और डेटा) जो फाइल के लिए एक फाइल सिस्टम पथ संग्रहीत करता है। "क्या सिमलिंक में वास्तव में अलग डेटा होता है? तो यह सिर्फ डीआईआर की एक प्रति की तरह है, यह सही है ... और हर बार सिम्लिंक को कुछ लिखा जाता है, इसे करना होता है डिस्क पर दो बार लिखा जाना चाहिए? कोई समझ नहीं आता है। - MiniGod
@MiniGod No symlink डेटा के एक ब्लॉक में एक इनोड है जो किसी अन्य इनोड (फ़ाइल नाम) के लिए पथ संग्रहीत करता है। हाँ, यह मैट्रिक्स की तरह उलझन में है लेकिन एक बार जब आप इसे प्राप्त कर लेंगे, तो आप कभी नहीं भूलेंगे :) - Oli♦
@ ओली मैं उलझन में हो सकता हूं, लेकिन जब आप कहते हैं: "अलग इनोड सहित और डेटा ", आप का मतलब है कि symlink अलग डेटा है !? - MiniGod
@ मिनीगोद हाँ। सिम्लिंक डेटा में इंगित एक इनोड है (बस एक सामान्य फ़ाइल की तरह) और वह डेटा एक पथ है। यह उससे थोड़ा अधिक चालाक है - सिम्लिंक के माध्यम से पारदर्शी उपयोग की अनुमति देने के लिए - लेकिन यह अनिवार्य रूप से वे सभी हैं। - Oli♦


सॉफ्ट लिंक का उपयोग कब करें:

फाइल सिस्टम में लिंक करें: यदि आप फाइल सिस्टम में फाइलों को लिंक करना चाहते हैं, तो आप केवल सिम्लिंक / सॉफ्ट लिंक का उपयोग कर सकते हैं।

निर्देशिका के लिए लिंक: यदि आप निर्देशिका को लिंक करना चाहते हैं, तो आपको सॉफ्ट लिंक का उपयोग करना होगा, क्योंकि आप किसी निर्देशिका के लिए हार्ड लिंक नहीं बना सकते हैं।

हार्ड लिंक का उपयोग कब करें:

संग्रहण स्थान: हार्ड लिंक बहुत नगण्य मात्रा लेते हैं, क्योंकि हार्ड लिंक बनाने के दौरान कोई नया इनोड नहीं बनाया जाता है। मुलायम लिंक में हम एक फाइल बनाते हैं जो अंतरिक्ष का उपभोग करता है (आमतौर पर फाइल सिस्टम के आधार पर 4 केबी)

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

रिडंडेंसी: यदि आप अपने डेटा की सुरक्षा सुनिश्चित करना चाहते हैं, तो आपको कड़ी लिंक के रूप में हार्ड लिंक का उपयोग करना चाहिए, डेटा सुरक्षित है, जब तक कि फाइलों के सभी लिंक हटा दिए जाएं, इसके बजाय मुलायम लिंक में, आप हार जाएंगे डेटा अगर फ़ाइल का मास्टर इंस्टेंस हटा दिया गया है।


15
2017-09-06 23:48



ध्यान दें कि पथनाम आकार के लिए 64 बाइट तक एक तेज़ प्रतीकात्मक लिंक भी है। यह अभी भी एक इनोड लेता है, लेकिन 4 केबी ब्लॉक स्पेस का उपभोग नहीं करता है। - syockit


जब आप "फ़ाइल नाम" और हार्ड लिंक के बीच अंतर खोजने का प्रयास करते हैं तो भ्रम सेट होता है क्योंकि कोई भी नहीं है।

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

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

सिम्लिंक, जैसा कि पहले बताया गया था, बस आपको बताता है "नाम की एक फाइल है <targetname> नाम के एक फ़ोल्डर में <targetfolder>"वे हार्ड लिंक को इंगित करते हैं। वे नहीं जानते कि डेटा कहां है। हार्ड लिंक जानता है।


7
2018-03-01 11:28





एक उत्कृष्ट के लिए अनाडी-तथा-पूर्व Windoze-user-अनुकूल स्पष्टीकरण, के साथ अच्छा आरेख और ए सामान्य प्रश्न इस पेज को देखें http://www.geekride.com/hard-link-vs-soft-link/। जो अपने कॉपीराइट प्रतिबंध मुझे अपनी सामग्री को उद्धृत करने से रोकते हैं, इसलिए पर्याप्त है कि मैं यहां लिंक प्रदान करता हूं।

नरम / हार्ड-लिंक पहेली को पकड़ने में यह मेरा दूसरा या तीसरा प्रयास है, हमेशा तौलिया में फेंक रहा है और भविष्य में कुछ अनिश्चित समय तक मेरी समझ को स्थगित कर रहा है - जैसे ही स्पष्टीकरण और मैन-पेज गहराई से कर्नेल हो जाते हैं और इनोड और सभी के साथ अधिक तकनीकी ...

का आनंद लें!


3
2018-02-10 16:03





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


0
2017-07-03 15:39