हार्ड लिंक बनाना कब उपयोगी होगा?


11

हार्ड लिंक के साथ मूल रूप से दो मुख्य सीमाएँ हैं:

  1. सामान्य रूप से हार्ड लिंक के लिए लिंक और फाइल एक ही फाइल सिस्टम में रहते हैं।
  2. केवल सुपरसुसर एक निर्देशिका के लिए एक कड़ी बना सकता है।

इस प्रकार, कठोर लिंक की सीमाओं के आसपास पाने के लिए प्रतीकात्मक लिंक पेश किए गए थे। तो, सवाल यह है कि क्या हार्ड लिंक अभी भी आवश्यक हैं? क्या ऐसी स्थिति हो सकती है जहां वे अधिक उपयोगी हैं?


3
1) कुछ HTTP सर्वरों द्वारा साइमलिंक का पालन नहीं किया जाता है 2) बैकअप के लिए हार्ड लिंक का उपयोग किया जा सकता है 3) आप chixots के बीच यूनिक्स सॉकेट साझा कर सकते हैं 4) आप दूसरों को प्रभावित किए बिना हार्ड लिंक के किसी भी संस्करण को हटा सकते हैं
डिट्रिच एप

क्या वे HTTP सर्वर एक हार्डलिंक का उपयोग कर सकते हैं जो एक सिमलिंक की ओर इशारा करता है? , या मैं बकवास कर रहा हूँ?
अरणा

जवाबों:


11

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


1
या फिर एक के बाद एक कार्यक्रम हो सकता है एक से तीन नामों से आह्वान करना चाहता है कि gzip, gunzip, और zcat
JdeBP

8

एक फ़ाइल की सामग्री तब तक शुद्ध नहीं होगी जब तक कि सभी हार्ड लिंक (हाँ, सभी फ़ाइलनाम हार्ड लिंक नहीं हैं, यहां तक ​​कि पहले) मिटा दिए गए हैं और फ़ाइल बंद हो गई है। इस प्रकार, यह उपयोगी है जब एक फ़ाइल को कई जगहों पर की आवश्यकता होती है हो सकता है, लेकिन किसी भी समय उनमें से किसी से हटाया जा सकता, के बीच जैसे ~/Downloads/coolsong.mp3और ~/Music/Cool Song.mp3


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

1

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


बहुत बढ़िया बिंदु। सोलारिस में, कोई सहानुभूति का उपयोग करके छोरों का निर्माण कर सकता है, जिसका प्रसंस्करण और भी मजेदार है :-)

1

हार्ड-लिंक के कई कारण हैं

  1. अंतिम संदर्भ चले जाने तक फ़ाइल का संदर्भ रखना (जैसा कि इग्नासियो ने बताया है)
  2. जब आप हार्ड-लिंक फाइल करते हैं, तो वे केवल फाइल सिस्टम में एक फाइल का स्थान लेते हैं (फाइल के दोनों संदर्भ समान आई-नोड्स साझा करते हैं)। इसलिए हार्ड-लिंक एक ही फाइल सिस्टम पर होना चाहिए।

तो हार्ड-लिंक का उपयोग करने का एक कारण संभवतः बहुत सारी जगह बचाना है ...

आप संदर्भों में से किसी को भी जोड़ सकते हैं और डेटा साझा फ़ाइल में चला जाता है। आप दूसरे से पढ़ते समय एक फाइल डिस्क्रिप्टर पर भी आवेदन कर सकते हैं (जैसे टेल-एफ के साथ)


0

यहां दिए गए कई उदाहरण मान्य हैं, लेकिन नरम लिंक के साथ समान रूप से अच्छी तरह से काम करेंगे (उदाहरण के लिए "कई स्थानों में एक फ़ाइल की आवश्यकता है")।

जहां हार्ड लिंक वास्तव में सहायक होते हैं के लिए एक अच्छा उदाहरण बैकअप सॉफ्टवेयर है Dirvish :

Dirvish एक फास्ट, डिस्क आधारित, रोटेटिंग नेटवर्क बैकअप सिस्टम है।

Dirvish के साथ आप अपने फाइल सिस्टम की पूरी छवियों के एक सेट को अप्राप्य निर्माण और समाप्ति के साथ बनाए रख सकते हैं। एक dirvish बैकअप वॉल्ट आपके डेटा के लिए टाइम मशीन की तरह है।

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

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

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

