Så uppstår problemet
Du öppnar en fil, och medan du redigerar din egen kopia skriver något annat till originalet: en annan administratör, en körning av konfigurationshanteringen, en paketuppgradering eller själva applikationen. Om du sedan sparar försvinner den andra ändringen utan något felmeddelande. Lokal redigering med uppladdning via SFTP är särskilt utsatt, eftersom tiden mellan läsning och skrivning är lång och en vanlig uppladdning inte jämför något.
Notera tillståndet innan du börjar
Notera kontrollsumman och tiden för senaste ändring när du hämtar filen. Kontrollera dem igen omedelbart före uppladdningen. En annan kontrollsumma innebär att filen har ändrats och att du inte bör skriva över den utan att granska den.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confJämför och slå samman ändringarna
Behåll din redigerade kopia under ett nytt namn, hämta den aktuella versionen och jämför den med versionen du utgick från och med din egen. För sedan in din ändring i den aktuella versionen i stället för att skriva över den. Kommandot diff3 kan visa alla tre versionerna tillsammans.
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.currentTa reda på vad som ändrar filen
Om filen fortsätter att ändras ska du hitta orsaken innan du redigerar igen. Kontrollera vem som har den öppen och granska journalen och pakethistoriken. Om filen hanteras av konfigurationshanteringen ska du ändra mallen där, annars ersätter nästa körning din redigering.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logEn varning är inget lås
Redigerare som vim och nano varnar när en fil har ändrats sedan den öppnades, men hindrar inte en annan process från att skriva till den. Detsamma gäller jämförelser av kontrollsummor: en kontroll precis före sparandet gör tidsfönstret mycket kort, men eliminerar det inte. På servrar där flera personer arbetar skyddar en versionshanterad konfigurationskälla bättre än någon redigerare.
Skydd vid sparande i CH-J Server Manager
Redigeraren i File Manager kontrollerar filen igen när du sparar. Om innehållet, behörigheterna eller länkens mål har ändrats avbryts sparandet och originalet lämnas som det är. Du kan sedan läsa in den aktuella versionen från servern, vilket kastar dina osparade ändringar, så kopiera först undan din text. Redigeraren slår inte samman versionerna åt dig. Vid överföringar frågar appen innan den ersätter ett mål som har ändrats eller redan finns, och uppmanar dig att börja om ifall källan ändrades under överföringen.