Sembolik Bağlantı ve Kısayol arasındaki fark nedir?


Yanıtlar:


57

Bence asıl önemli olan kısayolların sadece bir dosya olduğudur. Bir boyuta sahipler (sadece işaret ettikleri yere referans veren küçük bir tane) ve bu filetipi desteklemek için bir uygulama gerektiriyorlar.

Sembolik bir bağlantı dosya sistemi seviyesidir ve her şey orijinal dosya olarak görür . Bir uygulamanın sembolik bir bağlantı kullanmak için özel bir desteğe ihtiyacı yoktur.


6
Ağaç yürüme komutları (Unix kamu hizmetleri gibi bir şey find, tar, du, vs) do sembolik bağlantıları hakkında bilmeniz gereken ya da bazı çok aptalca şeyler yapabilir. Mesela sembolik bağları takip ederek dosya dosyalarında döngü oluşturabilir ve bu kötüdür .
dmckee

9
@dmckee; Çok iyi nokta, hiçbir uygulamanın onları takip etmek için belirli bir desteğe ihtiyacı olmasa da, onları takip etmemek için özel bir desteğe ihtiyacı var !
Phoshi

Evet, onları kullanmak için desteğe gerek yok ama onlar hakkında bilgi sahibi olmanız gerekiyor .
dmckee

@ Phoshi Tam olarak neyi kastediyorsanız "ve bu filetype'ı kullanabilmeleri için desteklemek için bir uygulama gerektiriyorlar." Lütfen bir örnekle açıklayabilir misiniz?
Geek

6
@Geek: Bir "kısayol" etkili bir şekilde başka bir dosyanın dosya yolunu tutan bir dosyadır. Okuduğunuzda, nereye bakacağınızı söyleyen özel olarak biçimlendirilmiş bir dosyayı okursunuz. Uygulamanız dinlemiyorsa ve basitçe sözlü olarak okuyan dosyayı izlemiyorsanız, onu izlemeyin. Sembolik bir bağlantı dosya sistemi düzeyindedir, verinin "doğru" yolunu tutan dosya sisteminin kendisidir ve erişmeye çalıştığınızda, işaret ettiği verileri alırsınız.
Phoshi

20

Bir "Sembolik Bağlantı" aslında bir dizin veya dosyanın yerine işlevsel bir şekilde geçebilir ve genellikle Unix / Linux ortamlarında kullanılır. Windows'ta bunun için destek görünmekle birlikte, henüz gerçek bir kullanım görmedim.

Bir "Kısayol" sadece hedef dosyaya veya dizine atıfta bulunacak, görüntülenecek simge gibi bazı şeylerle ilgili normal bir dosyadır. Sembolik bir Bağlantıdan farklı olarak, DOS'ta "cd ./shortcut-name" yapamazsınız (Unix / Linux'ta "cd ./symlink-name" yazabilirsiniz ve tıpkı gerçek bir alt dizin gibi çalışacaktır).

Ayrıca, çoğu Windows uygulamasında, herhangi bir Dosya-> GUI Aç diyalog penceresindeki bir Kısayola tıkladığınızda, dosya adı alanınız o kısayolun dosya adıyla aynı alt dizin gibi davranırken, Unix / Linux'ta GUI davranır. yol olarak Sembolik Bağlantı (dosya adı alanını değiştirmeden).


Unix / Linux'ta ayrıca sadece dosyalara (dizinlere değil) uygulanan "Sabit Bağlantılar" da vardır. Bunlar, başka bir yerde başka bir dosya adı girişi ile aynı dosya verisine işaret eden (aynı dizinde olmak zorunda değildir) dosya sistemindeki doğal dosya adı girişleridir.
Randolf Richardson

4
@Randolf: 1) Hardlinks Windows da var. 2) Kabuk kısayollarının bir özelliği otomatik hedef takibidir - hedef hareket ettirilirse çoğu zaman kısayollar çalışmaya devam eder. (Bir AD etki alanında, dosyaları bilgisayar üzerinden izlemek bile mümkündür; örneğin, bir HD'yi başka bir yere taşırsanız) 3) Symlin'lerin bir kullanımı, bir dosyayı veya dizini başka bir konuma yönlendirmektir - dosyalara işaret edebilirler (kavşakların aksine) ) ve dizinler (sabit bağlantıların aksine), çapraz dosya sistemleri (sabit bağlantıların aksine) ve AFAIK bile ağ konumlarını gösterebilir.
Grawity

