Apa perbedaan antara Tautan Simbolik dan Pintasan?

Jawaban:

57

Saya pikir poin penting adalah bahwa pintasan hanyalah sebuah file. Mereka memiliki ukuran (Yang kecil, yang hanya referensi di mana mereka menunjuk) dan mereka membutuhkan aplikasi untuk mendukung tipe file agar dapat digunakan.

Tautan simbolis adalah level sistem file, dan semuanya melihatnya sebagai file asli. Aplikasi tidak memerlukan dukungan khusus untuk menggunakan tautan simbolik.

Phoshi
sumber
6
Perintah pohon berjalan (sesuatu seperti utilitas unix find, tar, du, dll) yang perlu tahu tentang link simbolik atau mereka dapat melakukan beberapa hal yang sangat bodoh. Misalnya menyilaukan tautan simbolis berikut ini dapat membuat siklus di sistem file, dan itu buruk .
dmckee
9
@ dmckee; Poin yang sangat bagus, sementara tidak ada aplikasi yang membutuhkan dukungan khusus untuk mengikuti mereka, mereka memang membutuhkan dukungan khusus untuk tidak mengikuti mereka!
Phoshi
Ya, tidak perlu dukungan untuk menggunakannya tetapi perlu tahu tentang mereka.
dmckee
@ Phoshi Apa yang sebenarnya Anda maksud dengan "dan mereka membutuhkan aplikasi untuk mendukung tipe file itu agar dapat digunakan.". Bisakah Anda jelaskan dengan sebuah contoh?
Geek
7
@ Geek: "Jalan pintas" secara efektif adalah file yang menampung file dari file lain. Ketika Anda membacanya, Anda membaca file yang diformat khusus yang memberi tahu Anda ke mana harus mencari berikutnya. Jika aplikasi Anda tidak mendengarkan, dan hanya membaca file kata demi kata, maka Anda tidak mengikutinya. Tautan simbolik adalah tingkat sistem file, itu adalah sistem file itu sendiri yang menyimpan jalur "benar" ke data dan ketika Anda mencoba mengaksesnya, Anda mengambil data yang ditunjuk.
Phoshi
20

"Tautan Simbolik" sebenarnya dapat bertindak seperti pengganti direktori atau file dengan cara fungsional, dan biasanya digunakan di lingkungan Unix / Linux. Meskipun tampaknya ada dukungan untuk ini di Windows, saya belum melihat penggunaannya yang sebenarnya.

"Pintasan" hanyalah file biasa yang memiliki referensi ke file tujuan atau direktori bersama dengan beberapa hal lain seperti ikon yang akan ditampilkan. Tidak seperti Symbolic Link, Anda tidak dapat "cd ./shortcut-name" di DOS (di Unix / Linux Anda dapat "cd ./symlink-name" dan itu akan berfungsi seperti sub-direktori nyata).

Juga, di sebagian besar aplikasi Windows, ketika Anda mengklik Shortcut dalam dialog File-> Open GUI apa pun, bidang nama file Anda akan terisi dengan nama file pintasan itu serta bertindak seperti sub-direktori, sedangkan di Unix / Linux GUI memperlakukan Link Simbolik sebagai jalur (tanpa memodifikasi bidang nama file).

Randolf Richardson
sumber
Di Unix / Linux ada juga "Hard Links" yang hanya diterapkan pada file (bukan direktori). Ini adalah entri nama file alami dalam sistem file yang kebetulan menunjuk ke data file yang sama dengan entri nama file lain di tempat lain (tidak harus berada di direktori yang sama).
Randolf Richardson
4
@ Randolf: 1) Hardlink juga ada di Windows. 2) Salah satu fitur cara pintas shell adalah pelacakan target otomatis - jika target dipindahkan, sebagian besar cara pintas waktu akan terus bekerja. (Dalam domain AD, bahkan dimungkinkan untuk melacak file melalui komputer; misalnya, jika Anda memindahkan HD ke tempat lain.) 3) Salah satu penggunaan symlink adalah mengarahkan file atau direktori ke lokasi alternatif - mereka dapat menunjuk ke file (tidak seperti persimpangan) ) dan direktori (tidak seperti hardlink), lintas sistem file (tidak seperti hardlink), dan, AFAIK, bahkan dapat menunjuk ke lokasi jaringan.
grawity
Komentar terlambat, dan saya tidak yakin apakah saya tidak tahu apa yang saya lakukan dengan shorcuts, tetapi saya harus membuat tautan simbolis alih-alih pintasan untuk file vimrc saya (saya mereferensikan proyek dotfiles yang saya gunakan di direktori terpisah).
membuat3
11

Seperti yang disebutkan orang lain, tautan simbolik adalah salah satu jenis tautan yang tersedia di tingkat sistem file, yang membuatnya transparan untuk aplikasi. Saya menemukan dokumentasi ini sangat membantu (khususnya bagian "Potong / Buka Gulungan / Sambungan Luar Simbol / Simbol"). Dan alat di sana terlihat bagus juga. (Dengan menyebutkan ini, dan mklink, semoga lebih banyak pencarian akan menemukan diskusi ini.)

Pintasan adalah file, bukan tautan yang sebenarnya, dan umumnya hanya berhasil diikuti sebagai tautan ketika ditafsirkan oleh UI Windows (antarmuka pengguna). Misalnya, ketika Anda mengklik dua kali pada pintasan folder, Windows mengarahkan Anda ke lokasi lain. (Ini termasuk dialog File Open dan Save File generik yang dipanggil sebagian besar aplikasi.) Di desktop saya, saya memiliki jalan pintas ke folder ini: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ G

