Apa perbedaan antara tautan keras NTFS dan persimpangan direktori?


79

Judulnya mengatakan itu semua ... apa bedanya? Kapan saya menggunakan satu dan kapan saya menggunakan yang lain?

Ditambahkan: Perhatikan bahwa Persimpangan poin , tautan keras dan tautan simbolik (lunak) adalah tiga hal terpisah di NTFS.


2
Menurut dokumentasi Microsoft, ada tiga kategori berbeda: Tautan keras: msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Persimpangan (tautan lunak): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Tautan simbolik: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx .
Josip Medved

Jawaban:


33

File data NTFS disimpan dengan semua atributnya sebagai "inode" dengan ID, dan nama file mengarah ke inode. Semua file memiliki satu + hardlink. beberapa alat dapat membuat nama tambahan (hardlink) yang mengarah ke inode yang sama, yang memiliki penghitung jumlah nama yang menunjuk padanya. Jika angkanya menjadi nol, OS menghapus file, inode.

Alat khusus, seperti LN dapat membuat nama file tambahan yang menunjuk ke inode yang ada, menggunakan nama file yang menunjuk mereka. Perhatikan bahwa semua atribut file, termasuk tanggal dan waktu disimpan dengan inode, bukan nama file.

Hardlink (ekstra) berguna ketika Anda ingin nama yang berbeda menunjuk ke data yang sama, baca atau tulis. Mereka menghemat ruang dan overhead. Namun, mereka mengkompromikan program yang menganggap nama berbeda menunjuk ke data yang berbeda. misalnya, jika Anda mengganti referensi ke file duplikat dengan hardlink ke file tunggal, maka Anda telah menghapus cadangan apa pun yang Anda miliki! OS windows adalah salah satu program yang mengasumsikan nama yang berbeda menunjuk ke set bit yang berbeda.

Hardlink harus memiliki volume fisik dan logis yang sama.

Mereka berguna untuk:

  • mengurangi panjang jalur karena Windows hanya mendukung 256 karakter atau lebih.

  • mengurangi ruang penyimpanan file data duplikat - misalnya, Anda bisa memiliki beberapa cadangan partisi dengan beberapa pohon direktori lengkap, tetapi dengan hardlink untuk file yang belum berubah sejak cadangan sebelumnya.

Persimpangan poin berantakan dan gunakan Poin Reparse (yang saya tidak mengerti). Mereka dapat menunjuk ke volume fisik atau logis yang berbeda tetapi mereka harus berada di komputer yang sama. Mereka tampaknya dapat digunakan seperti symlinks untuk direktori, memungkinkan nama kedua untuk tujuan yang sama, tetapi terbatas pada satu komputer, bukan hanya satu volume.

Berguna untuk mengurangi panjang jalur, atau menyederhanakan bekerja dengan beberapa program dengan nama direktori hardcoded.

Peringatan yang sama juga! Banyak program mengasumsikan nama berbeda = file berbeda.

Dan kemudian ada tautan simbolis (yang dapat melintasi jaringan), pintasan dan PIF dan .....

Juga beberapa informasi dari Microsoft sendiri :

Pada dasarnya, mereka mengatakan untuk menggunakan tautan keras hanya untuk file dalam volume yang sama (disk drive letter) dan titik persimpangan hanya untuk direktori di komputer yang sama (mereka dapat menjangkau volume lokal yang berbeda).


1
Apakah tautan simbolik berfungsi pada level hard disk (NTFS) atau konsep level sistem operasi Windows?
Ismail

48

Definisi Cepat:

Tautan simbolik: Tautan ke file atau direktori pada volume yang sama atau berbeda (huruf drive) atau bahkan ke file atau direktori jarak jauh (menggunakan UNC di jalurnya).

Hard Link: Tautan ke file dengan volume yang sama (huruf drive) saja. Setiap file (data file) memiliki setidaknya 1 hard link (nama file). Menghapus semua tautan keras secara efektif menghapus file.

Persimpangan: Tautan ke direktori pada volume yang sama atau berbeda (huruf drive) tetapi tidak ke direktori jarak jauh.


Detail:

Dengan asumsi Anda bekerja dengan volume NTFS di Windows Vista / 7 Anda dapat menggunakan alat baris perintah MKLINK untuk membuat ketiga jenis Tautan:

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

        /D      Creates a directory symbolic link.  Default is 
                a file symbolic link.

        /H      Creates a hard link instead of a symbolic link.

        /J      Creates a Directory Junction.

        Link    specifies the new symbolic link name.

        Target  specifies the path (relative or absolute) that 
                the new link refers to.

Tautan simbolik : Tautan simbolik adalah objek sistem file yang menunjuk ke objek sistem file lain (misalnya: file / direktori).

  • MKLINKdapat digunakan untuk membuat tautan simbolik. Menggunakan /Dparameter membuat tautan simbolik direktori. MKLINK tidak memeriksa apakah targetnya adalah file atau direktori atau bahkan jika targetnya ada! Ini berarti Anda berpotensi membuat tautan tidak valid seperti tautan simbolik direktori ke file atau tautan simbolik ke file / direktori yang tidak ada.

  • Tautan simbolik bisa berupa tautan absolut atau relatif. Tautan absolut adalah tautan yang menentukan setiap bagian dari nama jalur sementara tautan relatif ditentukan relatif ke tempat penentu-tautan relatif berada di jalur yang ditentukan.

  • Tautan simbolis absolut dapat mengarah ke file / direktori pada volume yang sama atau berbeda, serta, ke file atau direktori jarak jauh menggunakan jalur UNC. Namun, tautan simbolis relatif terbatas pada satu volume.

  • Hak istimewa yang ditinggikan diperlukan untuk membuat tautan simbolis meskipun begitu hak istimewa yang ditinggikan tidak diperlukan untuk menghapus tautan.

