Pemahaman saya adalah bahwa tautan keras menyertakan salinan file asli dan bahwa saya dapat menghapus file yang ditautkan di satu direktori, dan itu akan tetap ada di direktori lain.
Jika itu masalahnya, mengapa saya ingin menggunakan tautan keras sama sekali? Mengapa tidak hanya memiliki dua file terpisah?
Tautan keras pada dasarnya adalah nama file kedua untuk file yang sama. Jadi jika Anda menghubungkan file, itu hanya akan menjadi satu kali pada sistem file, dan karena itu hanya menghabiskan satu kali. Jadi, Anda ingin menggunakan ini jika Anda ingin menyimpan ruang disk
sumber
Pada sistem file unix, setiap nama file sebenarnya merupakan tautan keras ke lokasi data pada disk, yang disebut inode. Jika Anda membuat tautan keras baru ke file yang sudah ada, itu tidak akan mengambil ruang tambahan pada disk karena itu hanya pointer lain ke data yang sama. Jika Anda mengedit data dengan satu atau tautan lainnya (atau mengedit inode secara langsung) kedua file akan diubah.
Sistem menyimpan hitungan berapa banyak tautan keras yang dimiliki masing-masing inode. Ketika jumlah tautan adalah 0, file tidak lagi dapat dijangkau, dan data ditandai sebagai aman untuk ditimpa. Jadi diberikan file dengan 2 tautan keras, jika Anda menghapus tautan mana pun, data tidak akan dihapus. Hanya jika Anda menghapus keduanya maka data akan hilang.
Anda dapat melihat nomor inode file menggunakan
-i
saklar kels
perintah.Tautan lunak, di sisi lain, menunjuk ke file lain dengan nama file-nya. Jika Anda memindahkan atau menghapus file asli, tautannya akan rusak.
sumber
Dengan merujuk pada bagian dari pertanyaan yang bertanya, "mengapa saya ingin menggunakan tautan keras sama sekali?":
File yang ditautkan dengan tautan keras (atau yang terkait dengan file lunak (simbolis) menawarkan cara yang bermanfaat untuk memiliki satu file yang dapat dieksekusi yang dapat dibuat untuk menyamar untuk tujuan yang berbeda.
Yaitu, nama yang digunakan oleh kode untuk diperiksa untuk menentukan opsi apa yang tersedia untuk dieksekusi. Ini memungkinkan pengembangan dan pengemasan satu bagian besar kode dengan semua fungsi bersama yang diperlukan untuk tujuan yang sedikit berbeda. Dari perspektif pengguna, spesifikasi "apa" untuk dijalankan (dengan nama) membatasi pilihan dan presentasi ke subset pilihan yang lebih mudah dikelola.
Contoh klasik adalah LVM. Pada suatu waktu HP-UX digunakan file hard-linked untuk berbagai executable (misalnya
vgdisplay
,vgcreate
,vgextend
, dll Hari ini, seperti Linux, perintah ini sebenarnya simbolis (soft) link kelvm
executable.sumber