Skenario - Tautan Simbolik atau Persimpangan NTFS?

17

Perbedaan

┌──────────────┬─────────┬─────────────────── ───────┬─────┐
│ │ Mutlak │ Relatif │ File │ Direktori │ UNC │
├──────────────┼─────────┼─────────────────── ───────┼─────┤
│ Tautan simbolik │ Ya │ Ya │ Ya │ Ya │ Ya │
│ Persimpangan │ Ya │ - │ - │ Ya │ - │
└──────────────┴─────────┴─────────────────── ───────┴─────┘

Skenario

Mari kita asumsikan kita sedang membuat titik reparse untuk membuat pengalihan C:\SomeDir => D:\SomeDir

Karena skenario ini hanya memerlukan jalur lokal dan absolut, baik persimpangan atau symlink akan berfungsi. Dalam situasi ini, apakah ada keuntungan menggunakan satu atau yang lain?

Asumsikan Windows 7 untuk OS, mengabaikan kompatibilitas ke belakang. (Sebelum Vista, symlinks tidak didukung secara native, meskipun ada driver pihak ke-3 yang menyediakan dukungan symlink pada Windows XP.)

Memperbarui

Saya telah menemukan perbedaan lain.

  • Symbolic Link - Izin tautan hanya memengaruhi operasi hapus / ganti nama pada tautan itu sendiri, akses baca / tulis (ke target) diatur oleh izin target
  • Junction - Izin Junction memengaruhi enumerasi, mencabut izin pada persimpangan akan menolak daftar file melalui persimpangan itu, bahkan jika folder target memiliki ACL yang lebih permisif.

Izin membuatnya menarik, karena symlink dapat memungkinkan aplikasi lawas untuk mengakses file konfigurasi di area yang dibatasi UAC (seperti %ProgramFiles%) tanpa mengubah izin akses yang ada, dengan menyimpan file di lokasi yang tidak dibatasi dan membuat symlink di direktori terbatas.

Perbarui 2

Windows 8.1 akan menyelesaikan tautan direktori simbolis ketika menavigasi ke satu melalui kotak teks di Save As...kotak dialog. Persimpangan tidak diperluas.


sumber
Apakah Anda memiliki tautan ke info perbedaan izin? Itu cukup menemukan.
surfasb
Pengujian saya mengonfirmasi bahwa akses baca ke direktori target (yaitu, daftar isi direktori) dibatasi oleh izin pada titik persimpangan selain yang ada di direktori target. Namun, tampaknya tidak ada akses lain yang terpengaruh. Khususnya Anda dapat membuat file dan subfolder jika izin direktori target mengizinkannya, terlepas dari izin titik persimpangan.
Harry Johnston
@ HarryJohnston: Awalnya, saya mencurigai ada beberapa ketidakkonsistenan saat saya memblokir hapus dan tulis izin untuk juction, tetapi item dan subfolder di bawahnya baik-baik saja.
surfasb
Saya tidak akan membuat ini jawaban penuh kecuali diminta, tetapi jika Anda menggunakan GNU atau sistem non-Windows lainnya untuk mengakses volume melalui mount.cifs, maka symlink akan muncul seperti itu sedangkan persimpangan akan dilihat sebagai direktori normal - mungkin karena titik di mana resolusi IO terjadi, yaitu secara lokal pada host Windows.
can-ned_food

Jawaban:

4

Saya memahami tautan simbolis NTFS sebagai pengganti untuk Sambungan pada OS Windows yang lebih baru (Vista / 7/8) karena berfungsi dengan cara yang sama tetapi juga menyediakan fungsionalitas tambahan (titik jarak jauh). Jadi asalkan Anda hanya bekerja dengan sistem operasi yang lebih baru, maka tidak ada alasan untuk tidak menggunakan opsi tautan simbolik.

