In che modo RSYNC esegue backup incrementali


14

Come fa a rsyncsapere quali file vengono modificati e quali no? Registra i suoi dati ovunque nel file?

Perché voglio fare backup incrementali, ma prima trasferirà tutti i file.

Quindi la mia domanda principale è: se carico i file iniziali via FTP ma non da rsync. Salterà rsynccomunque quei file esistenti o caricherà tutto alla prima esecuzione.

Risposte:


12

Rsync ha un numero di flag che controllano cosa guarderà e cosa copierà nella destinazione. Molto spesso viene utilizzato il flag "-a" che è il flag "Archive", questo è probabilmente quello che vuoi. eseguire rsync con i flag "-av" e fare in modo che esegua una prima esecuzione sui dati di cui si desidera eseguire il backup. La prossima volta che esegue eseguirà un checksum di blocco del file e copierà solo le parti che sono state modificate su file esistenti, copiando nuovi file e rimuovendo i file che non sono più presenti. Controlla la sezione "-a" su:

http://linux.die.net/man/1/rsync

La prima esecuzione sarà intensiva per BandWidth, le seguenti esecuzioni saranno probabilmente a uso intensivo del processore ma utilizzano poca larghezza di banda rispetto alla corsa iniziale. A meno che tu non abbia molto churn sul tuo set di dati.

A Rsync non importa come hai ottenuto i file nel sorgente o nelle directory di destinazione, copierà solo le modifiche tra i due, a meno che tu non aggiunga flag per fare qualcosa di diverso.

Se si desidera registrare ciò che è stato modificato, è possibile utilizzare l'opzione "--log-file". Tutto sommato qualcosa del genere suona come quello che vuoi:

rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups

9

rsync non fa 'incrementale', è più simile a 'differenziale'. non trasferisce le modifiche (che presuppongono una certa conoscenza di una corsa precedente), trasferisce le differenze (confrontando l'origine con i file di destinazione)

una semplificazione del processo:

  • controlla innanzitutto le dimensioni del file, le date di creazione / modifica, i flag ... se è tutto identico, salta il file.
  • se non ci sono file con quel nome sulla destinazione, copia semplicemente l'intero file.
  • se sulla destinazione è presente un file, calcola i checksum per ogni 2 KB del file e li trasferisce al mittente.
  • il mittente confronta il contenuto del file di origine e confronta con la destinazione e trasferisce tutti i dati non già presenti, insieme a riferimenti a tutti i dati corrispondenti. con ciò, il bersaglio può ricostruire l'intero file usando pezzi del vecchio bersaglio e dei nuovi blocchi.

5

rsync non registra alcun dato, controlla i timestamp di modifica dei file e quindi il contenuto. se carichi prima da ftp andrà bene - rsync non ritrasmetterà tutti i dati ma probabilmente passerà attraverso tutto il contenuto e correggerà i timestamp. ma non ci sarà più alcun trasferimento enorme.


5

Forse sono pedante ma i backup incrementali significano che hai prima un backup completo. Quindi hai il backup dei file modificato da quel backup. Quindi è stato modificato un altro backup dei backup rispetto al precedente, ecc. Quindi è necessario il backup completo e tutti i backup incrementali da quello precedente.

Quindi, solo l'utilizzo della modalità di archiviazione non è un backup incrementale . Penso che la differenza sia importante perché significa che non puoi tornare indietro nel tempo per ottenere i file prima che cambino .

Se si desidera eseguire un vero backup incrementale, utilizzare opzioni come --backup-dir. C'è un esempio qui .


1
+1 per la distinzione tra backup incrementali e mirroring (che è ciò che fa rsync per impostazione predefinita).
sleske,

Ah sì! Il mirroring era la parola che stavo afferrando, buona chiamata :-)
Kyle Brandt,

0

Se la vera domanda è "Voglio fare backup incrementali su rsync", ci sono alcune opzioni disponibili. Io uso Dirvish:

http://www.dirvish.org/

Il ripristino è semplice perché ti offre istantanee: utilizza collegamenti fissi per ottenere istantanee complete risparmiando spazio in cui un file è identico. Internamente, usa l'opzione --link-dest di rsync:

--link-dest=DIR         hardlink to files in DIR when unchanged

Poiché utilizza rsync, salva anche la larghezza di banda della rete (e quindi il tempo) in cui le modifiche sono molto ridotte. Funziona anche se si tar e sneakernet un'immagine dirvish creato localmente prima, se hai un sacco di file e un collegamento lento.

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.