Ich verstehe den Begriff der Hardlinks sehr gut und habe die Manpages für grundlegende Tools wie cp
--- und sogar die neuesten POSIX-Spezifikationen --- einige Male gelesen . Trotzdem war ich überrascht, folgendes Verhalten zu beobachten:
$ echo john > john
$ cp -l john paul
$ echo george > george
Zu diesem Zeitpunkt hat john
und paul
den gleichen Inode (und Inhalt) und george
unterscheidet sich in beiden Punkten. Jetzt machen wir:
$ cp george paul
Zu diesem Zeitpunkt erwartete george
und erwartete paul
ich unterschiedliche Inode-Nummern, aber den gleichen Inhalt - diese Erwartung wurde erfüllt -, aber ich erwartete auch, dass paul
jetzt eine andere Inode-Nummer als john
und john
der Inhalt noch vorhanden sein würde john
. Hier war ich überrascht. Es stellt sich heraus, dass das Kopieren einer Datei in den Zielpfad paul
auch dazu führt, dass dieselbe Datei (derselbe Inode) auf allen anderen Zielpfaden installiert wird, die den paul
Inode gemeinsam nutzen. Ich dachte, dass cp
erstellt eine neue Datei und verschiebt es an die Stelle, die zuvor von der alten Datei besetzt war paul
. Stattdessen scheint es so zu sein, dass die vorhandene Datei geöffnet paul
, abgeschnitten und geschrieben wirdgeorge
's Inhalt in die vorhandene Datei. Daher werden alle "anderen" Dateien mit demselben Inode "ihren" Inhalt gleichzeitig aktualisiert.
Ok, dies ist ein systematisches Verhalten, und jetzt, da ich weiß, dass ich es erwarten kann, kann ich herausfinden, wie ich es umgehen oder wie es angebracht ist, es auszunutzen. Was mich verwirrt, ist, wo ich dieses Verhalten dokumentiert sehen sollte? Es würde mich wundern, wenn es nicht irgendwo in Dokumenten dokumentiert ist, die ich mir bereits angesehen habe. Aber anscheinend habe ich es verpasst und kann jetzt keine Quelle finden, die dieses Verhalten beschreibt.