Miten ongelma syntyy
Avaat tiedoston, ja muokatessasi omaa kopiotasi jokin muu kirjoittaa alkuperäiseen: toinen ylläpitäjä, asetustenhallinnan ajo, paketin päivitys tai itse sovellus. Jos tämän jälkeen tallennat, toisen tekemä muutos katoaa ilman virheilmoitusta. Paikallinen muokkaus ja lähetys SFTP:n kautta ovat erityisen alttiita tälle, koska lukemisen ja kirjoittamisen väliin jää pitkä aika eikä tavallinen lähetys vertaa mitään.
Kirjaa tila ennen aloittamista
Merkitse muistiin tarkistussumma ja viimeisen muutoksen ajankohta, kun lataat tiedoston. Tarkista ne uudelleen juuri ennen lähettämistä. Eri tarkistussumma tarkoittaa, että tiedosto on muuttunut, eikä sitä pidä kirjoittaa yli tarkastelematta muutoksia.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confVertaa ja yhdistä muutokset
Säilytä muokkaamasi kopio uudella nimellä, hae nykyinen versio ja vertaa sitä sekä lähtöversioon että omaan versioosi. Tee sitten oma muutoksesi nykyiseen versioon sen päällekirjoittamisen sijaan. Komento diff3 voi näyttää kaikki kolme versiota yhdessä.
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.currentSelvitä, mikä muuttaa tiedostoa
Jos tiedosto muuttuu jatkuvasti, selvitä syy ennen uutta muokkausta. Tarkista, kenellä se on avoinna, ja tutki järjestelmälokia sekä pakettihistoriaa. Jos tiedosto on asetustenhallinnan hallinnassa, muuta mallipohjaa siellä, sillä muuten seuraava ajo korvaa muokkauksesi.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logVaroitus ei ole lukitus
Muokkaimet, kuten vim ja nano, varoittavat, jos tiedosto on muuttunut avaamisen jälkeen, mutta eivät estä toista prosessia kirjoittamasta siihen. Sama koskee tarkistussummien vertailua: juuri ennen tallennusta tehty tarkistus lyhentää aikaikkunaa huomattavasti mutta ei poista sitä. Palvelimilla, joilla työskentelee useita ihmisiä, versionhallinnassa oleva asetusten lähde suojaa paremmin kuin mikään muokkain.
Tallennuksen suojaus CH-J Server Manager -sovelluksessa
File Manager -muokkain tarkistaa tiedoston uudelleen tallennettaessa. Jos sisältö, käyttöoikeudet tai linkin kohde on muuttunut, tallennus pysähtyy ja alkuperäinen säilyy ennallaan. Voit tämän jälkeen ladata nykyisen version palvelimelta, jolloin tallentamattomat muutoksesi hylätään. Kopioi siis tekstisi ensin talteen muualle. Muokkain ei yhdistä versioita puolestasi. Siirroissa sovellus kysyy ennen muuttuneen tai jo olemassa olevan kohteen korvaamista ja kehottaa aloittamaan alusta, jos lähde muuttui siirron aikana.