Tous les fichiers de contenu identique sur mon PC sont maintenant liés entre eux. (Mes données sont complètement dé-dupliquées. C'est une conséquence de la façon dont j'ai copié mes données depuis mon ancien ordinateur).
Quels sont les pièges dont je dois être conscient maintenant que certaines actions sur un fichier peuvent affecter silencieusement un certain nombre d'autres fichiers ?
Je sais que la suppression du fichier sur lequel je travaille n'est pas un problème (en supposant que je l'ai supprimé volontairement). Cela n'affecte aucun des autres fichiers liés et je ne vois pas comment l'action de suppression pourrait entraîner des effets secondaires inattendus.
Déplacer ou renommer le fichier n'est pas un problème. Je ne vois pas de conséquences inattendues.
Je ne pense pas que la copie de fichiers liés en dur soit un problème, mais je ne suis pas aussi confiant quant aux conséquences inattendues à cet égard. Ce que j'ai vu, c'est que faire une copie (sur le même disque) d'un fichier lié à l'aide de la commande cp
maintient la copie liée à la source (i.e., le numéro d'inode ne change pas dans la copie). Copier vers un autre système de fichiers rompt évidemment le lien dur. (Je suppose qu'un piège est d'oublier ce fait, étant donné que mon PC a 3 disques durs).
La modification des permissions affecte tous les fichiers liés. Jusqu'à présent, cela s'est avéré pratique. (J'ai fait en sorte qu'un grand nombre de fichiers liés en dur soient en lecture seule).
Aucune des opérations ci-dessus ne semble produire de conséquences majeures inattendues.
Cependant, comme me l'a fait remarquer Daniel Beck dans un commentaire, l'édition ou la modification d'un fichier peut parfois poser problème. Cela dépend de l'outil et peut-être du type d'édition. (Par exemple, l'édition de petits fichiers texte à l'aide de sed semble toujours rompre le lien alors que l'utilisation de nano ne le fait pas). Cela introduit la possibilité que l'édition d'un fichier puisse affecter 何れも les fichiers liés (c'est-à-dire, modifier l'inode original).
La solution que je propose La seule solution est de rendre tous les fichiers liés en dur en lecture seule (et c'est déjà le cas pour la plupart). Si je ne peux pas le faire pour certains fichiers, je délierais ces fichiers particuliers. Y a-t-il un problème avec cette approche en lecture seule ?
Je suppose que si je vais éditer un fichier et que je constate qu'il est en lecture seule, je me souviendrai de délier ce nom de fichier tout en le rendant accessible en écriture. Un piège pourrait donc être d'oublier cette règle. Dans ce cas, je devrai me fier à mes sauvegardes.
Ai-je raison dans les déclarations ci-dessus ? Et que dois-je savoir d'autre ?
BTW, je suis sous Kubuntu 12.04. J'utilise également btrfs. (J'ai 2 SSD et 1 disque dur dans le PC. Je vais également ajouter un disque dur externe USB. Je suis également connecté à un réseau et je monte quelques partages NFS. Je ne suppose pas que ces derniers bits soient pertinents pour la question, mais je les ajoute juste au cas où).
Par ailleurs, comme j'ai plusieurs disques (avec des systèmes de fichiers distincts), pour dissocier un fichier, il me suffit de le copier sur un autre disque, puis de le déplacer à nouveau. Cependant, l'utilisation de sed fonctionne également (dans mes tests). Voici mon script :
sed -i 's/\(.\)/\1/' file1
Étonnamment, cela permet même de dissocier les fichiers de zéro octet. D'après mes tests, il semble également fonctionner sur les fichiers non textuels sans aucune option spéciale. (Mais je comprends que l'option --binary
peut être nécessaire sous Windows, MS-DOS et Cygwin). Cependant, copier sur un autre disque et revenir en arrière peut être la meilleure façon de délier. Pour mon cas d'utilisation, unlink
ne permet pas vraiment de "délier", mais plutôt de "supprimer".