Je comprends très bien la notion de liens physiques et j'ai lu plusieurs fois les pages de manuel des outils de base comme cp--- et même les spécifications POSIX récentes ---. J'ai quand même été surpris d'observer le comportement suivant:
$ echo john > john
$ cp -l john paul
$ echo george > george
À ce stade, johnil paulaura le même inode (et le même contenu) et georgedifférera sur les deux aspects. Maintenant, nous faisons:
$ cp george paul
A ce stade , je me attendais georgeet pauld'avoir un nombre différent de inodes , mais le même contenu --- cette attente est satisfaite --- mais je également prévu pauld'avoir maintenant un inode différent de john, et johnd'avoir encore le contenu john. C'est là que j'ai été surpris. Il s'avère que la copie d'un fichier vers le chemin de destination paula également pour résultat d'installer ce même fichier (même inode) sur tous les autres chemins de destination qui partagent paull'inode. Je pensais que cela cpcrée un nouveau fichier et le déplace à la place autrefois occupée par l'ancien fichier paul. Au lieu de cela, ce qu'il semble faire est d'ouvrir le fichier existant paul, de le tronquer et d'écriregeorgecontenu dans ce fichier existant. Par conséquent, tous les "autres" fichiers avec le même inode obtiennent "leur" contenu mis à jour en même temps.
Ok, c'est un comportement systématique et maintenant que je sais m'y attendre, je peux trouver un moyen de contourner ce problème ou d'en tirer parti, le cas échéant. Ce qui me laisse perplexe, c'est où j'étais censé voir ce comportement documenté? Je serais surpris si ce n'est pas documenté quelque part dans des documents que j'ai déjà consultés. Mais apparemment, je l'ai manqué, et je ne trouve pas maintenant une source qui discute de ce comportement.