सवाल "निर्देशिका जंक्शन" बनाम "निर्देशिका प्रतीकात्मक लिंक"?


एनटीएफएस के संदर्भ में:

MKLINK [[/D] | [/H] | [/J]] Link Target

/D      एक निर्देशिका प्रतीकात्मक लिंक बनाता है। डिफ़ॉल्ट एक फ़ाइल प्रतीकात्मक लिंक है।
/H      एक प्रतीकात्मक लिंक के बजाय एक कठिन लिंक बनाता है।
/J      एक निर्देशिका जंक्शन बनाता है।
Link    नया प्रतीकात्मक लिंक नाम निर्दिष्ट करता है।
Target  पथ (रिश्तेदार या पूर्ण) निर्दिष्ट करता है कि नया लिंक संदर्भित करता है।

  1. एक नहीं है निर्देशिका जंक्शन एक जैसी ही चीज़ निर्देशिका प्रतीकात्मक लिंक?

    के बीच क्या अंतर है mklink /D f1 f2 तथा mklink /J f1 f2 ?

  2. चूंकि एक "निर्देशिका" वास्तव में सिर्फ एक है फ़ाइल, निर्देशिका प्रतीकात्मक लिंक और फ़ाइल प्रतीकात्मक लिंक के बीच क्या अंतर होगा?


344
2017-10-05 03:28


मूल


सम्बंधित: superuser.com/q/347930/24500 - surfasb


जवाब:


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

मान लीजिए कि एलिस नाम की एक मशीन पर आपको जंक्शन बिंदु डालना था c:\myjp और एक निर्देशिका प्रतीकात्मक लिंक c:\mysymlink, दोनों ओर इशारा करते हुए c:\targetfolder। जबकि आप ऐलिस का उपयोग कर रहे हैं तो आप उनके बीच बहुत अंतर नहीं देखेंगे। लेकिन यदि आप बॉब नाम की एक और मशीन का उपयोग कर रहे हैं, तो जंक्शन बिंदु

\\Alice\c$\myjp इंगित करेगा \\Alice\c$\targetfolder

लेकिन प्रतीकात्मक लिंक

\\Alice\c$\mysymlink इंगित करेगा \\Bob\c$\targetfolder

(चेतावनी: डिफ़ॉल्ट रूप से, सिस्टम रिमोट वॉल्यूम पर सिम्लिंक का पालन नहीं करता है, इसलिए ज्यादातर मामलों में दूसरा उदाहरण वास्तव में परिणाम देगा "फाइल नहीं मिली" या "प्रतीकात्मक लिंक का पालन नहीं किया जा सकता क्योंकि इसका प्रकार अक्षम है।")

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

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


325
2017-10-22 19:03



बस स्पष्ट होने के लिए: निर्देशिका जंक्शन और निर्देशिका प्रतीकात्मक लिंक के बीच अन्य subtler कार्यात्मक अंतर भी हो सकता है। रिमोट बनाम स्थानीय चीज सिर्फ उपयोगकर्ता (सबसे डेवलपर के विपरीत) परिप्रेक्ष्य से सबसे स्पष्ट है। - Harry Johnston
@MatthewSteeples का मतलब है कि अगर मैं एक प्रतीकात्मक लिंक बना देता हूं C:\testlink (जो इंगित करता है C:\test मेरे कंप्यूटर पर) और कोई मेरे कंप्यूटर पर रिमोट एक्सेस और क्लिक करता है C:\testlink, यह हल होगा C:\test अपने कंप्यूटर पर, जबकि अगर मैं एक निर्देशिका जंक्शन बनाते हैं C:\testlink (जो इंगित करता है C:\test मेरे कंप्यूटर पर), और कोई मेरे कंप्यूटर पर रिमोट एक्सेस और क्लिक करता है C:\testlink) यह उसे ले जाएगा C:\test मेरे कंप्यूटर पर? या क्या मुझे यह गलत रास्ता मिल गया? - Pacerier
@Pacerier इस संदर्भ में हाँ, लेकिन प्रतीकात्मक लिंक आपको अपने कंप्यूटर पर एक फ़ोल्डर रखने की अनुमति देता है जो नेटवर्क शेयर को इंगित करता है (क्योंकि वे क्लाइंट पक्ष को हल कर रहे हैं)। उदाहरण सी: \ MyNetworkShare वास्तव में \\ ऐलिस \ शेयर को इंगित कर सकता है - Matthew Steeples
@MatthewSteeples लेकिन हम एक निर्देशिका जंक्शन नहीं बना सका C:\MyNetworkShare जो इंगित करता है \\Alice\Share भी? - Pacerier
@Pacerier, नहीं, जंक्शन अंक स्थानीय होना चाहिए। - Harry Johnston


कॉम्प्लेक्स टॉक मस्तिष्क को चोट पहुंचाता है - मुझे चार्ट पसंद है:

किसी भी मान लें MyLink एक प्रतीकात्मक लिंक और कोई भी है MyJunc एक जंक्शन इंगित करता है Target as created

