क्या cp -l या ln के साथ हार्डलिंकिंग में अंतर है?


15

मैं rsync और हार्डलिंक का उपयोग करके एक बैकअप योजना लागू कर रहा हूं। मुझे पता है कि मैं हार्डलिंक करने के लिए rsync के साथ लिंक-डिस्ट का उपयोग कर सकता हूं, लेकिन मैंने rsync में "लिंक-डेस्ट" लागू होने से पहले "cp -l" का उपयोग करने का उल्लेख किया था। मुझे पता है कि हार्डलिंक करने का एक और तरीका "एलएन" है।

तो मेरा सवाल है, जिज्ञासा से बाहर: "ln" का उपयोग करने की तुलना में "cp -l" का उपयोग करके हार्डलिंक बनाने में कोई अंतर है?


लिंक अप्रभेद्य हैं।
रिसी

आपके कहने का मतलब है कि कोई अंतर नहीं है? उनका उपयोग परस्पर किया जा सकता है?
twan163

मैंने खुद थोड़ा परीक्षण किया, लेकिन पहली नजर में दोनों के बीच कोई अंतर नहीं देखा जा सका।
twan163

cp: illegal option -- lक्या आप सुनिश्चित हैं कि cp में l विकल्प है?
टॉम

जवाबों:


16

दोनों के परिणाम समान होने चाहिए, इसमें मूल फ़ाइल के लिए एक कड़ी बनाई जाती है।

अंतर इच्छित उपयोग में है और इसलिए प्रत्येक कमांड के लिए विकल्प उपलब्ध हैं। उदाहरण के लिए, cpपुनरावृत्ति का उपयोग कर सकते हैं जबकि lnनहीं कर सकते:

cp -lr <src> <target>

में <target>सभी फ़ाइलों के लिए हार्ड लिंक बनाएगा <src>। (यह नई निर्देशिकाएं बनाता है; लिंक नहीं) इसका परिणाम यह होगा कि निर्देशिका वृक्ष की संरचना नीचे के <target>समान दिखाई देगी <src>। यह इस बात से भिन्न होगा cp -r <src> <target>कि उत्तरार्द्ध का उपयोग करके प्रत्येक फ़ाइल और फ़ोल्डर की प्रतिलिपि बनाई जाएगी और प्रत्येक को एक नया दिया जाएगा inodeजबकि पूर्व सिर्फ फाइलों पर हार्ड लिंक का उपयोग करता है और इसलिए बस उनकी Linksगिनती बढ़ाता है।

जब आपके उदाहरण में, किसी एकल फ़ाइल की प्रतिलिपि बनाने के लिए उपयोग किया जाता है, तो परिणाम समान होंगे।


अगर मैं सही तरीके से समझूं, तो "cp -lr" सभी फाइलों के लिए हार्डलिंक बनाएगा, लेकिन अगर <लक्ष्य> में अनुपलब्ध निर्देशिकाएं हैं, तो इन्हें नया बनाया जाएगा (<लक्ष्य> में निर्देशिकाओं के लिए कोई हार्डलिंक नहीं)?
14:16 बजे twan163

हाँ, यह सही है। आप निर्देशिकाओं के लिए कड़ी नहीं बना सकते। इसलिए फ़ाइल / निर्देशिका संरचना को रखने के लिए, यह 'वास्तविक' निर्देशिकाओं के अंदर फाइलों के लिए कड़ी-कड़ी बन जाता है।
garethTheRed

"cp -lr" के लिए व्यवहार के बारे में: फ़ाइलों के लिए हार्डलिंक ... निर्देशिकाओं के लिए नई निर्देशिका। थोड़ा अजीब लगता है, लेकिन मुझे लगता है कि यह "अजीब" व्यवहार बाधाओं का एक दुष्प्रभाव है (निर्देशिकाओं के हार्डलिंक नहीं हो सकते हैं)। ||| यह भी देखें कि संदर्भ के लिए यह भी है कि हार्डलिंक्स की जानकारी के लिए कुछ लिंक पूछे जाने वाले प्रश्न के लिए Directubis ref1 से अनुमति नहीं है और unix.stackexchange से ref2 है
ट्रेवर बॉयड स्मिथ

2

लिंक कम से कम सिस्टम कॉल का उपयोग करता है, उसके बाद ln और अंत में cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.