यह केवल इसलिए संभव है क्योंकि हार्ड लिंक उपयोगकर्तास्पेस टूल के लिए पूरी तरह से पारदर्शी हैं।

यह शायद प्रतीकात्मक लिंक के साथ भी काम करेगा (हालाँकि आपको डेटा का उपयोग करते समय समस्याएँ आएंगी जो प्रतीकात्मक लिंक का उपयोग करता है), लेकिन केवल एक कड़ी कड़ी के साथ संभव है:

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


Rsnapshot की तरह लगता है।
इग्नासियो वाज़केज़-अब्राम्स

0

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

यदि आप किसी कारण से भविष्य के उपयोग के लिए उस टारबॉल को संरक्षित करना चाहते हैं, तो सबसे अच्छा तरीका ln /tmp/tarball.tgz ~यह है कि टारबॉल अभी भी डाउनलोड किया जा रहा है। फिर आपको कुछ करने की जरूरत नहीं है।

जब डाउनलोड पूरा हो जाता है, और आपके कार्यक्रम के 'मूल' को हटा देने के बाद भी, सटीक प्रतिलिपि अभी भी आपके होम डायरेक्टरी में होनी चाहिए।


0

मैं अपने 'HowTos' और स्निपेट्स के कुछ बैकअप के लिए 'हार्ड लिंक्स' का उपयोग करता हूं

मेरे पास अपने उपयोगकर्ता / रूट में 'साझा डॉक्स' नाम की एक निर्देशिका है। उस निर्देशिका में मेरे पास मेरी युक्तियों, ट्रिक्स, स्निपेट्स, हाउटो के 'हार्ड लिंक' हैं जो उनकी उपयुक्त निर्देशिकाओं में रहते हैं; php, mysql, css, regex, सूत्र, linux इत्यादि, उन्हें 'एक जगह' में रखने से इसका उपयोग करना बहुत आसान हो जाता है, अपने दस्तावेज़ों / निर्देशिकाओं में इधर-उधर कूदने की तुलना में उन्हें अपडेट करें, इन दस्तावेज़ों की तलाश में मैं अक्सर उपयोग करता हूं।

बहुत समय पहले, मैंने सीमलिंक का उपयोग किया था। मैं अपने सर्वर पर इस सामान्य 'साझा डॉक्स' निर्देशिका का बैकअप लेता हूँ। समस्या है, सहानुभूति या 'सॉफ्ट लिंक्स', यदि कॉपी (cp -auv) या tar'ed और कॉपी ऑफ, केवल बैकअप या 'लिंक' की प्रतिलिपि बनाएँ और दस्तावेज़ की सामग्री नहीं। इसलिए, मुझे निर्देशिकाओं का पता लगाना होगा और प्रत्येक 2 दर्जन फाइलों को उनके वास्तविक स्थान से कॉपी करना होगा।

हार्ड लिंक के साथ, मैं 'साझा डॉक्स' निर्देशिका को कॉपी, टार, rsync कर सकता हूं और वास्तव में आत्मविश्वास के साथ व्यापक रूप से बिखरे हुए दस्तावेज़ों का बैकअप लेता है, सामग्री वास्तव में बैकअप है। यह वास्तव में मेरे लिए चूसा है, जब मुझे एहसास हुआ कि मैं 0 कड़ियाँ 'लिंक फ़ाइलों' का समर्थन कर रहा हूँ और जानकारी नहीं।

'हार्ड लिंक्स' का उपयोग करने के लिए नकारात्मक यह है कि एक निर्देशिका पर ls करने से आपको यह संकेत नहीं मिलता है कि एक फ़ाइल किसी अन्य फ़ाइल के साथ 'लिंक' है या जहाँ वह फ़ाइल सह-अस्तित्व में है। उन्हें खोजने के तरीके हैं, लेकिन मैं कह रहा हूं कि यह एक साधारण ls के साथ स्पष्ट नहीं है -l -> को इंगित करता है ... इसलिए, मैं आमतौर पर दस्तावेज़ की शुरुआत में एक नोट जोड़ता हूं जो यह दर्शाता है कि यह फ़ाइल किस निर्देशिका / फ़ाइलों को इंगित करती है। के साथ 'साझा' किया जाता है

लैंडिस।

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