जैसे

mklink /D MyLink C:\T_Dir लक्ष्य निर्देशिका के लिए एक प्रतीकात्मक लिंक बनाने के लिए

mklink /J MyJunc C:\T_Dir लक्ष्य निर्देशिका में निर्देशिका जंक्शन बनाने के लिए

जहां वाक्यविन्यास है mklink [/J,/D] [link path] [target path] जैसा कि स्थानीय मशीन पर टाइप किया गया है


 link path    |   target path   |         When accessed ..
              |                 |  (locally)    |    (remotely)
              |                 |               |
C:\MyLink     |   C:\T_Dir      |  C:\T_Dir     |  [leads back to local]
C:\MyJunc     |   C:\T_Dir      |  C:\T_Dir     |  [leads to remote]
              |                 |
\\Svr\MyLink  |   C:\T_Dir      |   C:\T_Dir    |  [leads back to local]
\\Svr\MyJunc  |   C:\T_Dir      |  *** Must create and point local ***
              |                 |
C:\MyLink     |  \\Sv2\T_Dir    |  \\Sv2\T_Dir  |   Error*1
C:\MyJunc     |  \\Sv2\T_Dir    |  *** Error - Must point local ***
              |                 |
\\Svr\MyLink  |  \\Sv2\T_Dir    |  Error*1
\\Svr\MyJunc  |  \\Sv2\T_Dir    |  *** Must create link using target device ***

त्रुटि * 1 - यदि आपने अपनी स्थानीय मशीन पर दूरस्थ प्रतीकात्मक लिंक तक पहुंच को अनवरोधित किया है, तो यह काम करेगा .. लेकिन केवल स्थानीय मशीन पर जहां यह अनब्लॉक किया गया है


44
2018-02-02 16:30



यह बहुत अजीब है। यहां तक ​​कि सापेक्ष प्रतीकात्मक लिंक भी दूरस्थ रूप से काम नहीं करते हैं। जैसे मैं एक निर्देशिका बनाते हैं d:\_tmp\data। इस प्रकार लिंक बनाएं: d:\_tmp>mklink /d data-link data। रिमोट उपयोगकर्ता के पास पूर्ण पहुंच है d:\_tmp और इसके सभी सबफ़ोल्डर लेकिन वह अभी भी खोलने में सक्षम नहीं होगा d:\_tmp\data-link। - Nux
इसका कारण यह है कि जब एक प्रतीकात्मक लिंक क्लाइंट-साइड का मूल्यांकन करता है तो यह क्लाइंट पर डी: \ _ tmp \ डेटा को इंगित करेगा, न कि सर्वर पर। - apraetor
मुझे लगता है कि यह अजीब क्यों है स्पष्ट है। लेकिन मैं @ नक्स से सहमत हूं कि कम से कम रिश्तेदार सिम्लिंक के मामले में यह अजीब है। - Jon Coombs


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

enter image description here

** गति / जटिलता में अंतर का बयान एक असत्यापित कथन से आता है NTFS reparse अंक पर विकिपीडिया प्रविष्टि (एक अच्छा पढ़ा)। *


अन्य एनटीएफएस लिंक तुलना

यहां विषय पर कुछ अन्य तुलनाएं दी गई हैं, लेकिन जंक्शनों पर विचार करते समय ये भ्रामक हो सकते हैं क्योंकि वे ऊपर सूचीबद्ध लाभों की सूची नहीं देते हैं।

यहां से लिया गया (एक अच्छी प्रारंभिक पढ़ा)

enter image description here

से एमकेलिंक पर एसएस 64 पेज

enter image description here


शब्दावली के बारे में टिप्पणियाँ

जंक्शन प्रतीकात्मक लिंक हैं

जून और प्रतीकात्मक लिंक वास्तव में वही काम कर रहे हैं (रिपार पॉइंट्स), उपर्युक्त मतभेदों के अलावा, इन्हें कैसे संसाधित किया जाता है। वास्तव में, तकनीकी रूप से, एक जंक्शन एक प्रतीकात्मक लिंक है, और कभी-कभी प्रलेखन एक जंक्शन को एक प्रतीकात्मक लिंक कह सकता है, जैसा मामला है। तो, यह शब्दावली के बारे में जागरूक होने के लिए कुछ है।

NTFS

भले ही ओपी इसे निर्दिष्ट करता है, यह इंगित करने लायक है कि "प्रतीकात्मक लिंक" एक बहुत ही सामान्य शब्द है जो NTFS के लिए विशिष्ट नहीं है। इसलिए, विशिष्ट होने के लिए, यह तुलना एनटीएफएस जंक्शन बनाम एनटीएफएस प्रतीकात्मक लिंक के बारे में है।


23



किसी ने जूनिक बनाम प्रतीकात्मक लिंक की प्रसंस्करण गति का परीक्षण किया? - 1000Gbps
पेशेवर / विपक्ष चार्ट बेहद सहायक था, धन्यवाद! - GordonM