In che modo rsync gestisce la corruzione dei file?


2

Come procedura di backup, vorrei sincronizzare periodicamente i file (ad esempio tramite rsync) da un computer Windows a un HD esterno.

Tuttavia, mi chiedevo della corruzione dei file. Se un file viene danneggiato sull'host, il suo checksum cambia, rsync lo vedrà come modificato e copierà il file danneggiato dall'host, sovrascrivendo la copia valida sull'HD.

Rsync ha qualche tipo di meccanismo che impedisce che ciò accada? In caso contrario, come può essere evitato?

EDIT: Per chiarire, devo dire se il checksum è cambiato perché ho aggiunto nuovo contenuto al file o perché il file è stato danneggiato. In entrambi i casi rsync vedrà il file come "modificato" e lo scriverà sulla vecchia versione su HD. Nel primo caso rsync sta facendo quello che volevo, nel secondo sta cancellando il mio vecchio file valido con Garbage.

Risposte:


2

Il modo in cui generalmente si affronta questo problema è il modo in cui si affronta qualsiasi altra situazione in cui si desidera ripristinare una versione precedente di un file: backup incrementali.

L'idea qui è che in realtà copi il file solo quando il contenuto cambia. Per qualsiasi altra copia del file sul supporto di backup, è sufficiente fare riferimento a una revisione precedente. Questo ti consente di tornare a una revisione precedente del file se quello attuale risulta danneggiato, naturalmente l'idea che se non si nota la corruzione in tempo, probabilmente il file non era molto importante per iniziare con.

rsync supporta questo (almeno su * nix) con il --link-destparametro della riga di comando.

Perché questo funzioni bene, hai anche bisogno di qualcosa per ripulire le vecchie copie, cosa che rsync non funziona; avresti bisogno di qualcos'altro per quello. Altrimenti il ​​tuo disco alla fine si riempirà e dovrai eliminare manualmente i file dal supporto di destinazione.

E per rispondere alla domanda diretta: rsync non ha una vera gestione dei file danneggiati. Probabilmente gestirà i file che non possono essere letti, a meno che tu non lo stia eseguendo in modalità di sostituzione sul posto, ma non guarderà quell'immagine JPEG o documento PDF e determinerà che è malformato causando un aspetto strano quando viene renderizzato . Questo non è solo il suo lavoro.

Confronta questa nota in una risposta a Perché RAID non è un backup? su Server Fault, di Jared Oberhaus :

Un backup rifiuterà di copiare un file corrotto?

Anche se un backup copia dati danneggiati o danneggiati, il punto di un backup è che puoi e dovresti avere più copie. Ad esempio, l'ultima ora, ieri, la scorsa settimana, ecc. È possibile ottenere un effetto simile utilizzando le istantanee rotanti sul dispositivo di archiviazione.

e correlati, nelle parole di Jörg W Mittag in un'altra risposta alla stessa domanda, evidenziando la differenza tra ridondanza e backup:

Se si sovrascrive accidentalmente la tesi di dottorato con immondizia, la ridondanza garantisce di disporre di più copie di immondizia, nel caso in cui una si danneggi. Un backup ti consente di ripristinare la tua tesi di dottorato.


Il problema qui è che se un file danneggiato viene salvato sul disco, tutti i delta successivi saranno privi di valore.
dr01,

@ dr01 Sì. Come ti aspetti che rsync conosca la differenza tra un file che viene sovrascritto intenzionalmente con garbage e che viene sovrascritto involontariamente con garbage? Fa parte della risposta al perché RAID non è di nuovo un backup , ma da una prospettiva diversa. Quando noti il ​​danneggiamento, tuttavia, sarai comunque in grado di accedere al tuo backup e recuperare la versione precedente del file, che non sarà influenzata dal danneggiamento (tranne nel caso in cui il danneggiamento influisca anche sul backup, ma in in tal caso potresti avere problemi più grandi ..).
un CVn

-1

Se si desidera verificare il contenuto del file, è possibile utilizzare l'opzione "--checksum". Questa opzione calcola un hash per ogni file trasferito.


Come faccio a riconoscere la differenza tra un checksum modificato perché ho modificato volontariamente il file e un checksum modificato perché il file è stato danneggiato in qualche modo?
dr01,

Se usi rsync senza l'opzione --checksum e tutto sembra essere uguale (questo include tempo di modifica, dimensioni, permessi, ecc.), Ma --checksum mostra la differenza, puoi tranquillamente supporre che il file abbia subito un qualche tipo di corruzione. Se il file è stato legittimamente modificato, alcune di queste proprietà cambiano.
Roberto Paz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.