Jika Anda melakukannya di rm myFile
mana myFile
tautan keras, apa yang terjadi?
sumber
Jika Anda melakukannya di rm myFile
mana myFile
tautan keras, apa yang terjadi?
Di Unix semua file normal adalah Hardlink. Hardlinks dalam sistem file Unix (dan sebagian besar (semua?)) Adalah referensi untuk apa yang disebut inode
. The inode
memiliki counter referensi, ketika Anda memiliki satu "link" ke file (yang merupakan modus operandi normal) counter adalah 1. Bila Anda membuat kedua, ketiga, keempat, hubungan dll, counter bertambah (meningkat) masing-masing waktu demi satu. Saat Anda menghapus ( rm
) tautan penghitung dikurangi (dikurangi) oleh satu. Jika penghitung tautan mencapai 0, sistem file menghapus inode
dan menandai ruang yang tersedia untuk digunakan.
Singkatnya, selama Anda tidak menghapus tautan terakhir, file akan tetap ada.
Edit:
File akan tetap ada bahkan jika tautan terakhir dihapus . Ini adalah salah satu cara untuk memastikan keamanan data yang terkandung dalam file tidak dapat diakses oleh proses lain. Menghapus data dari sistem file sepenuhnya dilakukan hanya jika data memiliki 0 tautan ke sana seperti yang diberikan dalam metadata-nya dan tidak digunakan oleh proses apa pun.
Sejauh ini, IMHO ini adalah cara termudah untuk memahami tautan keras (dan perbedaannya dari softlink).
unlink()
.unlink
diedit./proc
merupakan filesystem (virtual) terpisah.unlink()
untuk menghapus file membuat saya bingung ketika saya mulai bermain dengan pemrograman C pada MS-DOS beberapa waktu yang lalu di paruh pertama tahun 1990-an. :)Pengujian lebih mudah daripada yang saya kira: Saya membuat file teks, kemudian sulit ditautkan. Menghapus tautan tidak menghapus file yang di- link -nya dan file yang ditautkan tetap berada di tempatnya.
sumber
semua file di disk Anda sebenarnya adalah petunjuk untuk data nyata di drive Anda.
ketika Anda membuat hardlink untuk file itu, file hardlink-ed akan menunjuk ke data yang sama dengan file aslinya.
seperti pada contoh ini, a.txt menunjuk ke data (byte) dari file yang ada di drive, ketika hardlink b.txt dibuat, itu akan menunjuk ke apa yang ditunjuk oleh a.txt.
dengan demikian menghapus salah satu dari mereka tidak akan mempengaruhi yang lain mereka terpisah satu sama lain.
TETAPI, ketika Anda menghapus keduanya, sistem akan melihat bahwa data yang ada di disk tidak memiliki file yang menunjuk ke sana, sehingga sistem akan menganggapnya sebagai ruang kosong dan akan menimpanya saat diinginkan.
sumber
FILE "A.txt"
identik denganLINK "B.txt"
, terutama karena Anda telah memanggil satuFILE
dan yang lainnya aLINK
. Tautan ini benar-benar panah hitam.