Hardlinks kavramını çok iyi anlıyorum ve cp
--- ve hatta en son POSIX özellikleri gibi temel araçlar için adam sayfalarını birkaç kez okudum . Yine de aşağıdaki davranışı gözlemlemekten şaşırdım:
$ echo john > john
$ cp -l john paul
$ echo george > george
Bu noktada john
ve paul
aynı inode (ve içeriğe) sahip george
olacak ve her iki açıdan da farklı olacaktır. Şimdi yapıyoruz:
$ cp george paul
Bu noktada beklenen george
ve paul
farklı inode'a ama aynı içeriği --- bu beklenti gerçekleşti olması --- ama aynı zamanda beklenen paul
şimdi farklı bir inode numarası olması john
ve için, john
hala içeriğe sahip john
. İşte burada şaşırdım. Bir dosyayı hedef yola kopyalamanın paul
, aynı dosyayı (aynı inode), inode'yu paylaşan diğer tüm hedef yollara kurmanın sonucu olduğu da ortaya çıkıyor paul
. Bunun cp
yeni bir dosya oluşturduğunu ve eski dosyanın işgal ettiği yere taşıdığını düşünüyordum paul
. Bunun yerine, var olan dosyayı açmak paul
, kısaltmak ve yazmakgeorge
içeriğini mevcut dosyaya aktarın. Bu nedenle, aynı inode'a sahip "diğer" dosyalar, "içeriklerini" aynı anda günceller.
Tamam, bu sistematik bir davranış ve şimdi beklediğimi bildiğime göre, uygun şekilde nasıl çalışacağını veya bundan nasıl faydalanabileceğimi anlayabilirim. Bu davranışı belgelediğim yerde beni şaşırtan ne oldu? Daha önce baktığım belgelerde bir yerde belgelenmemişse şaşırırdım . Ama görünüşe göre kaçırdım ve şimdi bu davranışı tartışan bir kaynak bulamıyorum.