क्या प्रतीकात्मक लिंक वास्तव में डिस्क उपयोग में अंतर करते हैं?


21

मैंने बहुत सी वेबसाइटों में पढ़ा है कि, लिनक्स में, प्रतीकात्मक लिंक (सॉफ्ट लिंक, सिमिलिंक) सिर्फ पॉइंटर्स की तरह हैं जो एक और फाइल को संदर्भित करते हैं, जो कहीं भी स्थित हो सकती है (जैसे विंडोज शॉर्टकट)। हालाँकि, जब मैं उस फ़ोल्डर के डिस्क उपयोग की जांच करता हूं जिसमें प्रतीकात्मक लिंक होते हैं, तो मेरे फ़ाइल प्रबंधक के कहने और क्या duरिपोर्ट के बीच एक बेमेल संबंध होता है। हालाँकि, यदि मैं du -L( -L, --dereference; dereference all symbolic linksमैन पेज से) टाइप करता हूं, तो मेरे फाइल मैनेजर की रिपोर्ट का उत्पादन du -Lऔर आकार समान है

मेरा प्रश्न है : अगर मेरे पास एक बड़ी फाइल के लिए सॉफ्टलिंक है, उदाहरण के लिए, मेरा अलगhomeविभाजन, तो क्या मुझे कोई समस्या होगी?

उदाहरण :

मेरा /var/tmpफ़ोल्डर अब सादा खाली है। चलो एक फ़ाइल बनाएँ:

$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total

और मेरे फ़ाइल प्रबंधक (थूनर, इस मामले में) की रिपोर्ट

आकार: 1 आइटम, कुल 163.0 kB

ठीक है। अब, इसमें एक बहुत बड़ी फ़ाइल /tmpऔर इसके लिए एक सिम्लिंक बनाने देता है:

$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0   ./heavy.txt
168 .
168 total

अभी सब कुछ ठीक है। लेकिन अगर मैं अपना फाइल मैनेजर खोलूं:

आकार: 2 आइटम, कुल 570.3 kB

और अंत में:

$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total

यदि जो विभाजन /var/tmpस्थित है वह 1 GiB बड़ा है, और मैं इसमें एक लिंक 1 GiB फ़ाइल में बनाता हूं, disk क्या मेरी हार्ड डिस्क मर जाएगी? मुझे पता है कि du168 और थूनर 1 GiB को आउटपुट देगा, लेकिन मुझे नहीं पता कि यह सही है।


क्या आप सुनिश्चित हैं कि एक प्रोग्राम Mib में उदाहरण के लिए रिपोर्टिंग नहीं कर रहा है, और दूसरा MB में?
हैंडींडी

नहींं, यह कोई समस्या नहीं है।
astrojuanlu

जवाबों:


34

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

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

duएक निर्देशिका ट्री शो में (आमतौर पर) फ़ाइल आकार के कुल से थोड़ा अधिक होता है। वह दो चीजों के कारण है। सबसे पहले, duनिर्देशिकाओं को भी गिना जाता है, जो फ़ाइल नाम और मेटाडेटा को संग्रहीत करने के लिए थोड़ा कमरा लेते हैं। दूसरा, duकिसी फ़ाइल द्वारा लिया गया डिस्क स्थान गिना जाता है, जो फ़ाइल के आकार से अलग हो सकता है: सबसे आम प्रभाव यह है कि फाइलें एक पूर्णांक संख्या (4kB एक विशिष्ट लिनक्स इंस्टॉलेशन पर) लेती हैं, इसलिए 1-बाइट फ़ाइल कर सकते हैं डु आउटपुट में 4kB के रूप में दिखाना; लेकिन संपीड़न (जैसे कि हर यूनिक्स फाइल सिस्टम पर विरल फ़ाइलों द्वारा प्रदान किया जाने वाला आदिम रूप ) फ़ाइल का आकार इसके डिस्क उपयोग से बड़ा बना सकता है।

आपके द्वारा दिए गए नंबरों से, ऐसा प्रतीत होता है कि थुनार प्रतीकात्मक लिंक के बाद डायरेक्टरी ट्री में फाइलों के आकार के योग की रिपोर्ट करता है । यह वास्तव में सूक्ष्म तरीके से ऐसा कह रहा है - यह दावा कर रहा है कि कुल आकार 570.3 kB है, ऐसा नहीं है कि डिस्क का उपयोग 570.3 kB है। उपयोगकर्ता इंटरफ़ेस या दस्तावेज़ीकरण से जो कुछ भी स्पष्ट नहीं है वह यह है कि थूनर आकार की गणना करते समय प्रतीकात्मक लिंक का अनुसरण करता है।

कौन सा "सही" एक व्यक्तिपरक मामला है। duडिस्क उपयोग की रिपोर्ट करता है। थूनर प्रतीकात्मक लिंक के बाद कुल आकार की रिपोर्ट करता है। एक प्रतीकात्मक लिंक बनाने का डिस्क उपयोग पर एक नगण्य प्रभाव पड़ता है, लेकिन परिभाषा से कुल-आकार-निम्नलिखित-प्रतीकात्मक-लिंक बदल जाते हैं जो थूनार रिपोर्ट करता है।


मैंने अपना प्रश्न संपादित कर लिया है, इसलिए मुझे लगता है कि अब बहुत स्पष्ट है, लेकिन उत्तर के लिए धन्यवाद।
astrojuanlu

@ Juanlu001: मैंने तदनुसार अपना उत्तर अपडेट किया है। संक्षेप में, duडिस्क उपयोग दिखाता है, जबकि थूनर कुछ और दिखाता है।
गिल्स एसओ- बुराई को रोकना

अंतर महत्वपूर्ण है जब आप बैकअप बनाते हैं जो सिमलिंक को हल करता है। आप ऐसा करना चाह सकते हैं, यदि आप जानते हैं कि आपके पास एक पेड़ के नीचे कई सिम्लिंक हैं जो एक पेड़ के बाहर के स्थानों के लिए हल करते हैं, लेकिन उस पेड़ के बाहर बाकी सामान आपके लिए महत्वपूर्ण नहीं है।
मेल

3

मुझे लगता है कि डिफ़ॉल्ट रूप से आपका फ़ाइल प्रबंधक उन फ़ाइलों का आकार प्राप्त करने की कोशिश कर रहा है, जो सॉफ्ट लिंक इंगित कर रहे हैं, जबकि duआपको निर्देशिका का आकार और सॉफ्ट लिंक स्वयं देता है, लेकिन उन फ़ाइलों को नहीं जो वे इंगित कर रहे हैं।

स्पष्टीकरण देना,

`du`    -> size of directory + size of all the softlinks  
`du -L` -> size of directory + size of all the files that the softlinks are pointing to.

मुझे यकीन नहीं है कि यह वही है जो आप पूछ रहे थे, लेकिन अगर यह है, तो मेरा मानना ​​है कि यह आपके प्रश्न का उत्तर हो सकता है।


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