Ada banyak jawaban yang benar di sini, tapi saya rasa tidak ada orang yang benar-benar mengatasi kesalahan persepsi. Pertanyaan aslinya pada dasarnya adalah "ketika saya membuat tautan simbolik, mudah untuk mengidentifikasinya setelah itu. Tapi saya tidak tahu bagaimana mengidentifikasi tautan keras." Dan ya, jawabannya pada dasarnya bermuara pada "Anda tidak bisa," dan kurang lebih menjelaskan mengapa, tetapi tampaknya tidak ada yang mengakui bahwa, memang, itu membingungkan dan aneh.
Jika Anda membaca semua ini dan Anda sudah tahu apa yang terjadi, maka Anda baik; Anda tidak perlu membaca sedikit pun. Jika Anda masih bingung, teruskan.
Jawaban yang benar-benar sangat singkat adalah bahwa tautan keras sama sekali bukan tautan sama sekali, tidak seperti tautan simbolis. Ini adalah entri baru dalam struktur direktori yang menunjuk ke sekelompok byte yang sama dengan entri direktori asli, dan setelah Anda membuatnya, itu sama 'nyata' dan sah seperti yang pertama. Setiap file 'normal' pada drive Anda memiliki setidaknya satu tautan keras; tanpa itu, Anda tidak akan melihatnya di mana pundirektori, dan tidak akan dapat merujuk atau menggunakannya. Jadi jika Anda memiliki file Fred.txt, dan Anda memasang tautan keras Wilma.txt dan Barney.txt ke sana, ketiga nama (dan entri direktori) merujuk ke file yang sama, dan mereka semua sama-sama valid. Tidak ada cara bagi OS untuk mengatakan bahwa salah satu entri dibuat ketika Anda menekan "save" di editor teks Anda, dan yang lain dibuat dengan perintah "ln".
OS memang harus melacak berapa banyak entri yang berbeda menunjuk ke file yang sama. Jika Anda menghapus Wilma.txt, tidak mengherankan bahwa Anda tidak membebaskan ruang apa pun di drive Anda. Tetapi jika Anda menghapus Fred.txt (file 'asli'), Anda masih tidak akan membebaskan ruang apa pun di drive Anda, karena data pada drive yang dikenal sebagai Fred.txt masih juga Barney.txt. Hanya ketika Anda menghapus semua entri direktori akan OS de-mengalokasikan ruang bahwa data itu sendiri menempati.
Jika Barney.txt telah menjadi tautan simbolis, maka menghapus Fred.txt akan menghilangkan alokasi ruang, dan Barney.txt sekarang akan menjadi tautan yang rusak. Juga, jika Anda memindahkan atau mengganti nama file yang memiliki tautan simbolik yang mengarah padanya, Anda akan memutus tautan tersebut. Tetapi Anda dapat memindahkan atau mengganti nama file yang ditautkan dengan keras semua yang Anda inginkan tanpa merusak entri direktori lain yang mengarah ke file / data itu, karena semuanya adalah entri direktori yang merujuk pada blok data yang sama pada drive (dengan menggunakan inode # dari data itu).
[Ini dua tahun kemudian, dan yang terakhir sedikit bingung saya selama satu menit, jadi saya pikir saya akan mengklarifikasi. Jika Anda mengetik "mv ./Wilma.txt ../elsewhere/Betty.txt" sepertinya Anda memindahkan file, tetapi pada kenyataannya, Anda tidak. Apa yang sebenarnya Anda lakukan adalah menghapus item baris dari daftar direktori dari direktori Anda saat ini, yang bertuliskan "nama 'Wilma.txt' dikaitkan dengan data yang dapat ditemukan dengan menggunakan inode ###### #, "dan menambahkan item baris baru ke daftar direktori direktori ../di suatu tempat yang mengatakan" nama 'Betty.txt' dikaitkan dengan data yang dapat ditemukan melalui inode ####### ". Inilah sebabnya mengapa Anda dapat 'memindahkan' file 2 gigabyte secepat file 2 kilobyte, selama Anda memindahkannya ke lokasi lain di drive yang sama.]
Karena OS harus melacak berapa banyak entri direktori yang berbeda menunjuk ke potongan data yang sama, Anda dapat mengetahui apakah file tertentu telah ditautkan dengan susah payah, walaupun Anda tidak dapat memastikan apakah entri direktori yang Anda pilih memiliki Sedang melihat adalah yang 'asli' atau tidak. Salah satu caranya adalah perintah "ls", khususnya "ls-l" (itu huruf kecil L setelah tanda hubung)
Untuk meminjam contoh sebelumnya ....
-rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f1
Huruf pertama adalah tanda hubung, jadi ini bukan direktori atau sesuatu yang eksotis, itu adalah file biasa 'biasa'. Tetapi jika itu benar-benar biasa, angka itu setelah bagian rwx-ish akan menjadi "1", seperti pada, "ada satu entri direktori yang menunjuk ke blok data ini." Tapi itu bagian dari demonstrasi tautan keras, jadi alih-alih tertulis "3".
Perhatikan bahwa ini mungkin dapat mengarah pada perilaku aneh dan misterius (jika Anda belum membungkus kepala dengan tautan keras, itu). Jika Anda membuka Fred.txt di editor teks Anda dan membuat beberapa perubahan, apakah Anda akan melihat perubahan yang sama di Wilma.txt dan Barney.txt? Mungkin. Mungkin. Jika editor teks Anda menyimpan perubahan dengan membuka file asli dan menulis perubahan itu, maka ya, ketiga nama masih akan menunjuk pada teks yang sama (baru diubah). Tetapi jika editor teks Anda membuat file baru (Fred-new-temp.txt), tulis versi Anda yang diubah itu, lalu hapus Fred.txt, lalu ganti nama Fred-new-temp.txt menjadi Fred.txt, Wilma dan Barney akan masih menunjuk ke versi asli, bukan versi yang baru diubah. Jika Anda tidak mengerti tautan keras, ini bisa membuat Anda sedikit marah. :) [Oke, sebenarnya saya tidak tahu secara pribadieditor teks yang akan melakukan hal yang baru-file / rename, tapi saya tahu banyak program lain yang melakukan hal itu, jadi tetap waspada.]
Catatan terakhir: salah satu hal yang diperiksa oleh 'fsck' (sistem file) adalah jika ada blok data pada drive Anda yang entah bagaimana tidak lagi dirujuk oleh entri direktori. Terkadang ada yang tidak beres, dan satu-satunya entri direktori yang menunjuk ke inode akan dihapus tetapi ruang drive itu sendiri tidak ditandai sebagai "tersedia." Jadi salah satu tugas fsck adalah mencocokkan semua ruang yang dialokasikan dengan semua entri direktori untuk memastikan bahwa tidak ada file yang tidak direferensikan. Jika menemukan beberapa, itu menciptakan entri direktori baru dan menempatkannya di "hilang + ditemukan".