Utilizzo di Rsync per il backup su un'unità esterna


17

Sto comprando un disco rigido esterno per il backup dei computer di casa mia (finalmente !!). Spero di usare rsync. Ho visto un esempio che fa (o sembra fare) esattamente quello che voglio. Qualcosa come questo:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Tuttavia, guardando la documentazione e gli esempi di rsync e così via, le cose hanno iniziato a sembrare MOLTO più complicate di così. Networking, demoni e gergo, oh mio!

Suppongo che nessuna di queste cose sia necessaria fintanto che sto eseguendo la risincronizzazione da un computer a un'unità esterna connessa al firewire. Sbaglio nel presupporre che? Le cose saranno davvero più complicate di quel comando innocuo?


Risposte:


10

Rsync funziona bene su tutte le unità locali. Tuttavia, se rileva percorsi locali, passa automaticamente alla modalità --whole-file che non copia i diff, ma copia semplicemente il file sorgente sul file di destinazione. Rsync ignorerà comunque i file che non sono stati affatto modificati. Quando la larghezza di banda tra l'origine e la destinazione è elevata (come due dischi locali), ciò è molto più veloce della lettura di entrambi i file, quindi della copia dei soli bit modificati.


2
s / Comunque / Fortunatamente / quando i file sono locali, leggere entrambi e fare tutta la magia diff per scrivere il nuovo con parti di entrambi (leggendoli di nuovo) è molto più lavoro che leggere semplicemente la fonte, scrivere la destinazione.
Javier,

non sapevo se avrei dovuto approfondirlo nella mia risposta. Lo aggiungerò ora.
kbyrd,

31

Uso rsync con le seguenti bandiere facilmente memorizzabili come 'glop' e 'trunc' e 'v'.

rsync -gloptrunc $srcdir $dstdir

Una breve guida:

  • g - conserva le informazioni sulla proprietà del gruppo
  • l - copia i collegamenti simbolici come collegamenti simbolici
  • o - preserva le informazioni sul proprietario
  • p - conserva le autorizzazioni
  • t - conserva i timestamp
  • r - ricorrere attraverso le directory
  • u - aggiorna, salta tutti i file più recenti
  • [n] - no, non farlo, esegui invece una corsa a secco
  • c - checksum, provare checksum su blocchi di file quando possibile (*)
    nota: sui filesystem locali, questo viene sovrascritto e invece vengono copiati interi file.
  • v - verbose

Corro sempre quanto sopra per assicurarmi che funzioni, quindi rimuovo il flag 'n' che una volta sono soddisfatto dei risultati.

Le caratteristiche principali delle combinazioni precedenti:

  • Lo eseguo in ENTRAMBE le direzioni tra due (o più) server, sincronizzandomi in ENTRAMBE le direzioni. Si aggiorna qualunque sia il padrone in quel momento.
  • Permette sia di essere il maestro, con il significativo avvertimento che se si desidera eliminare qualcosa, è necessario eliminarlo su entrambi per essere sicuri che sia davvero sparito, altrimenti ritorna.

Lo uso per mantenere sincronizzate due macchine o per sincronizzare i sottodirectory (come il backup su un'unità USB).

Come ha affermato uno degli altri post in precedenza, il "checksum" potrebbe effettivamente essere disattivato se si ha a che fare con unità locali.

In alcuni rari casi, ho dovuto aggiungere parametri aggiuntivi per tenere conto delle modifiche negli account di accesso su macchine remote, cambiare le porte e persino specificare dove risiede 'rsync' sull'host remoto ... ma quelli non sono direttamente applicabili al tuo domanda.


3
Il flag -a per rsync non fa tutto quanto sopra?
Rory,

2
Non sono un grande fan dell'uso di flag "meta" quando non so con certezza cosa fanno. Il manapage di rsync indica che '-a' in realtà è -rlptgoD sulla mia casella, che salta 'u' e 'v' ma include 'D'. di questi, sembra che, per me, l'aggiunta di 'u' sia l'unica differenza chiave.
ericslaw,

Come posso forzare il mirroring dall'origine alla destinazione (eliminando qualsiasi cosa nella destinazione che non si trova nell'origine), piuttosto che copiarla in modo bidirezionale?
Gabriel Staples,

