Tidak, tautan keras sama sekali berbeda. Tautan lunak lebih dekat dengan pintasan Windows (meskipun ada perbedaan penting, tautan simbolis lebih mirip dengan pintasan windows daripada tautan keras). Tautan keras adalah hal yang berbeda dan Anda hampir tidak pernah membutuhkannya.
Secara singkat, tautan lunak dibuat dengan perintah ini:
ln -s foo bar
Jika Anda menjalankan ls -l
, Anda akan melihat:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
The ->
berarti bahwa bar
ini adalah link ke foo
. Jadi, membuka bar
, dengan editor teks misalnya, sebenarnya akan membuka file yang terpisah foo
. Namun, menghapus bar
hanya akan menghapus jalan pintas, itu tidak akan mempengaruhi file foo
.
Di lain pihak, tautan keras dibuat dengan perintah ini:
ln foo bar
Jika sekarang Anda jalankan ls -l
, tidak ada indikasi hubungan antara file:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Tetapi — dan ini sangat penting — itu sebenarnya adalah file yang sama . File pada sistem file Unix disimpan menggunakan inode ; inode pada dasarnya adalah cara filesystem memetakan nama file ke lokasi tertentu pada hard drive fisik. Jadi, tautan keras adalah file yang menunjuk ke inode yang sama dengan targetnya. Cara lain untuk meletakkan ini adalah bahwa semua file sebenarnya merupakan tautan keras yang menunjuk ke inode mereka. Membuat tautan keras ke sebuah file hanya menciptakan pointer baru (file) pada sistem file yang menunjuk ke inode yang sama. Setiap inode dapat memiliki beberapa file yang menunjuk padanya atau satu, atau tidak sama sekali.
Untuk memahami ini dengan lebih jelas, gunakan ls -i
yang menunjukkan inode yang terkait dengan file. Mari buat tautan lunak dan tautan keras dan lihat apa yang terjadi:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Sekarang, periksa inode mereka:
Seperti yang Anda lihat di atas, baik foo
dan HardLinkToFoo
memiliki inode yang sama (16648029) sementara SoftLinkToFoo memiliki satu yang berbeda (16.648.036).
Apa yang terjadi jika kita mengubah nama foo
dengan mv foo bar
?
Warna merah menunjukkan tautan lunak yang rusak, yang targetnya tidak dapat ditemukan lagi. Ini karena tautan lunak mengarah ke nama file, bukan inode-nya. Perhatikan bahwa meskipun mengubah nama, inode tetap sama sehingga hardlink baik-baik saja, inode tetap berfungsi.
Singkatnya, tautan keras sebenarnya adalah dua manifestasi dari file yang sama ; mereka adalah pointer ke bagian disk yang sama. Tautan lunak hanyalah pintasan. Untuk mengambil analogi dunia nyata, hardlink seperti dua nomor telepon yang berbeda untuk saluran telepon yang sama dan tautan lunak seperti memiliki dua saluran telepon yang berbeda di rumah yang sama.