Geç yorum, ve sadece kısayollarla ne yaptığımı bilmediğimden emin değilim, ancak vimrc dosyam için kısayol yerine sembolik bir bağlantı oluşturmak zorunda kaldım (kullandığım bir dotfiles projesine başvuruyorum) ayrı bir dizin).
15

10

Diğerlerinin de belirttiği gibi, sembolik bir bağlantı, dosya sistemi düzeyinde mevcut olan bağlantı türlerinden biridir ve bu da onu uygulamalar için şeffaf kılar. Bu belgeyi çok yararlı buldum (özellikle "Kırpma / Kaydırma / Ekleme Dış Bağlantıları / Sembolik Bağlantılar" bölümü). Ve oradaki araç da hoş görünüyor. (Bunu ve mklink, bunu söyleyerek umarım daha fazla arama bu tartışma bulacaksınız.)

Kısayol, gerçek bir bağlantı değil bir dosyadır ve genellikle Windows UI (kullanıcı arabirimi) tarafından yorumlandığında yalnızca bağlantı olarak başarıyla izlenir. Örneğin, bir klasör kısayoluna çift tıkladığınızda, Windows sizi bu başka bir konuma yönlendirir. (Bu, çoğu uygulamanın çağırdığı genel Dosya Aç ve Dosya Kaydet iletişim kutularını içerir.) Masaüstümde bu klasöre bir kısayol var: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ G

Kısayolun dosya adı: C: ​​\ Users \ kullanıcı5 \ Desktop \ Games.lnk, ancak Windows .lnk uzantısını bastırıyor ve "Bilinen dosya türleri için uzantıları gizle" seçeneğinin işaretini kaldırsanız bile, "Oyunlar" gösteriliyor. Ancak bir komut istemi açar ve bir dir yaparsanız, göreceksiniz:

C:\Users\user5\Desktop>dir "g*"
 Volume in drive C has no label.
 Volume Serial Number is 900...
 Directory of C:\Users\user5\Desktop
03/08/2014  05:30 PM             1,710 Games.lnk
               1 File(s)          1,710 bytes
               0 Dir(s)  246,818,222,080 bytes free

\ D seçeneğini (dizin için) kullanarak bir sembolik bağlantı ile eşdeğerini oluşturabilirim:

C:\Users\user5\Desktop>mklink /D mysymlink  "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G

C:\Users\user5\Desktop>cd mysymlink

C:\Users\user5\Desktop\mysymlink>

(Bir dizin bağlantısı (\ J) da bir seçenektir, çünkü bu bir klasör bağlantısıdır.) Windows explorer, tıpkı bu konsol ve çoğu uygulama gibi, (a) yönlendirmek yerine bu görünen alt dizine "aşağı" göz atmanıza izin verir farklı bir yere "arasında" veya (b) başarısız.

Kısayollar, alt dizinler gibi davranmaz. Windows UI'nin varsayılan dosya davranışını bu komutla çağırabilirim (bu, Windows Gezgini'nde "G" klasörünü açar):

C:\Users\user5\Desktop>"Games.lnk"

Bununla birlikte, mysymlink gerçek bir alt dizin olarak listelenir (sayıya bakınız) ve bu şekilde başlatılamaz:

C:\Users\user5\Desktop>dir "my*"
 Volume in drive C has no label.
 Volume Serial Number is 900...

 Directory of C:\Users\user5\Desktop

03/29/2014  06:08 PM    <DIR>          mysubdir
03/29/2014  05:40 PM    <SYMLINKD>     mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
               0 File(s)              0 bytes
               2 Dir(s)  246,816,153,600 bytes free

C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.

Tersine, dizini kısayol haline getiremezsiniz:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

