Kuidas probleem tekib
Avad faili ja samal ajal, kui muudad oma koopiat, kirjutab miski muu originaali: teine administraator, konfiguratsioonihalduse käivitus, paketi uuendamine või rakendus ise. Kui seejärel salvestad, kaob teise tehtud muudatus veateateta. Eriti haavatav on kohalik redigeerimine koos SFTP kaudu üleslaadimisega, sest lugemise ja kirjutamise vahele jääb pikk aeg ning tavaline üleslaadimine ei võrdle midagi.
Salvesta olek enne alustamist
Faili allalaadimisel märgi üles kontrollsumma ja viimase muudatuse aeg. Kontrolli neid uuesti vahetult enne üleslaadimist. Erinev kontrollsumma tähendab, et fail on muutunud ning sa ei tohiks seda muudatusi üle vaatamata üle kirjutada.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confVõrdle ja ühenda muudatused
Säilita muudetud koopia uue nime all, laadi alla praegune versioon ning võrdle seda nii algse kui ka enda versiooniga. Seejärel lisa oma muudatus praegusesse versiooni, selle asemel et see üle kirjutada. Käsk diff3 saab näidata kõiki kolme versiooni koos.
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.currentSelgita välja, mis faili muudab
Kui fail pidevalt muutub, selgita enne uut redigeerimist välja põhjus. Kontrolli, kellel fail avatud on, ning vaata süsteemilogi ja pakettide ajalugu. Kui faili haldab konfiguratsioonihaldus, muuda malli seal, vastasel juhul asendab järgmine käivitus sinu muudatuse.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logHoiatus ei ole lukustus
Redaktorid nagu vim ja nano hoiatavad, kui fail on pärast avamist muutunud, kuid ei takista teisel protsessil sellesse kirjutamast. Sama kehtib kontrollsummade võrdlemise kohta: kontroll vahetult enne salvestamist muudab ajavahemiku väga lühikeseks, kuid ei kõrvalda seda. Serverites, kus töötab mitu inimest, kaitseb versioonihaldusega konfiguratsiooniallikas sind paremini kui ükski redaktor.
Salvestuskaitse rakenduses CH-J Server Manager
File Manager redaktor kontrollib faili salvestamisel uuesti. Kui sisu, õigused või lingi sihtkoht on muutunud, salvestamine peatub ja originaal jääb puutumata. Seejärel saad laadida serverist praeguse versiooni, mis tühistab su salvestamata muudatused, seega kopeeri tekst esmalt mujale. Redaktor ei ühenda versioone sinu eest. Edastuste puhul küsib rakendus enne muutunud või juba olemasoleva sihtfaili asendamist ning palub uuesti alustada, kui lähtefail edastuse ajal muutus.