CH-J Server Managerupravljanje poslužiteljima preko SSH
Meni
Svi vodiči i članci →

Udaljena datoteka promijenila se tijekom uređivanja: kako izbjeći prepisivanje

Kako otkriti da je netko drugi promijenio datoteku na poslužitelju dok ste je uređivali, usporediti verzije i spremiti bez gubitka ijedne izmjene.

Kako nastaje problem

Otvorite datoteku, a dok uređujete svoju kopiju, netko ili nešto drugo zapisuje u izvornik: drugi administrator, postupak upravljanja konfiguracijom, nadogradnja paketa ili sama aplikacija. Ako zatim spremite datoteku, druga izmjena nestaje bez poruke o pogrešci. Lokalno uređivanje i prijenos putem SFTP posebno su izloženi tom problemu jer je razmak između čitanja i pisanja dug, a običan prijenos ništa ne uspoređuje.

Zabilježite stanje prije početka

Pri preuzimanju datoteke zabilježite kontrolni zbroj i vrijeme posljednje izmjene. Provjerite ih ponovno neposredno prije prijenosa na poslužitelj. Drukčiji kontrolni zbroj znači da se datoteka promijenila i da je ne smijete prepisati bez pregleda.

sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.conf

Usporedite i spojite izmjene

Sačuvajte uređenu kopiju pod novim nazivom, dohvatite trenutačnu verziju i usporedite je s početnom verzijom i svojom kopijom. Zatim primijenite svoju izmjenu na trenutačnu verziju umjesto da je prepišete. Naredba diff3 može prikazati sve tri verzije zajedno.

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.current

Utvrdite što mijenja datoteku

Ako se datoteka stalno mijenja, pronađite uzrok prije ponovnog uređivanja. Provjerite tko je ima otvorenu te pregledajte journal i povijest paketa. Ako datotekom upravlja sustav za upravljanje konfiguracijom, promijenite predložak u njemu, inače će sljedeće izvršavanje zamijeniti vašu izmjenu.

sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.log

Upozorenje nije zaključavanje

Uređivači poput vim i nano upozoravaju kada se datoteka promijenila od otvaranja, ali ne sprječavaju drugi proces da u nju piše. Isto vrijedi za usporedbe kontrolnih zbrojeva: provjera neposredno prije spremanja znatno skraćuje taj vremenski razmak, ali ga ne svodi na nulu. Na poslužiteljima na kojima radi više ljudi izvor konfiguracije pod kontrolom verzija štiti vas bolje od bilo kojeg uređivača.

Zaštita pri spremanju u CH-J Server Manager

Uređivač u File Manager ponovno provjerava datoteku pri spremanju. Ako su se promijenili sadržaj, prava pristupa ili cilj poveznice, spremanje se zaustavlja, a izvornik ostaje kakav jest. Tada možete učitati trenutačnu verziju s poslužitelja, čime se odbacuju nespremljene izmjene, pa najprije kopirajte svoj tekst na drugo mjesto. Uređivač ne spaja verzije umjesto vas. Pri prijenosima aplikacija traži potvrdu prije zamjene odredišta koje se promijenilo ili već postoji te vas upućuje da počnete ispočetka ako se izvor promijenio tijekom prijenosa.

Detaljna dokumentacija

man: stat →

man: diff →

Biometrično otključavanje i sigurnost →