Garrett
sumber
Secara default, symlink di server akan diabaikan, dan bahkan jika diikuti dibatasi oleh aturan akses tingkat-berbagi server: jadi, misalnya, Anda tidak dapat melakukan symlink ke lokasi di server yang tidak dibagikan, atau jika share tidak memberikan akses pengguna. Jadi symlink tidak dapat menggantikan titik persimpangan di semua konteks.
Harry Johnston
2

Saya pikir titik persimpangan memiliki dukungan yang lebih luas dalam perangkat lunak cadangan daripada tautan simbolik. Anda harus memeriksa dengan program cadangan apa pun yang Anda gunakan dengan fitur apa yang didukung.

Jika tidak didukung, titik sambung / persimpangan akan dicadangkan sebagai direktori terpisah (dan dipulihkan seperti itu), atau tidak dicadangkan sama sekali.

Selain masalah cadangan, saya tidak melihat alasan untuk lebih memilih satu dari yang lain, dalam kasus khusus Anda (direktori lokal).

haim
sumber
Junction point dan Symlinks keduanya diimplementasikan melalui NTFS menggunakan poin reparse. Menurut MSDN, mereka berdua diperlakukan dengan cara yang sama dengan operasi file melalui API.
surfasb
2
@surfasb: Namun jika symlink tidak didukung secara spesifik (dan dikenali seperti itu), mereka tidak akan dibuat kembali sebagai symlink selama pemulihan dari backup.
haimg
Ah, poin yang sangat bagus! Saya tidak berpikir terlalu jauh ke depan.
surfasb
Sejauh yang saya tahu, ini lebih penting jika volume akan diakses oleh OS Windows yang lebih lama.
can-ned_food
1

Persimpangan NTFS hanya dapat diarahkan ke direktori, sementara symlink juga berfungsi pada file.

pengguna1686
sumber
Tetapi untuk file Anda bisa menggunakan hardlink saja.
paradroid
0

Inilah satu perbedaan yang saya perhatikan:

Saya memiliki direktori skrip yang disinkronkan, aplikasi portabel, dll. Saya menggunakan skrip batch untuk membuat Junction di direktori Start Menu yang menunjuk ke direktori cara pintas untuk aplikasi portabel.

Persimpangan memungkinkan pintasan muncul di Start Menu. Ketika saya menggunakan Symbolic Link sebagai gantinya, itu tidak berfungsi.

paradroid
sumber
Aneh, ini bekerja dengan baik untukku. Saya juga punya symlink ke flash drive yang terhubung ke mesin saya.
surfasb
@surfasb: Anda yakin melakukan apa yang saya jelaskan? Pintasan dalam direktori yang ditunjukkan oleh tautan simbolik dengan direktori Start Menu tidak muncul di Start Menu saya. Mereka melakukannya ketika Junction digunakan sebagai gantinya.
paradroid
Tidak yakin apakah saya membacanya dengan benar. Jadi di menu mulai, symlink yang menunjuk ke folder yang berisi pintasan? Saya mencobanya sekarang. Saya bahkan mendapatkan symlink untuk menunjuk ke symlink lain di jalur unc yang menunjuk ke folder di jalur UNC dengan pintasan. Tentu saja itu memecah jalan pintas. Tetapi traversal symlink "jauh ke jarak jauh" dinonaktifkan secara default di Windows.
surfasb
0

Mungkin saya melewatkannya di suatu tempat di komentar, tetapi satu perbedaan yang sangat penting antara symlink dan persimpangan di Windows bagi saya adalah hak istimewa yang diperlukan untuk membuat keduanya. Sementara symlink secara default hanya dapat dibuat menggunakan izin khusus yang tidak dimiliki oleh pengguna, persimpangan dapat dibuat dengan mudah oleh semua pengguna default OOB dan karenanya jenis tautan pilihan saya untuk dirs.

Secara default, anggota grup Administrator memiliki hak ini.

https://docs.microsoft.com/en-us/windows/device-security/security-policy-settings/create-symbolic-links

Thorsten Schöning
sumber