Πώς προκύπτει το πρόβλημα
Ανοίγετε ένα αρχείο και, ενώ επεξεργάζεστε το αντίγραφό σας, κάτι άλλο γράφει στο πρωτότυπο: άλλος διαχειριστής, μια εκτέλεση του συστήματος διαχείρισης ρυθμίσεων, μια αναβάθμιση πακέτου ή η ίδια η εφαρμογή. Αν μετά αποθηκεύσετε, η άλλη αλλαγή χάνεται χωρίς μήνυμα σφάλματος. Η τοπική επεξεργασία και η μεταφόρτωση μέσω SFTP είναι ιδιαίτερα ευάλωτες, επειδή το διάστημα μεταξύ ανάγνωσης και εγγραφής είναι μεγάλο και μια απλή μεταφόρτωση δεν συγκρίνει τίποτα.
Καταγράψτε την κατάσταση πριν ξεκινήσετε
Σημειώστε το άθροισμα ελέγχου και την ώρα της τελευταίας αλλαγής όταν κατεβάζετε το αρχείο. Ελέγξτε τα ξανά αμέσως πριν από τη μεταφόρτωση. Διαφορετικό άθροισμα ελέγχου σημαίνει ότι το αρχείο άλλαξε και δεν πρέπει να το αντικαταστήσετε χωρίς να εξετάσετε τις αλλαγές.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confΣυγκρίνετε και συγχωνεύστε τις αλλαγές
Κρατήστε το επεξεργασμένο αντίγραφό σας με νέο όνομα, κατεβάστε την τρέχουσα έκδοση και συγκρίνετέ τη με την αρχική έκδοση και με τη δική σας. Στη συνέχεια εφαρμόστε την αλλαγή σας στην τρέχουσα έκδοση αντί να την αντικαταστήσετε. Η εντολή diff3 μπορεί να εμφανίσει και τις τρεις εκδόσεις μαζί.
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.currentΕντοπίστε τι αλλάζει το αρχείο
Αν το αρχείο αλλάζει συνεχώς, βρείτε την πηγή πριν το επεξεργαστείτε ξανά. Ελέγξτε ποιος το έχει ανοιχτό και εξετάστε το ημερολόγιο και το ιστορικό πακέτων. Αν το αρχείο ελέγχεται από σύστημα διαχείρισης ρυθμίσεων, αλλάξτε εκεί το πρότυπο, διαφορετικά η επόμενη εκτέλεση θα αντικαταστήσει την επεξεργασία σας.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logΗ προειδοποίηση δεν είναι κλείδωμα
Επεξεργαστές όπως οι vim και nano προειδοποιούν όταν ένα αρχείο έχει αλλάξει από τότε που ανοίχτηκε, αλλά δεν εμποδίζουν άλλη διεργασία να γράψει σε αυτό. Το ίδιο ισχύει για τις συγκρίσεις αθροισμάτων ελέγχου: ο έλεγχος λίγο πριν την αποθήκευση περιορίζει πολύ το χρονικό παράθυρο, αλλά δεν το μηδενίζει. Σε διακομιστές όπου εργάζονται πολλά άτομα, μια πηγή ρυθμίσεων υπό έλεγχο εκδόσεων σας προστατεύει καλύτερα από οποιονδήποτε επεξεργαστή.
Προστασία κατά την αποθήκευση στο CH-J Server Manager
Ο επεξεργαστής του File Manager ελέγχει ξανά το αρχείο κατά την αποθήκευση. Αν έχουν αλλάξει το περιεχόμενο, τα δικαιώματα ή ο προορισμός του συνδέσμου, η αποθήκευση σταματά και το πρωτότυπο παραμένει ως έχει. Μπορείτε μετά να φορτώσετε την τρέχουσα έκδοση από τον διακομιστή, αλλά αυτό απορρίπτει τις μη αποθηκευμένες αλλαγές σας, γι’ αυτό αντιγράψτε πρώτα το κείμενό σας αλλού. Ο επεξεργαστής δεν συγχωνεύει τις εκδόσεις για εσάς. Στις μεταφορές, η εφαρμογή ρωτά πριν αντικαταστήσει έναν προορισμό που έχει αλλάξει ή υπάρχει ήδη και σας ζητά να ξεκινήσετε από την αρχή αν η πηγή άλλαξε κατά τη μεταφορά.