Nama file shorcut adalah: C: \ Users \ user5 \ Desktop \ Games.lnk, meskipun Windows menekan ekstensi .lnk dan hanya menampilkan "Games", bahkan jika Anda menghapus centang "sembunyikan ekstensi untuk tipe file yang dikenal". Tetapi jika Anda membuka command prompt dan melakukan dir, Anda akan melihatnya:

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

Saya dapat membuat yang setara dengan symlink dengan menggunakan opsi \ D (untuk direktori):

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>

(Sambungan direktori (\ J) juga merupakan opsi, karena ini adalah tautan folder.) Windows explorer, seperti konsol ini dan sebagian besar aplikasi, akan memungkinkan Anda menelusuri "ke dalam" subdirektori yang jelas ini, daripada (a) mengarahkan ulang "menyeberang" ke lokasi yang berbeda atau (b) gagal.

Pintasan tidak berperilaku seperti subdirektori. Saya bisa menjalankan perilaku file default Windows UI dengan perintah ini (ini membuka folder "G" di Windows Explorer):

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

Sedangkan mysymlink terdaftar (lihat hitungan) sebagai subdirektori sebenarnya dan tidak dapat diluncurkan dengan cara itu:

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.

Sebaliknya, Anda tidak dapat mengubah direktori menjadi pintasan:

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

Windows UI memungkinkan Anda mengklik kanan untuk mengedit properti pintasan. Atau, berikut ini menunjukkan dengan tepat apa yang sebenarnya disimpan dalam file .lnk (data biner), meskipun hex editor akan menampilkan lebih baik:

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

Sedangkan mencoba menjalankan Notepad pada subfolder yang sebenarnya muncul pesan kesalahan "Akses ditolak", dan Notepad kosong.

Sebaliknya, jika saya membuat file symlink (bukan folder symlink), saya dapat meluncurkannya dengan Notepad. Dari panggilan notepad.exe berikut, dua yang pertama berfungsi, dan yang ketiga gagal (ini membuka file .LNK, buku biner gobbled).

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"

Ini bukan hanya masalah konsol. Menyalin pintasan ke Notepad ke desktop saya dan mencoba menyeret dan menjatuhkan masing-masing ketiganya, itu memperlihatkan perilaku yang sama persis. (Karena seret dan lepas, tidak seperti klik dua kali, memungkinkan aplikasi mengartikan pintasan.)

Mengenai perbedaan antara symlink dan persimpangan direktori, lihat diskusi ini , dan inilah deskripsi yang sangat membantu :

"Perbedaan utama dalam cara Windows menyelesaikan tautan simbolik dan persimpangan direktori adalah di mana pemrosesan berlangsung. Windows memproses tautan simbolik pada sistem lokal, bahkan ketika mereka merujuk lokasi pada server file jarak jauh. Windows memproses persimpangan direktori yang merujuk remote. Oleh karena itu, server file di server itu sendiri. Tautan simbolik pada server dapat merujuk ke lokasi yang hanya dapat diakses dari klien, seperti volume klien lainnya, sedangkan persimpangan direktori tidak bisa. Untuk mengatasinya, Windows Vista mendukung jenis tautan simbolik baru untuk kedua file. dan direktori.

"Banyak perintah sistem file telah diperbarui untuk memahami implikasi tautan simbolik. Misalnya, perintah Hapus tahu untuk tidak mengikuti tautan, yang akan mengakibatkan penghapusan target, tetapi untuk menghapus tautan. Namun, karena tidak semua aplikasi dapat menangani tautan simbolik dengan benar, membuat tautan simbolik memerlukan hak istimewa Buat Simbolik Link baru yang hanya dimiliki oleh administrator. "

Jon Coombs
sumber
2

"Tautan Simbolik berbeda dari Pintasan karena mereka menawarkan jalur * transparan ke objek data yang diinginkan, dengan pintasan (.lnk), sesuatu harus membaca dan menginterpretasikan isi dari file pintasan dan kemudian membuka file yang dirujuk (yaitu itu adalah proses dua langkah). Ketika suatu aplikasi menggunakan symlink, ia memperoleh akses langsung ke objek data yang dirujuk oleh symlink (yaitu itu adalah proses satu langkah). "

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

ariefcfa
sumber
0

Terkadang ada baiknya untuk memiliki contoh fungsional, jadi jelaskan bagaimana saya menggunakan fungsi ini.

Saya menggunakan google drive untuk membuat cadangan file, tetapi kadang-kadang saya ingin membuat cadangan file dalam folder tertentu (saya tidak bisa memindahkannya ke ../google drive). Terutama dengan aplikasi universal windows 10, file konfigurasi dan semacamnya disimpan di appdata, dan sebagian besar waktu saya tidak dapat mengubah lokasi ini.

Saya menggunakan aplikasi stikynot windows asli, dan saya ingin membuat cadangan catatan saya, jadi saya menggunakan symlink di sini. Google drive mengenali tautan itu sebagai file aktual dan menyinkronkan file-file itu dengan baik, sementara file yang sebenarnya masih ada di folder appdata.

Ketika saya memiliki file seperti folder proyek secara lokal yang saya tidak ingin disinkronkan ke cloud saya menggunakan cara pintas (salin, past-> paste shortcut).

sommmen
sumber