Apa perbedaan antara NTFS Junction Points dan Symbolic Links?

148

Pada tingkat tinggi, satu-satunya perbedaan yang jelas antara NTFS Junction Points dan Symbolic Links adalah bahwa Junctions hanya dapat berupa direktori, sedangkan SymLinks diperbolehkan untuk juga menargetkan file.

Apa perbedaan lain di antara keduanya?

(Catatan, saya sudah melihat pertanyaan ini dan yang saya cari sedikit berbeda - pertanyaan itu mencari daftar pro dan kontra, saya mencari sekumpulan perbedaan teknis)

Billy ONeal
sumber

Jawaban:

94

Tautan simbolis memiliki lebih banyak fungsi, sementara persimpangan hampir tampak seperti fitur warisan karena keterbatasannya, tetapi implikasi keamanan dari batasan ini secara khusus mengapa persimpangan mungkin lebih disukai daripada tautan simbolis. Penargetan jarak jauh membuat tautan simbolis lebih berfungsi, tetapi juga meningkatkan profil keamanannya, sementara persimpangan lebih aman karena dibatasi ke jalur lokal . Jadi, jika Anda menginginkan tautan lokal dan dapat hidup dengan jalur absolut, Anda mungkin lebih baik menggunakan persimpangan; jika tidak, pertimbangkan tautan simbolis untuk kemampuan tambahannya.

masukkan deskripsi gambar di sini

** Pernyataan perbedaan kecepatan / kompleksitas berasal dari pernyataan yang tidak diverifikasi di entri Wikipedia tentang poin reparse NTFS (bacaan yang baik). *


Perbandingan Tautan NTFS Lainnya

Berikut adalah beberapa perbandingan lain tentang topik tersebut, tetapi ini bisa menyesatkan saat mempertimbangkan persimpangan karena tidak mencantumkan manfaat yang saya sebutkan di atas.

Diambil dari sini (bacaan pengantar yang bagus)

masukkan deskripsi gambar di sini

Dari halaman SS64 di MKLink

masukkan deskripsi gambar di sini


Komentar tentang Terminologi

Persimpangan adalah Titik Reparse (dapat digambarkan sebagai tautan simbolis)

NTFS Junctions dan NTFS Symbolic link benar-benar melakukan hal yang sama dengan cara yang sama (reparse points), selain dari perbedaan yang disebutkan di atas dalam cara pemrosesannya. Faktanya, secara teknis, Persimpangan adalah "tautan simbolis" dalam arti kata yang lebih umum, dan terkadang dokumentasi mungkin menyebut Persimpangan sebagai tautan simbolis, seperti yang terjadi di sini . Dalam kasus seperti itu, "tautan simbolik" tidak berarti Tautan Simbolik NTFS yang berbeda dari persimpangan (lihat di bawah).

NTFS

Meskipun OP menentukan ini, ada baiknya menunjukkan bahwa "tautan simbolik" adalah istilah yang sangat umum yang tidak spesifik untuk NTFS. Jadi, untuk lebih spesifik, perbandingan ini adalah tentang NTFS Junctions vs NTFS Symbolic Links.

