“Dizin bağlantısı” vs “dizin sembolik bağlantısı”?


393

NTFS kapsamında:

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

/D Dizin sembolik bir bağlantı oluşturur. Varsayılan bir dosya sembolik bağdır.
/H Sembolik bir link yerine sert bir link oluşturur.
/J Bir Dizin Kavşağı oluşturur.
Link yeni sembolik link adını belirtir.
Target Yeni bağlantının başvurduğu yolu (göreceli veya mutlak) belirtir.

  1. Bir dizin kavşağı , dizin sembolik bağlantısı ile aynı şey değil mi?

    Arasındaki fark nedir mklink /D f1 f2ve mklink /J f1 f2?

  2. Bir "dizin" aslında sadece bir dosya olduğundan , bir dizin sembolik bağlantısı ile bir dosya sembolik bağlantısı arasındaki fark nedir?


Yanıtlar:


364

Bir kavşak kesinlikle benzer bir şekilde davransalar da, dizin sembolik bir bağlantıyla aynı şey değildir. Temel fark, eğer uzak bir sunucuya bakıyorsanız, bağlantıların sunucuda işlenmesi ve dizinde sembolik bağlantıların istemcide işlenmesidir . Ayrıca, Matthew’nin yerel dosya sistemindeki sembolik bağlantıların uzak dosya sistemlerine işaret edebileceği gerçeğine ilişkin yorumuna bakınız.

Diyelim ki Alice adında bir makinede , her ikisine de işaret eden bir bağlantı noktası c:\myjpve dizin sembolik bir bağlantı koymak zorundasınız . Alice'i kullanırken aralarında çok fazla fark olmaz. Ama Bob adında başka bir makine kullanıyorsanız, bağlantı noktasıc:\mysymlinkc:\targetfolder

\\Alice\c$\myjp işaret edecek \\Alice\c$\targetfolder

ama sembolik bağ

\\Alice\c$\mysymlink işaret edecek \\Bob\c$\targetfolder

(Uyarı: varsayılan olarak, sistem uzak birimlerdeki sembolik bağlantıları takip etmez, bu nedenle çoğu durumda ikinci örnek aslında "Dosya Bulunamadı" ya da "Sembolik bağlantı izlenemez çünkü türü devre dışıdır." )

Dizin sembolik bağlantısı ve dosya sembolik bağlantısı arasındaki fark, yalnızca birinin bir dizini ve diğeri bir dosyayı temsil etmesidir. Bağlantı oluşturulduğunda bağlantının hedefinin bulunması gerekmediğinden, dosya sisteminin uygulamalara bir dizin olup olmadığını bildirmesi gerekir.

Ayrıca, sembolik bir bağlantı oluşturmanın özel ayrıcalık gerektirdiğini (varsayılan olarak, yalnızca yüksek işlemlerde kullanılabilir), ancak bir kavşak oluşturmanın sadece dosya sistemine erişim gerektirdiğini belirtmek gerekir.


13
Sadece açık olmak gerekirse: dizin kavşakları ve dizin sembolik bağları arasında başka bir ince fonksiyonel farklılıklar olabilir. Uzak ve yerel olan, bir kullanıcı (geliştiricinin aksine) bakış açısından en açık olanıdır.
Harry Johnston,

12
@MatthewSteeples ben sembolik bir bağlantı oluşturursanız anlamına yapmak C:\testlink(işaret C:\testbenim bilgisayarda) ve birisi uzaktan erişim bilgisayarımı ve tıkladığı C:\testlink, bu kadar çözümlenebileceğini C:\testbir dizin kavşak oluşturursanız Oysa HIS bilgisayarda C:\testlink(işaret hangi C:\testbilgisayarımdan) ve birisi uzaktan bilgisayarıma erişip tıklarsa C:\testlink) bilgisayarıma açılmasına neden olur C:\test? Yoksa yanlış yoldan mı anladım?
Pacerier

9
@Pacerier bu bağlamda evet, ancak sembolik bağlantılar bilgisayarınızda bir ağ paylaşımına işaret eden bir klasöre sahip olmanıza izin veriyor (çünkü onlar çözümlenmiş istemci tarafı). C: \ MyNetworkShare aslında \\ Alice \ 'i gösterebilirdi
Matthew Steeples 6:11

6
@MatthewSteeples ama biz C:\MyNetworkSharede işaret eden bir dizin kavşağı yaratamaz mıydık \\Alice\Share?
Pacerier

