Wie das Problem entsteht
Sie öffnen eine Datei und bearbeiten Ihre Kopie, während etwas anderes das Original beschreibt: ein weiterer Administrator, ein Konfigurationsverwaltungslauf, ein Paket-Upgrade oder die Anwendung selbst. Wenn Sie anschließend speichern, verschwindet die andere Änderung ohne Fehlermeldung. Besonders anfällig ist die lokale Bearbeitung mit anschließendem Hochladen über SFTP, weil zwischen Lesen und Schreiben viel Zeit vergeht und ein einfaches Hochladen nichts vergleicht.
Den Zustand vor Beginn festhalten
Notieren Sie beim Herunterladen die Prüfsumme und den Zeitpunkt der letzten Änderung. Prüfen Sie beide unmittelbar vor dem Hochladen erneut. Eine andere Prüfsumme bedeutet, dass die Datei geändert wurde und Sie sie nicht ungeprüft überschreiben sollten.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confÄnderungen vergleichen und zusammenführen
Bewahren Sie Ihre bearbeitete Kopie unter einem neuen Namen auf, laden Sie die aktuelle Version herunter und vergleichen Sie sie mit Ihrer Ausgangsversion und Ihrer bearbeiteten Kopie. Übertragen Sie Ihre Änderung dann in die aktuelle Version, statt diese zu überschreiben. Der Befehl diff3 kann alle drei Versionen gemeinsam anzeigen.
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.currentDie Ursache der Dateiänderungen finden
Wenn sich die Datei ständig ändert, ermitteln Sie die Ursache, bevor Sie sie erneut bearbeiten. Prüfen Sie, wer sie geöffnet hat, und sehen Sie im Journal und im Paketverlauf nach. Wird die Datei von einer Konfigurationsverwaltung verwaltet, ändern Sie dort die Vorlage. Andernfalls ersetzt der nächste Lauf Ihre Bearbeitung.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logEine Warnung ist keine Sperre
Editoren wie vim und nano warnen, wenn eine Datei seit dem Öffnen geändert wurde, verhindern aber nicht, dass ein anderer Prozess sie beschreibt. Dasselbe gilt für Prüfsummenvergleiche: Eine Prüfung unmittelbar vor dem Speichern verkleinert das Zeitfenster stark, beseitigt es aber nicht. Auf Servern, an denen mehrere Personen arbeiten, schützt eine versionsverwaltete Konfigurationsquelle besser als jeder Editor.
Schutz beim Speichern in CH-J Server Manager
Der Editor von File Manager prüft die Datei beim Speichern erneut. Haben sich Inhalt, Rechte oder Verknüpfungsziel geändert, wird das Speichern abgebrochen und das Original bleibt unverändert. Sie können dann die aktuelle Version vom Server laden. Dabei gehen Ihre ungespeicherten Änderungen verloren; kopieren Sie Ihren Text daher vorher an eine andere Stelle. Der Editor führt Versionen nicht für Sie zusammen. Bei Übertragungen fragt die Anwendung vor dem Ersetzen eines bereits vorhandenen oder geänderten Ziels nach. Hat sich die Quelle während der Übertragung geändert, fordert sie Sie auf, von vorn zu beginnen.