Vấn đề xảy ra như thế nào
Bạn mở một tệp, và trong lúc bạn chỉnh sửa bản sao của mình, một tác nhân khác ghi vào bản gốc: quản trị viên khác, một lần chạy quản lý cấu hình, quá trình nâng cấp gói hoặc chính ứng dụng. Nếu sau đó bạn lưu, thay đổi của bên kia sẽ biến mất mà không có lỗi nào được báo. Chỉnh sửa cục bộ rồi tải lên qua SFTP đặc biệt dễ gặp vấn đề này, vì khoảng thời gian giữa đọc và ghi dài, còn thao tác tải lên thông thường không so sánh gì cả.
Ghi lại trạng thái trước khi bắt đầu
Ghi lại giá trị tổng kiểm tra và thời điểm thay đổi gần nhất khi tải tệp xuống. Kiểm tra lại cả hai ngay trước khi tải lên. Tổng kiểm tra khác đi có nghĩa là tệp đã thay đổi và bạn không nên ghi đè khi chưa xem xét.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confSo sánh và hợp nhất các thay đổi
Giữ bản sao đã chỉnh sửa dưới tên mới, lấy phiên bản hiện tại và so sánh với phiên bản ban đầu cũng như bản của bạn. Sau đó áp dụng thay đổi của bạn vào phiên bản hiện tại thay vì ghi đè. Lệnh diff3 có thể hiển thị cả ba phiên bản cùng nhau.
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.currentTìm tác nhân đang thay đổi tệp
Nếu tệp liên tục thay đổi, hãy tìm nguyên nhân trước khi chỉnh sửa lại. Kiểm tra ai đang mở tệp, xem nhật ký và lịch sử gói. Nếu tệp do hệ thống quản lý cấu hình quản lý, hãy sửa mẫu ở đó; nếu không, lần chạy tiếp theo sẽ thay thế phần chỉnh sửa của bạn.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logCảnh báo không phải là khóa
Các trình soạn thảo như vim và nano cảnh báo khi tệp thay đổi kể từ lúc mở, nhưng không ngăn tiến trình khác ghi vào tệp. So sánh tổng kiểm tra cũng vậy: kiểm tra ngay trước khi lưu làm khoảng thời gian có thể xảy ra xung đột rất ngắn, nhưng không bằng không. Trên máy chủ có nhiều người cùng làm việc, nguồn cấu hình được quản lý phiên bản bảo vệ bạn tốt hơn bất kỳ trình soạn thảo nào.
Bảo vệ khi lưu trong CH-J Server Manager
Trình soạn thảo của File Manager kiểm tra lại tệp khi lưu. Nếu nội dung, quyền hoặc đích liên kết thay đổi, việc lưu sẽ dừng lại và bản gốc được giữ nguyên. Khi đó bạn có thể nạp phiên bản hiện tại từ máy chủ, nhưng thao tác này sẽ loại bỏ các thay đổi chưa lưu, vì vậy hãy sao chép nội dung của bạn ra nơi khác trước. Trình soạn thảo không hợp nhất các phiên bản giúp bạn. Khi truyền tệp, ứng dụng hỏi trước khi thay thế đích đã thay đổi hoặc đã tồn tại, và yêu cầu bạn bắt đầu lại nếu nguồn thay đổi trong quá trình truyền.