u8it
sumber
Titik Persimpangan dan Tautan Simbolik keduanya merupakan Titik Reparse, tetapi Titik Persimpangan jelas bukan Tautan Simbolik! Oh dan meja salah dalam satu hitungan juga. Target Titik Persimpangan harus ada saat dibuat, tetapi mungkin saja akan dihapus nanti.
0xC0000022L
3
@ 0xC0000022L Ya, Anda benar jika yang Anda katakan adalah bahwa NTFS Junction bukanlah NTFS Symbolic Link. Saya dapat melihat bagaimana kata-kata saya mungkin disalahpahami untuk mengatakan ini. Saya akan mengedit untuk mengklarifikasi, tetapi intinya adalah, dalam konteks ini, "tautan simbolik" mengacu pada Tautan Simbolik NTFS yang merupakan implementasi spesifik dari ide "tautan simbolik" yang lebih umum yang juga termasuk dalam Junctions. Apakah Anda mengikuti link yang saya posting? Ini tidak mengatakan bahwa NTFS Junction adalah NTFS Symbolic Link, tetapi istilah "symbolic link" dapat digunakan untuk menggambarkan sebuah junction.
u8it
cukup adil, ketika mengacu pada konsep itu mungkin salah satu cara untuk memikirkannya. Tapi saya benar-benar berpikir istilah titik reparse membawa konsep pulang, karena menjelaskan lebih banyak apa yang terjadi di pengelola objek NT dan bahwa konsep ini jauh melampaui apa tautan simbolik dulu di Unix, misalnya (di mana mereka adalah file biasa dengan bendera khusus). Dan ya, saya pernah mendengar titik persimpangan dijelaskan sebagai "symlink untuk direktori".
0xC0000022L
@ 0xC0000022L Selain itu, saya tidak melihat masalah yang Anda sebutkan tentang tabel yang salah. Apakah Anda mengacu pada karakteristik "Dapat menunjuk ke target yang tidak ada"? Dan apakah Anda mengatakan bahwa ini salah setidaknya saat pertama kali membuat persimpangan? Jika Anda yakin bahwa hal itu terjadi di lingkungan tertentu (mungkin untuk Windows XP atau karena pengaturan keamanan), saya akan mencatatnya tetapi menurut pengalaman saya dan dari dokumentasi (dan saya baru saja mengonfirmasi di Windows 10) sambungan dapat selalu menargetkan jalur yang tidak ada, bahkan setelah pembuatan ... mungkin ada pengaturan keamanan yang membatasi ini.
u8it
1
Persimpangan bukanlah warisan. Mereka mengimplementasikan titik mount (bind / volume), bukan symlink. Ketika sebuah jalur diurai secara terbuka, sistem akan mengingat persimpangan yang dilintasi untuk mengevaluasi symlink relatif yang melintasi titik pemasangan. Traversal ini perlu menangani persimpangan seolah-olah itu adalah direktori biasa, sedangkan symlink diurai sebagai jalur targetnya. Misalnya, ucapkan "C: \ junction" dan "C: \ symlink" keduanya target "E: \ spam", dan symlink relatif "E: \ spam \ eggs.txt" target ".. \ eggs.txt". Kemudian "C: \ junction \ eggs.txt" diselesaikan menjadi "C: \ eggs.txt", dan "C: \ symlink \ eggs.txt" diselesaikan menjadi "E: \ eggs.txt".
Eryk Sun
35

Tempat-tempat yang menurut saya paling berguna untuk perbedaannya:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

Dalil: Symlink adalah untuk Persimpangan di Windows sebagai Symlink adalah untuk Hardlink di Unix.

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

Windows 7 dan Windows Vista mendukung tautan simbolis untuk file dan direktori dengan utilitas baris perintah mklink. Tidak seperti titik persimpangan, tautan simbolis juga dapat mengarah ke file atau jalur jaringan Blok Pesan Server (SMB) jarak jauh. Selain itu, implementasi tautan simbolik NTFS menyediakan dukungan penuh untuk tautan lintas-sistem file. Namun, fungsionalitas yang memungkinkan tautan simbolik lintas-host memerlukan sistem jarak jauh juga mendukungnya, yang secara efektif membatasi dukungannya ke Windows Vista dan sistem operasi Windows yang lebih baru.

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Tautan simbolis, seperti yang dibuat oleh Windows, sangat mirip dengan persimpangan direktori, tetapi tidak seperti persimpangan direktori, tautan ini dapat mengarah ke file atau file atau direktori jaringan jarak jauh. Target dapat didefinisikan sebagai jalur yang berhubungan dengan posisi tautan simbolik, atau jalur absolut dalam volume saat ini atau yang lainnya. Perhatikan juga bahwa tautan simbolik ke file berbeda dari tautan simbolik ke direktori dan target harus sesuai dengan definisinya.

