Saya memahami gagasan tentang hardlink dengan sangat baik, dan telah membaca halaman manual untuk alat dasar seperti cp
--- dan bahkan spesifikasi POSIX terbaru --- beberapa kali. Namun saya masih terkejut melihat perilaku berikut:
$ echo john > john
$ cp -l john paul
$ echo george > george
Pada titik ini john
dan paul
akan memiliki inode (dan konten) yang sama, dan george
akan berbeda dalam kedua hal. Sekarang kita lakukan:
$ cp george paul
Pada titik ini saya berharap george
dan paul
memiliki nomor inode yang berbeda tetapi konten yang sama --- harapan ini terpenuhi --- tetapi saya juga diharapkan paul
sekarang memiliki nomor inode yang berbeda dari john
, dan untuk john
masih memiliki konten john
. Di sinilah saya terkejut. Ternyata menyalin file ke jalur tujuan paul
juga memiliki hasil menginstal file yang sama (inode yang sama) di semua jalur tujuan lain yang berbagi paul
inode. Saya berpikir untuk cp
membuat file baru dan memindahkannya ke tempat yang sebelumnya ditempati oleh file lama paul
. Sebaliknya apa yang tampaknya dilakukan adalah membuka file yang ada paul
, memotongnya, dan menulisgeorge
Konten ke dalam file yang ada. Karenanya setiap file "lain" dengan inode yang sama mendapatkan konten "mereka" yang diperbarui secara bersamaan.
Oke, ini adalah perilaku sistematis dan sekarang setelah saya tahu untuk mengharapkannya, saya bisa mencari cara untuk mengatasinya, atau mengambil keuntungan darinya, jika perlu. Apa yang membingungkan saya di mana saya seharusnya melihat perilaku ini didokumentasikan? Saya akan terkejut jika itu tidak didokumentasikan di suatu tempat di dokumen yang sudah saya lihat. Tetapi ternyata saya melewatkannya, dan sekarang tidak dapat menemukan sumber yang membahas perilaku ini.