Apa perbedaan antara tautan lunak (simbolik) dan tautan keras?

59

Saya mendengar bahwa Anda sekarang dapat membuat tautan lunak di Vista juga . Jadi, apa perbedaan antara tautan lunak (simbolis) dan tautan keras di UNIX / Linux / Vista?

Apakah ada keuntungan menggunakan satu di atas yang lain? Atau apakah mereka hanya melayani dua tujuan yang berbeda?

Aaron K
sumber
Secara praktis, jawabannya adalah Anda hampir selalu ingin menggunakan tautan simbolik. Pemahaman saya adalah bahwa sebagian besar tautan keras untuk menghemat ruang, terutama dalam hal-hal seperti snapshot dan cadangan tambahan, di mana snapshot berturut-turut memiliki banyak file identik yang tidak mungkin berubah di masa depan.
Ryan Thompson
Haruskah ini dimigrasi ke Unix & Linux? Lihat unix.stackexchange.com/questions/9575/…
ripper234
2
Tidak, itu tidak boleh dimigrasi. Karena pertanyaan awal tidak khusus untuk Unix saja - Windows mendukung tautan keras dan lunak.
Richard West
1
beberapa aplikasi akan rusak (dan kadang-kadang buruk) jika Anda menggunakan tautan lunak - terutama untuk direktori: tautan lunak akan mengalami dereferensi, dan ketika ada dan aplikasi membandingkan, katakanlah /var/opt/log/appname(konfigurasi) dengan nilai dereferensi, katakanlah /apps/appname/logs, ia akan mengeluh ini bukan pertandingan. Perbaikan untuk ini adalah dengan menggunakan mount --bind(pada Linux) untuk memasang kembali direktori asli ke lokasi baru.
warren
1
Hanya untuk menjernihkan beberapa poin yang termasuk dalam jawaban lain ... Windows dapat membuat hardlink (meskipun saya percaya mereka berperilaku sedikit berbeda daripada di Unix). Lihatlah perintah mklink dan argumen h. (Jika Anda mengetik mklink ke dalam baris perintah, Anda akan melihat file bantuan yang menyertakan sintaks dasar.)

Jawaban:

68

Hard link secara tradisional berbagi struktur sistem file yang sama (inode in unixspeak), sedangkan soft-link adalah pengalihan pathname.

  • Hardlink harus berada di sistem file yang sama, softlink dapat melintasi sistem file.
  • File yang di-link tetap terhubung bahkan jika Anda memindahkan salah satu dari mereka (kecuali jika Anda memindahkan satu ke sistem file lain yang memicu mekanisme salin dan hapus). File softlink rusak jika Anda memindahkan target (asli), dan kadang-kadang ketika Anda memindahkan tautan (Apakah Anda menggunakan jalur absolut atau relatif? Apakah masih valid?).
  • File yang di-link sama-sama, sedangkan yang asli khusus di softlink, dan menghapus yang asli menghapus data. Data tidak hilang sampai semua hardlink dihapus.
  • Softlink dapat menunjuk pada target apa pun , tetapi sebagian besar OS / sistem file melarang direktori hardlink untuk mencegah siklus dalam grafik sistem file (dengan pengecualian .dan ..entri dalam direktori unix yang merupakan hard link).
  • Softlink dapat memerlukan dukungan khusus dari alat bantu berjalan filesystem. Baca di readlink (2) .

(Beberapa detail teringat oleh mat1t . Terima kasih.)

dmckee
sumber
Ringkasan yang bagus. Setiap pengguna Linux harus mengetahui hal ini (meskipun tautan keras sangat jarang).
Artem Russakovskii
Jawaban dmckee cukup detail tentang semantiknya. Satu-satunya detail yang akan saya tambahkan adalah penjelasan tentang apa yang terjadi pada tingkat yang lebih tinggi: tautan lunak adalah file sendiri, sedangkan tautan keras adalah entri direktori yang menunjuk ke data yang ada. Wikipedia memiliki lebih banyak detail tentang tautan keras dan lunak .
Mr. Shiny dan New New 宇
jumlah yang bagus, sangat berguna
Razique
9
Juga harus dicatat bahwa tautan keras berbagi izin serta informasi kepemilikan.
Corey S.
6
Harap tambahkan bahwa 2 hardlink secara otomatis dibuat dengan namanya. dan .. setiap kali Anda membuat folder. Di Linux itulah satu-satunya hardlink yang valid ke folder.
Mircea Vutcovici
10

Ringkasannya adalah bahwa tautan simbolis / pendek bertindak sebagai pintasan ke lokasi file pertama, sedangkan hardlink adalah pintasan ke file pada disk.

Jika Anda menghapus target tautan lunak maka tautan lunak tersebut akan berhenti bekerja, tetapi jika Anda menghapus satu salinan tautan keras, file tersebut akan tetap berada di disk sampai semua tautan keras itu dihapus. Akibatnya semua nama file adalah hardlink ke file pada disk.

Ada juga batasan tertentu, misalnya saya tidak berpikir Anda dapat membuat tautan keras folder, tetapi Anda dapat membuat tautan lunaknya. Tautan lunak juga dapat mengarah ke file / folder pada drive dan partisi yang berbeda sedangkan tautan keras tidak dapat.

Matthew Steeples
sumber
-1

Sistem MS Windows selalu menggunakan tautan lunak (pintasan). Yaitu, tautan tersebut hanya bertindak sebagai jalan pintas yang menunjuk ke lokasi file. Jika lokasi dokumen asli dipindahkan, tautan terputus. Selanjutnya, apa yang Anda lakukan pada pintasan (seperti mengubah izin, atau mengubah nama pintasan) tidak memengaruhi file yang sebenarnya.

Jadi pertanyaannya dimulai dengan asumsi yang salah. Ya, Vista menggunakan softlink, tetapi ini bukan hal baru, itu adalah pintasan MS.

Reginald Kincaid
sumber
3
Tidak, NTFS mendukung hardlink dan sejak NTFS 3.1 (versi saat ini sejak XP / 2003).
Chris S