Pertanyaan "Direktori junction" vs "direktori symbolic link"?


Dalam konteks NTFS:

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

/D      Menciptakan link simbolik direktori. Default adalah file symbolic link.
/H      Membuat tautan yang sulit, bukan tautan simbolis.
/J      Membuat Persimpangan Direktori.
Link    menentukan nama tautan simbolis baru.
Target  menentukan jalur (relatif atau absolut) yang merujuk tautan baru.

  1. Bukan a persimpangan direktori hal yang sama persis seperti tautan simbolis direktori?

    Apa perbedaannya mklink /D f1 f2 dan mklink /J f1 f2 ?

  2. Karena "direktori" sebenarnya hanya a mengajukan, apa yang akan menjadi perbedaan antara tautan simbolis direktori dan tautan simbolik file?


338
2017-10-05 03:28


asal


Terkait: superuser.com/q/347930/24500 - surfasb


Jawaban:


Sebuah persimpangan jelas bukan hal yang sama dengan tautan simbolis direktori, meskipun keduanya sama. Perbedaan utamanya adalah, jika Anda melihat server jauh, persimpangan diproses di server dan tautan simbolis direktori diproses di klien. Juga lihat komentar Matthew tentang fakta bahwa ini berarti tautan simbolis pada sistem file lokal dapat mengarah ke sistem file jarak jauh.

Misalkan pada mesin bernama Alice Anda harus meletakkan titik persimpangan c:\myjp dan tautan simbolis direktori c:\mysymlink, keduanya menunjuk ke c:\targetfolder. Saat Anda menggunakan Alice, Anda tidak akan melihat banyak perbedaan di antara mereka. Tetapi jika Anda menggunakan mesin lain bernama Bob, maka titik persimpangan

\\Alice\c$\myjp akan menunjuk ke \\Alice\c$\targetfolder

tetapi tautan simbolis

\\Alice\c$\mysymlink akan menunjuk ke \\Bob\c$\targetfolder

(Caveat: secara default, sistem tidak mengikuti symlink pada volume jauh, jadi dalam banyak kasus contoh kedua akan benar-benar menghasilkan "Berkas tidak ditemukan" atau "Tautan simbolis tidak dapat diikuti karena jenisnya dinonaktifkan.")

Perbedaan antara tautan simbolis direktori dan tautan simbolis file adalah salah satu yang mewakili direktori dan yang satu merepresentasikan sebuah file. Karena target tautan tidak perlu ada saat tautan dibuat, sistem file perlu mengetahui apakah akan memberi tahu aplikasi bahwa itu adalah direktori atau tidak.

Perlu juga dicatat bahwa membuat tautan simbolis memerlukan hak khusus (secara default, hanya tersedia untuk proses yang ditinggikan) sedangkan membuat persimpangan hanya membutuhkan akses ke sistem file.


316
2017-10-22 19:03



Hanya untuk menjadi jelas: mungkin ada perbedaan fungsional halus lainnya antara persimpangan direktori dan tautan simbolis direktori. Hal jarak jauh vs. lokal hanya yang paling jelas dari perspektif pengguna (sebagai lawan dari pengembang). - Harry Johnston
@MatthewSuatu yang Anda maksudkan jika saya membuat tautan simbolis C:\testlink (yang menunjuk ke C:\test di komputer saya) dan seseorang mengakses komputer saya dan mengklik C:\testlink, itu akan memutuskan untuk C:\test di komputer HIS, Sedangkan jika saya membuat persimpangan direktori C:\testlink (yang menunjuk ke C:\test di komputer saya), dan seseorang mengakses komputer saya dan mengklik C:\testlink) itu akan membawanya ke C:\test di komputer saya? Atau aku salah jalan? - Pacerier
@Pacerier dalam konteks ini ya, tetapi tautan simbolis memungkinkan Anda memiliki folder di komputer Anda yang mengarah ke pembagian jaringan (karena mereka menyelesaikan sisi klien). Misalnya C: \ MyNetworkShare dapat benar-benar mengarah ke \\ Alice \ Share - Matthew Steeples
@MatthewSteeples tetapi tidak bisa kita membuat persimpangan direktori C:\MyNetworkShare yang menunjuk ke \\Alice\Share demikian juga? - Pacerier
@Pacerier, tidak, titik persimpangan harus bersifat lokal. - Harry Johnston


Obrolan rumit menyakiti otak - saya suka grafik:

Asumsikan apa saja MyLink adalah tautan simbolis dan apa saja MyJunc adalah persimpangan yang menunjuk Target as created.

misalnya

mklink /D MyLink C:\T_Dir untuk membuat tautan simbolis ke direktori target

mklink /J MyJunc C:\T_Dir untuk membuat persimpangan direktori ke direktori target

Dimana sintaksnya mklink [/J,/D] [link path] [target path] seperti yang diketik pada mesin lokal


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

Kesalahan * 1 - Jika Anda membuka blokir akses ke tautan simbolis jauh di komputer lokal Anda, maka ini akan berfungsi .. tetapi hanya pada mesin lokal di mana itu diblokir


42
2018-02-02 16:30



Itu sangat aneh. Bahkan tautan simbolik relatif tidak berfungsi dari jarak jauh. Misalnya. Saya membuat direktori d:\_tmp\data. Buat tautan seperti ini: d:\_tmp>mklink /d data-link data. Pengguna jarak jauh memiliki akses penuh ke d:\_tmp dan semua subfoldernya, tapi dia tetap tidak bisa buka d:\_tmp\data-link. - Nux
Itu karena ketika sebuah tautan simbolis dievaluasi sisi-klien, ia akan menunjuk ke d: \ _ tmp \ data pada klien, bukan server. - apraetor
Saya pikir alasan mengapa itu aneh jelas. Tapi saya setuju dengan @Nux bahwa itu aneh, setidaknya dalam kasus symlinks relatif. - Jon Coombs


Saya mendapat kesan bahwa persimpangan hanya untuk alasan-alasan lama dan tautan simbolis sama sekali lebih baik (hal-hal tampak seperti ini pada nilai nominal). Ternyata, itu tidak sepenuhnya benar. Ada beberapa alasan bagus untuk menggunakan persimpangan bukannya tautan simbolis. Perbedaan utama adalah keamanan dan jalur jauh vs. lokal. Ya, penargetan jarak jauh membuat tautan simbolis lebih fungsional, tetapi juga meningkatkan profil keamanan mereka. Jadi, jika Anda ingin tautan lokal dan dapat hidup dengan jalur absolut, Anda mungkin lebih baik dengan persimpangan; jika tidak, pertimbangkan tautan simbolis untuk kemampuan tambahannya.

enter image description here

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


Perbandingan NTFS Link lainnya

Berikut adalah beberapa perbandingan lain tentang topik ini, tetapi ini dapat menyesatkan ketika mempertimbangkan persimpangan karena mereka tidak daftar manfaat yang saya daftar di atas.

Diambil dari sini (Pengantar yang bagus baca)

enter image description here

Dari Halaman SS64 di MKLink

enter image description here


Komentar tentang Terminologi

Jeda adalah Tautan Simbolik

Jeda dan tautan Simbolik benar-benar melakukan hal yang sama dengan cara yang sama (poin reparasi), selain dari perbedaan yang disebutkan di atas tentang bagaimana mereka diproses. Bahkan, secara teknis, Junction adalah tautan simbolis, dan kadang-kadang dokumentasi mungkin memanggil Junction sebagai tautan simbolis, seperti halnya di sini. Jadi, itu hanya sesuatu yang harus diperhatikan tentang terminologi.

NTFS

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


13