Bagaimana masalah ini terjadi
Anda membuka berkas, lalu saat Anda menyunting salinan sendiri, sesuatu yang lain menulis ke berkas asli: administrator lain, proses pengelolaan konfigurasi, pembaruan paket, atau aplikasi itu sendiri. Jika Anda kemudian menyimpan, perubahan pihak lain hilang tanpa pesan kesalahan. Penyuntingan lokal yang dilanjutkan dengan pengunggahan melalui SFTP sangat rentan, karena jeda antara membaca dan menulis cukup lama dan pengunggahan biasa tidak membandingkan apa pun.
Catat keadaan sebelum memulai
Catat checksum dan waktu perubahan terakhir saat mengunduh berkas. Periksa keduanya lagi tepat sebelum mengunggah. Checksum yang berbeda berarti berkas telah berubah dan Anda tidak boleh menimpanya tanpa memeriksa terlebih dahulu.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confBandingkan dan gabungkan perubahan
Simpan salinan yang Anda sunting dengan nama baru, ambil versi terkini, lalu bandingkan dengan versi awal dan versi Anda sendiri. Kemudian terapkan perubahan Anda pada versi terkini alih-alih menimpanya. Perintah diff3 dapat menampilkan ketiga versi secara bersamaan.
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.currentCari tahu apa yang mengubah berkas
Jika berkas terus berubah, cari sumbernya sebelum menyunting lagi. Periksa siapa yang sedang membuka berkas tersebut, lalu lihat jurnal dan riwayat paket. Jika berkas dikelola oleh sistem pengelolaan konfigurasi, ubah templat di sana; jika tidak, proses berikutnya akan mengganti hasil suntingan Anda.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logPeringatan bukan penguncian
Penyunting seperti vim dan nano memperingatkan jika berkas berubah sejak dibuka, tetapi tidak mencegah proses lain menulis ke berkas itu. Hal yang sama berlaku untuk perbandingan checksum: pemeriksaan tepat sebelum menyimpan membuat celah waktunya sangat singkat, tetapi tidak menghilangkannya. Pada server yang dikerjakan beberapa orang, sumber konfigurasi dengan kontrol versi memberikan perlindungan lebih baik daripada penyunting mana pun.
Perlindungan saat menyimpan di CH-J Server Manager
Penyunting File Manager memeriksa berkas lagi saat menyimpan. Jika isi, izin, atau target tautannya berubah, penyimpanan dihentikan dan berkas asli dibiarkan seperti semula. Anda kemudian dapat memuat versi terkini dari server, yang akan membuang perubahan yang belum disimpan, jadi salin teks Anda ke tempat lain terlebih dahulu. Penyunting tidak menggabungkan versi untuk Anda. Untuk transfer, aplikasi meminta konfirmasi sebelum mengganti tujuan yang telah berubah atau sudah ada, dan meminta Anda memulai lagi jika sumber berubah selama transfer.