आप एक फ़ाइल को हार्ड लिंक से अलग कर सकते हैं और इसे "लिंक काउंट" के साथ एक गैर-हार्ड-लिंक फ़ाइल से अलग कर सकते हैं। मैं कमांड लाइन से इसे प्राप्त करने के दो तरीके देखता हूं:
% stat original
File: ‘original’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 804h/2052d Inode: 932815 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 500/ bediger) Gid: ( 1000/ bediger)
Access: 2012-07-13 22:13:52.317101530 -0600
Modify: 2012-07-13 22:13:52.317101530 -0600
Change: 2012-07-13 22:14:08.050894536 -0600
Birth: -
या
1010 % ls -li
total 0
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 original
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 secondary
"शयनकक्ष" से पहले 'अकेला' लिंक लिंक है। ध्यान दें कि दोनों फाइलनाम में एक ही इनकोड संख्या, 932815 है।
मुझे यकीन है कि इन दोनों कमांडों को स्ट्रक्च स्टैनल के st_nlink फील्ड से लिंक काउंट मिलता है, जो stat()
सिस्टम कॉल से भर जाता है ।
पास के रूप में मैं बता सकता हूँ के रूप में, चल tar
साथ --hard-dereference
का मतलब है कि बजाय दो अलग फ़ाइल नामों के साथ एक एकल फाइल हो रही है (उपरोक्त उदाहरण में के रूप में) की, आप एक ही फ़ाइल नाम के साथ दो फ़ाइलों, प्रत्येक मिलता है। tar
शायद प्रत्येक फ़ाइल पर लिंक की गिनती की जाँच करता है, और निकालने के दौरान डिफ़ॉल्ट रूप से, यह हार्ड-लिंक किए गए फ़ाइल डेटा के लिए दूसरे फ़ाइलनाम पर एक हार्ड लिंक बनाता है। जब इसे --hard-dereference
आर्काइव के निर्माण के साथ बुलाया जाता है , तो यह दूसरी फ़ाइल नाम के लिए एक पूरी तरह से नई फ़ाइल बनाने के लिए प्रकट होता है जब tar
रनों का निष्कर्षण आह्वान होता है।