Windows UI, bir kısayolun özelliklerini düzenlemek için sağ tıklamanızı sağlar. Veya, bir hex editörü daha iyi görüntülense de, aşağıdakiler tam olarak .lnk dosyasında neyin saklandığını gösterir (ikili veri).

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

Gerçek bir alt klasörde Not Defteri çalıştırmaya çalışırken "Erişim reddedildi" hata mesajı ve boş bir Not Defteri belirir.

Tersine, eğer bir dosya linkini yaparsam (bir klasör linkini değil), Notepad ile başlatabilirim. Aşağıdaki notepad.exe çağrıları, ilk iki iş ve üçüncü başarısız olur (.LNK dosyasını açar, ikili gobbledegook).

C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt

C:\Users\user5\Desktop>notepad.exe "symplain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"

Bu sadece bir konsol olayı değil. Not Defteri'ne bir kısayolu masaüstüme kopyalamak ve her üçünü de üzerine sürükleyip bırakmakla aynı davranış sergiliyor. (Çünkü çift tıklamanın aksine, sürükle ve bırak uygulamanın kısayolu yorumlamasını sağlar.)

Dizin sembolik bağları ve kavşaklar arasındaki farklarla ilgili olarak, bu tartışmaya bakın ve işte size çok yararlı bir açıklama :

"Windows'un sembolik bağları ve dizin bağlantılarını çözme biçimindeki büyük fark, işlemlerin gerçekleştiği yerdir. Windows, uzak bir dosya sunucusundaki bir konuma başvursalar bile, yerel sistemdeki sembolik bağları işler. Windows, uzaktaki bir bilgisayara başvuran dizin bağlantılarını işler. Bu nedenle, sunucudaki sembolik bağlantılar, bir sunucudaki sembolik linkler, diğer müşterilerin hacimleri gibi, sadece bir müşterinin erişebileceği yerlere atıfta bulunabilir, oysaki dizin bağlantıları bulamaz. Bunu çözmek için, Windows Vista her iki dosya için yeni sembolik link türünü desteklemektedir. ve dizinler.

"Birçok dosya sistemi komutu, sembolik bağlantıların etkilerini anlamak için güncellendi. Örneğin, Sil komutu, hedeflerin silinmesine neden olacak bağlantıları izlememeyi, bunun yerine bağlantıyı silmeyi bilir. Ancak, tüm uygulamalar değil sembolik bağları doğru işleyebilir, sembolik bir bağ oluşturmak, yalnızca yöneticilerin varsayılan olarak sahip oldukları yeni Sembolik Bağlantı Oluşturma ayrıcalığını gerektirir. "


2

"Sembolik Bağlantılar, istenen veri nesnesine saydam * bir yol sunduğundan Kısayollardan farklıdır, kısayolla (.lnk), bir şey kısayol dosyasının içeriğini okumak ve yorumlamak ve sonra başvurduğu dosyayı açmak zorundadır (örn. bu iki aşamalı bir işlemdir.) Bir uygulama bir link link kullandığında, link link tarafından referans verilen veri nesnesine hemen erişir (yani tek adımlı bir işlemdir). ”

Kaynak: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html


0

Bazen işlevsel bir örneğe sahip olmak iyidir, bu yüzden bu işlevi nasıl kullandığımı açıklayacağım.

Dosyaları yedeklemek için google sürücüyü kullanıyorum, ancak bazen dosyaları belirli bir klasörde yedeklemek istiyorum (bunları ../google sürücüsüne taşıyamıyorum). Özellikle Windows 10 evrensel uygulamalarında, config dosyaları ve benzeri dosyalar appdata'da depolanır ve çoğu zaman bu konumu değiştiremem.

Windows native stikynot uygulamasını kullanıyorum ve notlarımı yedeklemek istedim, bu yüzden burada bir sembolik bağlantı kullandım. Google sürücüsü, bağlantıyı gerçek bir dosya olarak tanır ve gerçek dosya hala appdata klasöründeyken dosyaları iyi bir şekilde senkronize eder.

Yerelde proje klasörleri gibi dosyalara sahip olduğumda buluta eşitlemek istemediğim kısayolları kullanıyorum (kopyala, yapıştır> kısayol yapıştır).

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.