James Manning
sumber
1
Untuk informasi khusus Windows 7: msdn.microsoft.com/en-us/library/windows/desktop/…
Joshua Drake
14
Jawaban yang diterima sudah berumur tiga tahun, tetapi saya ingin menunjukkan bahwa titik persimpangan NFTS tidak sebanding dengan tautan keras di Unix, seperti yang tersirat dalam dalil yang dikutip. Ini harus jelas, karena titik persimpangan tidak dapat mereferensikan file tetapi hardlink bisa. NTFS juga mendukung hardlink (yang berbeda dari junction), dan itu kurang lebih sebanding dengan hardlink Unix.
@elgonzo Setuju sekali. AFAIK a Unix hard link hanya bisa merujuk ke file, jadi tidak terlihat seperti persimpangan direktori NTFS sama sekali.
Franklin Yu
22

Secara fungsional, di windows, setelah dibuat, tidak ada perbedaan nyata. Namun, ada perbedaan signifikan di antara mereka dalam hal apa yang dapat mereka lakukan. Persimpangan hanya dapat digunakan untuk membuat tautan ke folder, baik pada drive yang sama atau drive yang berbeda, tetapi hanya jika drive tersebut berada di sistem lokal (Anda tidak dapat membuat tautan persimpangan ke folder melalui jaringan.) Tautan simbolik Namun, tidak ada batasan yang sama. Tautan simbolik dapat digunakan untuk menautkan ke salah satu file atau folder dan file atau folder tersebut dapat ditempatkan di sistem yang sama (drive yang sama atau drive yang berbeda) atau ke jaringan bersama dan dapat menggunakan simbolik lokasi relatif ("\\ system2 \ foldera \ file.txt "," d: \ foldera \ file.txt "," \\ system2 \ foldera "," d: \ foldera "atau" d: \ foldera \ folderb .. "

Singkatnya: Titik Persimpangan terbatas pada folder di sistem lokal saja, sedangkan Tautan Simbolik dapat membuat tautan ke folder atau file yang dapat diakses melalui jalur UNC atau pada sistem lokal dengan lebih banyak keserbagunaan dalam cara menentukan lokasi tersebut. Symbolic Links pada dasarnya adalah pengganti yang lebih fleksibel untuk Junction Points dan Hard Links. Plus, Symbolic Links kompatibel dengan Unix dan Linux saat membuat link jalur UNC lintas platform.

Semoga ini menjawab pertanyaan Anda dengan cara yang memuaskan. Diedit untuk memperbaiki kesalahan ketik.

Techno Wizard
sumber
10

Ekstensi Link Shell, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html , adalah alat yang hebat untuk membuat dan melihat berbagai jenis tautan. Ini juga memiliki dokumentasi yang sangat baik.

[Pada pemasangan penuh, itu menambahkan tab properti baru jika Anda melihat tautan lanjutan. At juga menambahkan panah hamparan ikon untuk berbagai jenis tautan - gulir ke bagian FAQ jika ini tidak muncul; Windows hanya mendukung tiga belas lapisan; dia menunjukkan solusi registri. Contoh kegunaan informasinya: Tidak berhasil mencoba mendapatkan hak istimewa ke apa yang Anda pikir adalah folder, namun ternyata adalah Tautan Persimpangan yang disediakan sistem, sering digunakan untuk tujuan kompatibilitas dengan edisi Windows yang lebih lama.]

Junctions dan Symbolic Links pada dasarnya bertindak identik saat dibuat untuk direktori di sistem lokal.

Namun:

Mereka bertindak secara berbeda melalui jaringan. Tautan ini menjelaskan perilaku ini: /superuser/343074/directory-junction-vs-directory-symbolic-link

Jika Anda menganggap Junction Links sebagai "pintasan yang mengelabui OS mengenai lokasi", Anda akan memiliki perumpamaan praktis yang baik tentang penggunaannya dan apa yang merusaknya. Perbedaan utamanya adalah jika Anda menyalin Symbolic Links atau Junctions, itu menyalin target, bukan (seperti pintasan) hanya file yang berisi penunjuk. Seperti shortcut, Anda dapat menghapus Symbolic atau Junction Links tanpa menghapus file / folder target. [Tautan Keras, file hanya dihapus dengan penghapusan tautan terakhir - termasuk dari recycle bin. Lihat tag properti di LSE untuk salah satu tautan berikut guna melihat target atau jumlah referensi Tautan Keras.]

Tautan Keras atau Pintasan adalah satu-satunya jenis tautan yang dapat dipindahkan tanpa efek samping seperti merusak atau menyalin seluruh target. Memindahkan target selalu merusak tautan, meskipun tautan dapat dengan mudah diperbarui di tab properti (ditampilkan dengan LSE) atau dibuat ulang, jika rumit, dengan LSE.

Pembuatan Tautan Simbolik membutuhkan hak administrator sedangkan Junctions tidak. Ini ditambah penggunaan OS internal yang ekstensif dari Junctions menunjukkan bahwa Windows menanganinya dengan cara yang intuitif dan diharapkan. [Berhati-hatilah terhadap efek samping tak terduga dari folder sistem (dari pengalaman dengan Win 10).]

[Beberapa fitur khusus cadangan dari Ekstensi Link Shell sangat berguna - singkatnya, fitur ini dapat membuat beberapa jenis struktur tautan simbolik yang dapat diperbarui dalam folder standar untuk tujuan pencadangan yang tertunda.]

Tanah liat
sumber
Dan Link Shell Extension terlihat seperti alat yang hebat. Ada juga utilitas ringan terkait yang disebut ln.exe ... bahkan jika Anda tidak menggunakannya, Anda akan belajar banyak hanya dari membaca panduan pengguna langsung situs web.
u8it
Saya pikir suntingan Anda pada 2 Apr 2016 membuat segalanya menjadi kurang jelas, Clay. Saya pikir Anda bermaksud seperti ini: "Perbedaan utama antara ini dan file 'pintasan' adalah jika Anda ... menyalin target, bukan hanya file yang berisi penunjuk (yang terjadi jika Anda menyalin pintasan file) "
Jon Coombs
4

Tautan simbolik telah diperkenalkan baru-baru ini di Windows: mulai dari Vista.

Tautan simbolik tidak boleh dianggap sebagai alternatif dari teknologi "Reparse Point" NTFS yang ada.

Microsoft menjelaskan bahwa satu-satunya tujuan tautan simbolik adalah agar lebih kompatibel dengan Unix.

MSDN: " Tautan simbolik telah dirancang untuk membantu migrasi dan kompatibilitas aplikasi dengan UNIX. Microsoft telah mengimplementasikan tautan simbolisnya agar berfungsi seperti tautan UNIX. "

Vista juga merupakan OS pertama yang menggunakan tautan untuk fungsinya sendiri. Agar kompatibel dengan nama folder lama, C:\Documents and Settingssekarang ditautkan ke C:\Users.

Menariknya, meskipun Vista memperkenalkan tautan Simbolik, Documents and Settingstrik " " ini sebenarnya adalah sambungan lama biasa.

Philip
sumber
2
Jawaban ini tidak menjelaskan apa pun tentang perbedaan antara tautan simbolis dan persimpangan. (Karena itu saya rasa itu sama sekali tidak berlaku untuk pertanyaan ini)
Billy ONeal
Dari Windows Vista dan seterusnya Symbolic link menggantikan Junctions (juga, seperti yang kita ketahui, keduanya adalah reparse points)
Aravind
3

Selain jawaban luar biasa dari u8it:

Jika ada yang tertarik dengan perbedaan perilaku di Windows File Explorer di Windows 10:

seret & lepas ke direktori target:

  • symbolic link: memindahkan symbolic linkke direktori target
  • junction: memindahkan original directoryke direktori target

klik kanan mouse + properti:

  • symbolic link: menampilkan properti pintasan
  • junction: menunjukkan original directoryproperti folder kepada Anda

klik kiri moue di panel kiri (pohon direktori):

  • symbolic link: memilih original directory
  • junction: memilih junction
Jinjinov
sumber
Pembuatan Symbolic Links memerlukan hak administrator sedangkan Junctions tidak.
Jinjinov
Windows 10 Versi 10.0.17134.1130: Memindahkan persimpangan di explorer hanya memindahkan konten dari direktori asli. Tautan simbolik mengklik kiri di pohon tidak memilih direktori asli.
SalgoMato