Hogyan keletkezik a probléma
Megnyit egy fájlt, és miközben a saját másolatát szerkeszti, valami más írja az eredetit: egy másik rendszergazda, egy konfigurációkezelési futás, egy csomagfrissítés vagy maga az alkalmazás. Ha ezután ment, a másik módosítás hibaüzenet nélkül eltűnik. A helyi szerkesztés és az SFTP-n keresztüli feltöltés különösen veszélyeztetett, mert az olvasás és az írás között hosszú idő telik el, és egy egyszerű feltöltés semmit sem hasonlít össze.
Kezdés előtt rögzítse az állapotot
A fájl letöltésekor jegyezze fel az ellenőrzőösszeget és az utolsó módosítás idejét. Közvetlenül feltöltés előtt ellenőrizze őket újra. Az eltérő ellenőrzőösszeg azt jelenti, hogy a fájl megváltozott, és átnézés nélkül nem szabad felülírni.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confHasonlítsa össze és egyesítse a módosításokat
Őrizze meg a szerkesztett másolatát új néven, töltse le az aktuális verziót, és hasonlítsa össze a kiinduló verzióval és a sajátjával. Ezután az aktuális verzióra vezesse át a módosítását ahelyett, hogy felülírná. A diff3 parancs mindhárom verziót együtt tudja megjeleníteni.
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.currentDerítse ki, mi módosítja a fájlt
Ha a fájl folyton változik, újabb szerkesztés előtt keresse meg a változtatások forrását. Ellenőrizze, ki tartja nyitva, és nézze meg a naplót, valamint a csomagelőzményeket. Ha a fájlt konfigurációkezelő kezeli, ott módosítsa a sablont, különben a következő futás felülírja a szerkesztését.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logA figyelmeztetés nem zárolás
Az olyan szerkesztők, mint a vim és a nano, figyelmeztetnek, ha a fájl a megnyitása óta megváltozott, de nem akadályozzák meg, hogy egy másik folyamat írjon bele. Ugyanez igaz az ellenőrzőösszegek összehasonlítására: a közvetlenül mentés előtti ellenőrzés nagyon rövidre csökkenti a kockázatos időablakot, de nem szünteti meg. Olyan szervereken, ahol többen dolgoznak, egy verziókezelt konfigurációforrás bármely szerkesztőnél jobb védelmet nyújt.
Mentésvédelem a CH-J Server Manager alkalmazásban
A File Manager szerkesztője mentéskor újra ellenőrzi a fájlt. Ha a tartalma, jogosultságai vagy a hivatkozás célja megváltozott, a mentés leáll, és az eredeti fájl érintetlen marad. Ekkor betöltheti az aktuális verziót a szerverről, de ez elveti a nem mentett módosításokat, ezért előbb másolja félre a szövegét. A szerkesztő nem egyesíti Ön helyett a verziókat. Átvitelkor az alkalmazás rákérdez a már létező vagy megváltozott cél felülírására, és újrakezdést kér, ha a forrás az átvitel során megváltozott.