Kaip kyla ši problema
Atveriate failą ir, kol redaguojate savo kopiją, kažkas kitas įrašo į originalą: kitas administratorius, vykdoma konfigūracijos valdymo užduotis, paketo naujinimas ar pati programa. Jei tada išsaugosite, kitas pakeitimas dings be klaidos pranešimo. Vietinis redagavimas ir įkėlimas per SFTP ypač pažeidžiami, nes nuo skaitymo iki įrašymo praeina daug laiko, o paprastas įkėlimas nieko nelygina.
Prieš pradėdami užfiksuokite būseną
Atsisiųsdami failą užsirašykite kontrolinę sumą ir paskutinio pakeitimo laiką. Dar kartą juos patikrinkite prieš pat įkeldami. Kitokia kontrolinė suma reiškia, kad failas pasikeitė ir jo nereikėtų perrašyti neperžiūrėjus.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confPalyginkite ir sujunkite pakeitimus
Išsaugokite redaguotą kopiją nauju vardu, atsisiųskite dabartinę versiją ir palyginkite ją su pradine bei savo versija. Tada pritaikykite savo pakeitimą dabartinei versijai, užuot ją perrašę. Komanda diff3 gali kartu parodyti visas tris versijas.
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.currentIšsiaiškinkite, kas keičia failą
Jei failas nuolat keičiasi, prieš vėl redaguodami raskite pakeitimų šaltinį. Patikrinkite, kas jį laiko atvertą, peržiūrėkite žurnalą ir paketų istoriją. Jei failą valdo konfigūracijos valdymo sistema, keiskite šabloną joje, antraip kitas vykdymas pakeis jūsų pataisas.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logĮspėjimas nėra užraktas
Tokie redaktoriai kaip vim ir nano įspėja, kai failas pasikeitė po atvėrimo, tačiau netrukdo kitam procesui į jį rašyti. Tas pats galioja kontrolinių sumų lyginimui: patikra prieš pat išsaugant labai sutrumpina rizikos laikotarpį, bet jo nepanaikina. Serveriuose, kuriuose dirba keli žmonės, versijų valdymo sistemoje laikomas konfigūracijos šaltinis saugo geriau nei bet kuris redaktorius.
Išsaugojimo apsauga programoje CH-J Server Manager
File Manager redaktorius išsaugant dar kartą patikrina failą. Jei pasikeitė jo turinys, teisės ar nuorodos paskirties objektas, išsaugojimas sustabdomas, o originalas lieka nepakeistas. Tada galite įkelti dabartinę versiją iš serverio, bet taip atmetami neišsaugoti pakeitimai, todėl pirmiausia nukopijuokite savo tekstą kitur. Redaktorius nesujungia versijų už jus. Perduodant failus programa klausia prieš pakeisdama pasikeitusį arba jau esantį paskirties failą ir nurodo pradėti iš naujo, jei perdavimo metu pasikeitė šaltinis.