CH-J Server Managerservera pārvaldība virs SSH
Izvēlne
Visas pamācības un raksti →

Attālais fails rediģēšanas laikā mainījās: kā izvairīties no tā pārrakstīšanas

Kā noteikt, ka rediģēšanas laikā kāds cits ir mainījis failu serverī, salīdzināt versijas un saglabāt, nezaudējot nevienu no izmaiņām.

Kā rodas problēma

Jūs atverat failu un, kamēr rediģējat savu kopiju, kaut kas cits ieraksta izmaiņas oriģinālā: cits administrators, konfigurācijas pārvaldības izpilde, pakotnes atjauninājums vai pati lietotne. Ja pēc tam saglabājat, otra izmaiņa pazūd bez kļūdas paziņojuma. Lokāla rediģēšana un augšupielāde ar SFTP ir īpaši pakļauta šim riskam, jo starp nolasīšanu un ierakstīšanu paiet ilgs laiks un vienkārša augšupielāde neko nesalīdzina.

Pirms darba sākuma fiksējiet stāvokli

Lejupielādējot failu, pierakstiet kontrolsummu un pēdējo izmaiņu laiku. Pārbaudiet tos vēlreiz tieši pirms augšupielādes. Atšķirīga kontrolsumma nozīmē, ka fails ir mainījies, un to nevajadzētu pārrakstīt bez apskates.

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

Salīdziniet un apvienojiet izmaiņas

Saglabājiet savu rediģēto kopiju ar jaunu nosaukumu, iegūstiet pašreizējo versiju un salīdziniet to ar sākotnējo versiju un savējo. Pēc tam ieviesiet savas izmaiņas pašreizējā versijā, nevis pārrakstiet to. Komanda diff3 var parādīt visas trīs versijas kopā.

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

Noskaidrojiet, kas maina failu

Ja fails pastāvīgi mainās, pirms nākamās rediģēšanas atrodiet izmaiņu avotu. Pārbaudiet, kam tas ir atvērts, un apskatiet žurnālu un pakotņu vēsturi. Ja failu pārvalda konfigurācijas pārvaldības sistēma, mainiet veidni tajā, citādi nākamā izpilde aizstās jūsu labojumu.

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

Brīdinājums nav bloķējums

Tādi redaktori kā vim un nano brīdina, ja fails ir mainījies kopš atvēršanas, taču tie neliedz citam procesam tajā rakstīt. Tas pats attiecas uz kontrolsummu salīdzināšanu: pārbaude tieši pirms saglabāšanas padara riska intervālu ļoti īsu, bet nesamazina to līdz nullei. Serveros, kuros strādā vairāki cilvēki, konfigurācijas avots ar versiju kontroli aizsargā labāk nekā jebkurš redaktors.

Saglabāšanas aizsardzība lietotnē CH-J Server Manager

File Manager redaktors saglabājot vēlreiz pārbauda failu. Ja ir mainījies saturs, atļaujas vai saites mērķis, saglabāšana tiek apturēta un oriģināls paliek tāds, kāds ir. Pēc tam varat ielādēt pašreizējo versiju no servera, taču tas atmet nesaglabātās izmaiņas, tāpēc vispirms nokopējiet savu tekstu citur. Redaktors neapvieno versijas jūsu vietā. Pārsūtīšanas laikā lietotne prasa apstiprinājumu pirms mainīta vai jau esoša mērķa aizstāšanas un liek sākt no jauna, ja pārsūtīšanas laikā ir mainījies avots.

Sīki izstrādāta dokumentācija

man: stat →

man: diff →

Biometriskā atbloķēšana un drošība →