Hard link : Hard link adalah representasi sistem file dari suatu file dimana lebih dari satu jalur mereferensikan satu file.

  • MKLINKmemungkinkan membuat tautan keras (menggunakan /Hparameter) hanya file (bukan direktori). Tautan keras hanya dapat dibuat dari file dalam volume yang sama.

  • File dengan banyak tautan keras hanya benar-benar dihapus ketika semua tautan keras dihapus yaitu jumlah tautan mencapai nol. Jadi sebenarnya setiap file yang Anda buat setidaknya memiliki satu tautan keras untuk Anda gunakan MKLINKatau tidak.

  • Setiap perubahan pada file itu langsung terlihat oleh aplikasi yang mengaksesnya melalui tautan keras yang mereferensikannya. Namun, ukuran entri direktori dan informasi atribut diperbarui hanya untuk tautan yang digunakan untuk melakukan perubahan.

  • Perhatikan bahwa atribut pada file tercermin di setiap tautan keras ke file itu, dan perubahan pada atribut file itu menyebar ke semua tautan keras. Misalnya, jika Anda membatalkan atur atribut baca-saja pada tautan keras untuk menghapus tautan keras tertentu, dan ada banyak tautan keras ke file aktual, maka Anda perlu mengatur ulang atribut baca-saja pada file tersebut. dari salah satu tautan keras yang tersisa untuk membawa file dan semua tautan keras yang tersisa kembali ke status hanya baca.

Persimpangan : Sebuah persimpangan (juga disebut tautan lunak) berbeda dari tautan keras karena objek penyimpanan yang dirujuknya adalah direktori yang terpisah, dan persimpangan dapat menghubungkan direktori yang terletak di volume lokal yang berbeda di komputer yang sama. Jika tidak, persimpangan berfungsi identik dengan tautan keras. Persimpangan diimplementasikan melalui titik-titik berulang.

  • MKLINKizin membuat persimpangan (menggunakan /Jparameter) direktori (dan bahkan file meskipun ini mungkin harus dianggap sebagai tautan yang tidak valid).

  • Persimpangan dapat dianggap sebagai setara tautan keras untuk tautan simbolik ke direktori. Tautan persimpangan tidak dapat dibuat ke direktori jarak jauh tetapi dapat dibuat ke direktori dengan volume yang sama / berbeda.


Referensi:

[1] Tautan Keras dan Persimpangan: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] Membuat Tautan Simbolis: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] "persimpangan direktori" vs "tautan simbolik direktori"?


9

Hard link hanyalah nama lain untuk sebuah file. Jika Anda memiliki file bernama A.txt dan Anda memiliki tautan L.txt, setelah Anda menghapus A.txt, Anda masih akan memiliki akses ke data itu melalui L.txt. Hanya ketika keduanya dihapus file hilang.

Di sisi lain, Anda memiliki apa yang disebut soft-link (persimpangan jika itu folder atau tautan simbolis jika itu file). Dalam hal ini, ketika Anda menghapus A.txt, file benar-benar hilang. Menghapus L.txt tidak berpengaruh apa pun pada file.

Tautan keras hanya dapat digunakan pada partisi yang sama dengan file asli dan tautan lunak dapat digunakan di seluruh partisi.

File dan folder PS sebagian besar dapat dipertukarkan sejauh NTFS berjalan.


3
Maaf, sambungan dan tautan lunak bukan hal yang sama untuk NTFS. :(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx Quote: "Persimpangan (juga disebut tautan lunak)"
Josip Medved

3
Namun, ada perbedaan lebih lanjut antara persimpangan (alias soft-link) dan tautan simbolik, tapi saya belum masuk ke detail di sini. Bagi yang berminat, perinciannya dapat ditemukan di dokumentasi Windows di msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx dan msdn.microsoft.com/en-us/library/aa363878%28VS. 85% 29.aspx .
Josip Medved

1
Sejak Windows Vista, ada persimpangan NTFS (hanya dapat diarahkan ke direktori) dan symlink gaya Unix (dapat menunjuk ke apa saja secara harfiah).
grawity

0

Hard link: hanya berfungsi untuk volume yang sama.
Persimpangan: volume lokal apa pun
Simbolik: volume lokal atau jalur UNC

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Obrolan bonus

Windows membuat persimpangan dan tautan simbolik untuk keperluan AppCompat; untuk aplikasi yang ditulis dengan buruk yang berpikir:

  • C: \ Users \ All Users
  • C: \ Users \ Pengguna Default

valid

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

Hal yang sama berlaku di folder profil pengguna, untuk aplikasi yang mengharapkan folder era Windows XP masih ada hari ini:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

2
dan menjadi semakin gila pada instalasi windows non-inggris saat Anda kemudian mendapatkan BAHKAN symlink / persimpangan, karena beberapa mungkin atau mungkin tidak tahu Windows hingga XP sebenarnya memiliki nama lokal, yang dengan mudah dapat mengacaukan skrip atau tutorial yang dibuat untuk Bahasa lain. Vista membunuh itu dan sebagai gantinya menggunakan nama DISPLAY lokal, jadi jalur yang sebenarnya adalah sama di semua bahasa, tetapi karena itu windowses lokal memiliki lebih banyak tautan di dalamnya daripada yang berbahasa Inggris
My1

-1

Untuk menjawab secara terprogram:

Tautan keras: shared_ptr <>. Selalu ada satu.

Tautan lunak: lemah_ptr <>. Hanya valid ketika ada tautan keras lain.


Itu yang mudah. :) Pertanyaannya adalah tentang Hard Links vs persimpangan. ;)
Vilx-
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.