Come si presenta il problema
Apri un file e, mentre modifichi la tua copia, qualcos’altro scrive nell’originale: un altro amministratore, un’esecuzione del sistema di gestione della configurazione, un aggiornamento di un pacchetto o l’applicazione stessa. Se poi salvi, l’altra modifica scompare senza un errore. La modifica locale seguita dal caricamento tramite SFTP è particolarmente esposta, perché il tempo tra lettura e scrittura è lungo e un semplice caricamento non confronta nulla.
Registra lo stato prima di iniziare
Annota il checksum e l’ora dell’ultima modifica quando scarichi il file. Controllali di nuovo immediatamente prima di caricarlo. Un checksum diverso significa che il file è cambiato e non dovresti sovrascriverlo senza esaminarlo.
sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.confConfronta e unisci le modifiche
Conserva la tua copia modificata con un nuovo nome, recupera la versione attuale e confrontala con quella da cui sei partito e con la tua. Poi applica la tua modifica alla versione attuale anziché sovrascriverla. Il comando diff3 può mostrare tutte e tre le versioni insieme.
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.currentScopri cosa modifica il file
Se il file continua a cambiare, individua la causa prima di modificarlo di nuovo. Controlla chi lo tiene aperto ed esamina il journal e la cronologia dei pacchetti. Se il file è gestito da un sistema di gestione della configurazione, modifica lì il modello, altrimenti l’esecuzione successiva sostituirà la tua modifica.
sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.logUn avviso non è un blocco
Editor come vim e nano ti avvertono quando un file è cambiato dopo l’apertura, ma non impediscono a un altro processo di scriverci. Lo stesso vale per il confronto dei checksum: un controllo subito prima del salvataggio riduce molto l’intervallo di rischio, ma non lo azzera. Sui server su cui lavorano più persone, una fonte della configurazione sotto controllo di versione protegge meglio di qualsiasi editor.
Protezione del salvataggio in CH-J Server Manager
L’editor di File Manager ricontrolla il file al salvataggio. Se il contenuto, i permessi o la destinazione del collegamento sono cambiati, il salvataggio si interrompe e l’originale resta com’è. Puoi quindi caricare la versione attuale dal server, ma questo elimina le modifiche non salvate: prima copia il tuo testo altrove. L’editor non unisce le versioni al posto tuo. Per i trasferimenti, l’applicazione chiede conferma prima di sostituire una destinazione cambiata o già esistente e ti invita a ricominciare se l’origine è cambiata durante il trasferimento.