8
@Pererier, hayır, birleşme noktaları yerel olmak zorunda.
Harry Johnston,

55

Karmaşık konuşma beynimi incitiyor - Ben grafikleri severim:

Herhangi MyLinkbirinin sembolik bir bağlantı olduğunu ve herhangi MyJuncbirinin işaret eden bir kavşak olduğunu varsayalım Target as created.

Örneğin

mklink /D MyLink C:\T_Dir Hedef dizine sembolik bir bağlantı oluşturmak için

mklink /J MyJunc C:\T_Dir Hedef dizine bir dizin bağlantısı oluşturmak için

mklink [/J,/D] [link path] [target path]Yerel makinede sözdiziminin yazıldığı yer


 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 ***

Hata * 1 - Yerel makinenizdeki uzak sembolik bağlantılara erişimin engellenmesini engellediyseniz, bu işe yarar .. ancak yalnızca engellendiği yerel makinede çalışır


3
Bu çok garip. Göreceli sembolik bağlar bile uzaktan çalışmaz. Örneğin ben bir dizin oluşturuyorum d:\_tmp\data. Şöyle bağlantı oluşturun: d:\_tmp>mklink /d data-link data. Uzak kullanıcı d:\_tmpve tüm alt klasörlerine tam erişime sahiptir , ancak yine de açamayacaktır d:\_tmp\data-link.
Nux

4
Bunun nedeni, sembolik bir bağlantı müşteri tarafından değerlendirildiğinde, sunucuda değil istemcide d: \ _ tmp \ verisine işaret etmesidir.
apraetor,

Garip olmasının sebebinin açık olduğunu düşünüyorum. Ama @Nux ile en azından göreceli sembolik bağlantılarda garip olduğuna katılıyorum.
Jon Coombs

Complex talk hurts brain -- I like chartsBu cümleyi ve çizelgeyi de seviyorum.
Luke,

46

Sembolik bağlar daha fazla işlevselliğe sahiptir, ancak kavşaklar sınırlamaları nedeniyle neredeyse eski bir özellik gibi görünmekle birlikte, bu sınırlamaların güvenlik etkileri özellikle bir kavşağın sembolik bir bağ yerine tercih edilmesinin nedenidir. Uzaktan hedefleme sembolik bağları daha işlevsel hale getirir, ancak aynı zamanda güvenlik yollarını da yükseltirken, kavşaklar yerel yollarla sınırlandırıldığından daha güvenli kabul edilebilir . Dolayısıyla, eğer yerel bir bağlantı istiyorsanız ve mutlak bir yolla yaşayabiliyorsanız, muhtemelen bir kavşakta daha iyi olursunuz; Aksi takdirde, ek yetenekleri için sembolik bir bağlantı düşünün.

görüntü tanımını buraya girin

** Hız / karmaşıklıktaki fark ifadesi , NTFS geri alım noktalarındaki Wikipedia girişindeki doğrulanmamış bir ifadeden gelir (iyi bir okuma). *


Diğer NTFS Link Karşılaştırmaları

İşte konuyla ilgili başka bazı karşılaştırmalar var, ancak bunlar kavşakları dikkate alırken yanıltıcı olabilir çünkü yukarıda listelenen faydaları listelemezler.

Buradan alınmış (iyi bir tanıtım okuması)

görüntü tanımını buraya girin

Gönderen mklink üzerinde SS64 sayfa

görüntü tanımını buraya girin


Terminoloji hakkında yorumlar

Kavşaklar Sembolik Bağlantılardır

Kavşaklar ve Sembolik bağlantılar, nasıl işlendiklerinde yukarıda belirtilen farkların yanı sıra, aynı şeyi (yeniden değerlendirme noktaları) aynı şekilde yapıyorlar. Aslında, teknik olarak, bir Kavşak sembolik bir bağdır ve bazen belgeleme burada olduğu gibi Kavşak sembolik bir bağ olarak adlandırılabilir . Yani, bu terminoloji ile ilgili farkında olması gereken bir şey.

NTFS

OP bunu belirlemesine rağmen, "sembolik bağlantının" NTFS'ye özgü olmayan çok genel bir terim olduğuna dikkat çekmekte fayda var. Dolayısıyla, belirli olmak gerekirse, bu karşılaştırma NTFS Kavşağı ile NTFS Sembolik Bağları hakkındadır.


3
Sembolik Bağlantılar vs Junction işlem hızını test eden var mı?
1000Gbps

Artıları / eksileri grafik son derece yardımcı oldu, teşekkür ederim!
GordonM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.