Comment le problème survient
Vous ouvrez un fichier et, pendant que vous modifiez votre copie, autre chose écrit dans l’original : un autre administrateur, une exécution du système de gestion de configuration, une mise à niveau de paquet ou l’application elle-même. Si vous enregistrez ensuite, l’autre modification disparaît sans message d’erreur. La modification locale suivie d’un envoi par SFTP est particulièrement exposée, car le délai entre lecture et écriture est long et un simple envoi ne compare rien.
Noter l’état avant de commencer
Notez la somme de contrôle et l’heure de la dernière modification lorsque vous téléchargez le fichier. Vérifiez-les à nouveau juste avant l’envoi. Une somme de contrôle différente signifie que le fichier a changé et que vous ne devez pas l’écraser sans examiner les modifications.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confComparer et fusionner les modifications
Conservez votre copie modifiée sous un nouveau nom, récupérez la version actuelle et comparez-la à la version de départ ainsi qu’à la vôtre. Appliquez ensuite votre modification à la version actuelle au lieu de l’écraser. La commande diff3 peut afficher les trois versions ensemble.
diff -u example.conf.orig example.conf.current
diff -u example.conf.orig example.conf.mine
diff3 example.conf.mine example.conf.orig example.conf.currentTrouver ce qui modifie le fichier
Si le fichier change continuellement, trouvez la cause avant de le modifier à nouveau. Vérifiez qui l’a ouvert et consultez le journal système ainsi que l’historique des paquets. Si le fichier est géré par un système de gestion de configuration, modifiez le modèle dans ce système ; sinon, la prochaine exécution remplacera votre modification.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logUn avertissement n’est pas un verrou
Les éditeurs comme vim et nano vous avertissent lorsqu’un fichier a changé depuis son ouverture, mais ils n’empêchent pas un autre processus d’y écrire. Il en va de même pour les comparaisons de sommes de contrôle : une vérification juste avant l’enregistrement réduit fortement la fenêtre de risque, sans la supprimer. Sur les serveurs où plusieurs personnes travaillent, une source de configuration sous gestion de versions vous protège mieux que n’importe quel éditeur.
Protection à l’enregistrement dans CH-J Server Manager
L’éditeur de File Manager vérifie à nouveau le fichier lors de l’enregistrement. Si son contenu, ses permissions ou la cible du lien ont changé, l’enregistrement s’arrête et l’original reste intact. Vous pouvez alors charger la version actuelle depuis le serveur, ce qui abandonne vos modifications non enregistrées : copiez donc d’abord votre texte ailleurs. L’éditeur ne fusionne pas les versions à votre place. Lors des transferts, l’application demande confirmation avant de remplacer une cible qui a changé ou existe déjà, et vous indique de recommencer si la source a changé pendant le transfert.