1
Sembra che avresti bisogno di usare rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. La --deletedice di eliminare qualsiasi cosa nella destinazione che non è nel codice, e --delete-excludeddice di eliminare anche file esclusi nella destinazione che sarebbe normalmente non essere rintracciato o copiati. Se si utilizza --delete-excluded, tecnicamente non è necessario utilizzare anche --delete, ma va bene usarli entrambi comunque. I dettagli sono nelle pagine man qui: linux.die.net/man/1/rsync .
Gabriel Staples,

Nota: per un uso generale di rsync ho scritto questo tutorial anche per me stesso, quindi posso fare riferimento come necessario: Come usare rsync
Gabriel Staples

4

Niente di tutto ciò è necessario, puoi usare rsync senza demoni o qualsiasi altro tipo di configurazione SOLO FINE!

Usa il comando rsync e sei a posto.


2

A giudicare dal percorso nel tuo comando rsync, avrei ragione nel pensare che stai usando Mac OS X?

Personalmente, opterei per l'utilizzo di Time Machine (se stai usando Leopard) o Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ) che utilizza rsync.

Molto più facile che cercare di correggere la tua sceneggiatura. Un vantaggio è che Time Machine e CCC offrono backup incrementali.


2

L'esempio che hai usato sembra che funzionerà bene per i backup.

Una cosa che potresti voler considerare quando usi rsync è usare l'opzione --link-dest. Ciò consente di mantenere più backup, ma di utilizzare collegamenti reali per qualsiasi file invariato, facendo in modo che tutti i backup occupino lo spazio di un valore incrementale. Un esempio di utilizzo sarebbe:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Ciò presuppone che si disponga di un backup datato per il 12 giugno e che si desideri crearne uno nuovo il 13 giugno. È possibile omettere l'opzione -v se non si desidera una stampa di ogni file.


1
rsnapshot è un sistema di backup che utilizza il collegamento dest come descritto per mantenere i backup della versione completa in modo efficiente nello spazio.
Rory,

1

Dipende molto dal fatto che tu stia eseguendo database o meno. Rsync acquisirà un'istantanea di ogni file e ignorerà eventuali scritture intervenute. Se si desidera eseguire il backup di un database, è necessario impostare un filtro ignore ed eseguire gli strumenti di dump del database prima di rsync.


1

Il tuo comando come scritto dovrebbe funzionare, tuttavia potresti voler guardare un programma chiamato rsnapshot che si basa su rsync e mantiene più versioni dei file in modo da poter tornare indietro e guardare le cose come erano la scorsa settimana o il mese scorso. La configurazione è piuttosto semplice ed è davvero brava nell'ottimizzazione dello spazio, quindi a meno che tu non abbia molta agitazione non occupa molto più spazio di un singolo backup.


1

Non hai menzionato il tuo sistema operativo. Partendo dal presupposto che il suo sistema operativo * nix, il tuo comando è buono.

Tuttavia, se una o entrambe le unità sono formattate NTFS, a cui si accede da * nix o anche da Windows utilizzando Mobaxterm / cygwin, la funzionalità incrementale rsync non funzionerebbe bene con rsync -a (archive flag)

Se le unità NTFS sono / sono coinvolte, è possibile utilizzare:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Scarica il client Mobaxterm ssh per avere la funzionalità rsync su Windows.

Ecco ulteriori informazioni sull'uso di rsync con unità NTFS


0

Ho provato ad usare rsync per il backup ma alla fine è stato un disastro. rsync è più adatto alla "sincronizzazione" piuttosto che al backup. E va per sempre confrontare file di grandi dimensioni.

Ho studiato un po 'e ne ho provati diversi (fondamentalmente testando tutti dal backup della ricerca di apt-cache in Ubuntu).

Finalmente sono finito con " backup2l - strumento di backup / ripristino a bassa manutenzione", è facile. Mi piace il modo in cui gestisce la pianificazione e la rotazione (in livelli). Lo eseguo ogni volta che ho il mio disco esterno USB collegato dalla riga di comando ma è anche possibile automatizzarlo.


0

Prova dirvish a fare il backup. http://www.dirvish.org/
Utilizza gli hardlink di rsync nei cosiddetti depositi. Puoi conservare il maggior numero di dump più vecchi del disco USB. O configurarlo in modo automatizzato.

Una volta che hai capito l'idea di dirottare, è più comodo usare di rsync con tutte le sue opzioni.


rsnapshot è simile a Dirvish
Rory,

0

Trovo una soluzione per computer basati su Windows: http://www.itefix.no/i2/node/10650

Per copiare la partizione D: \ su un'unità esterna K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

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.