0 votes

La modification d'un fichier lié à un emplacement semble le détruire à un autre emplacement.

J'ai un fichier, monfichier.txt, situé dans le dossier1. Depuis le terminal, je crée un lien dur vers ce fichier dans un autre répertoire avec la commande

ln myfile.txt ~/Documents/folder2

Le nouveau fichier apparaît comme prévu dans le dossier2. Lorsque j'examine l'inode de chaque fichier à l'aide de ls -i, il donne le même numéro, comme prévu. Cependant, si j'ouvre le fichier et le modifie dans le dossier 1, après l'avoir enregistré, si j'ouvre le fichier à partir du dossier 2, il ne contient aucune donnée. En examinant les numéros d'inode avec ls -i, les deux fichiers ont maintenant des numéros d'inode différents. Ma question est donc la suivante : pourquoi cela se produit-il ? Est-ce le comportement auquel je dois m'attendre ? J'avais compris que les liens durs étaient des fichiers réellement indiscernables, simplement des noms alternatifs pour les mêmes données. Je m'attendrais donc à ce que la modification du fichier après son ouverture à un endroit ne soit pas différente de celle que j'aurais faite si je l'avais ouvert à l'autre endroit. Quelqu'un peut-il expliquer ce qui se passe ici ?

Au cas où cela aurait de l'importance, j'utilise Mavericks et le terminal.app par défaut.

Quelques informations supplémentaires. Le comportement décrit se produisait lorsque le fichier était édité avec TeXShop ou TextEdit, je pensais donc que c'était quelque chose au niveau du système d'exploitation. Cependant, cela ne semble pas se produire lorsque j'édite le fichier avec Aquamacs.

1voto

aberkow Points 11

Un de mes amis a trouvé la réponse pour moi. Apparemment, OS X dispose d'une fonction writeToFile:atomically, qui entraîne la création d'une copie du fichier modifié, puis, lors de la sauvegarde, le remplacement du fichier original par la copie. Comme la copie existe à un endroit différent du disque dur, elle a un numéro d'inode différent. Ainsi, après l'enregistrement, le fichier ouvert pointe vers un nouvel emplacement et les données de l'inode d'origine sont supprimées. Ainsi, l'autre copie du fichier ne pointe plus vers rien à l'emplacement de l'inode d'origine.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X