CH-J Server Managerpengurusan pelayan melalui SSH
Menu
Semua panduan dan artikel →

Fail jauh berubah semasa anda menyuntingnya: cara mengelakkan penulisan ganti

Cara mengesan bahawa orang lain mengubah fail pelayan semasa suntingan anda, membandingkan versi dan menyimpan tanpa kehilangan mana-mana perubahan.

Bagaimana masalah ini berlaku

Anda membuka fail, dan semasa anda menyunting salinan sendiri, sesuatu yang lain menulis pada fail asal: pentadbir lain, proses pengurusan konfigurasi, naik taraf pakej atau aplikasi itu sendiri. Jika anda kemudian menyimpan, perubahan pihak lain hilang tanpa ralat. Penyuntingan setempat dan muat naik melalui SFTP amat terdedah, kerana masa antara membaca dan menulis panjang dan muat naik biasa tidak membandingkan apa-apa.

Catat keadaan sebelum bermula

Catat nilai checksum dan masa perubahan terakhir apabila memuat turun fail. Semak kedua-duanya sekali lagi sejurus sebelum memuat naik. Nilai checksum yang berbeza bermakna fail telah berubah dan anda tidak patut menulis gantinya tanpa memeriksa dahulu.

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

Bandingkan dan gabungkan perubahan

Simpan salinan yang telah anda sunting dengan nama baharu, ambil versi semasa dan bandingkannya dengan versi yang anda gunakan pada awalnya serta versi anda sendiri. Kemudian gunakan perubahan anda pada versi semasa dan bukannya menulis gantinya. Perintah diff3 boleh memaparkan ketiga-tiga versi bersama-sama.

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

Kenal pasti perkara yang mengubah fail

Jika fail terus berubah, cari puncanya sebelum menyunting lagi. Semak siapa yang membukanya dan lihat jurnal serta sejarah pakej. Jika fail dikawal oleh pengurusan konfigurasi, ubah templat di situ; jika tidak, pelaksanaan seterusnya akan menggantikan suntingan anda.

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

Amaran bukan kunci

Penyunting seperti vim dan nano memberi amaran apabila fail berubah sejak dibuka, tetapi tidak menghalang proses lain daripada menulisnya. Perbandingan checksum juga begitu: semakan sejurus sebelum menyimpan menjadikan ruang masa itu sangat singkat, tetapi bukan sifar. Pada pelayan yang dikendalikan oleh beberapa orang, sumber konfigurasi di bawah kawalan versi melindungi anda dengan lebih baik daripada mana-mana penyunting.

Perlindungan penyimpanan dalam CH-J Server Manager

Penyunting File Manager menyemak fail sekali lagi semasa menyimpan. Jika kandungan, keizinan atau sasaran pautannya berubah, penyimpanan dihentikan dan fail asal kekal seperti sedia ada. Anda kemudian boleh memuatkan versi semasa daripada pelayan, yang membuang perubahan belum disimpan, jadi salin teks anda ke tempat lain dahulu. Penyunting tidak menggabungkan versi untuk anda. Untuk pemindahan, aplikasi bertanya sebelum menggantikan sasaran yang telah berubah atau sudah wujud, dan meminta anda memulakan semula jika sumber berubah semasa pemindahan.

Dokumentasi terperinci

man: stat →

man: diff →

Buka kunci biometrik dan keselamatan →