27Jun

Come utilizzare rsync per eseguire il backup dei dati su Linux

bandiera

rsync è un protocollo costruito per sistemi di tipo Unix che offre una versatilità incredibile per il backup e la sincronizzazione dei dati. Può essere utilizzato localmente per eseguire il backup di file in directory diverse o può essere configurato per la sincronizzazione su Internet con altri host.

Può essere usato su sistemi Windows, ma è disponibile solo attraverso varie porte( come Cygwin), quindi in questo how-to si parlerà di come configurarlo su Linux. Per prima cosa, dobbiamo installare / aggiornare il client rsync. Nelle distribuzioni Red Hat, il comando è "yum install rsync" e su Debian è "sudo apt-get install rsync."

rsync1
Il comando su Red Hat / CentOS, dopo aver effettuato il login come root( notare che alcune recenti distribuzioni di Red Hatsupporta il metodo sudo).

rsync4
Il comando su Debian / Ubuntu.

Utilizzo di rsync per i backup locali

Nella prima parte di questo tutorial, eseguiremo il backup dei file da Directory1 a Directory2.Entrambe queste directory si trovano sullo stesso disco rigido, ma funzionerebbe esattamente allo stesso modo se le directory fossero presenti su due dischi diversi. Ci sono diversi modi in cui possiamo avvicinarci a questo, a seconda del tipo di backup che si desidera configurare. Per la maggior parte degli scopi, sarà sufficiente la seguente riga di codice:

$ rsync -av --delete /Directory1/ /Directory2/

Il codice sopra sincronizzerà il contenuto di Directory1 in Directory2 e non lascerà alcuna differenza tra i due. Se rsync rileva che Directory2 ha un file che Directory1 non ha, lo eliminerà.Se rsync trova un file che è stato modificato, creato o eliminato in Directory1, rifletterà le stesse modifiche a Directory2.

Esistono molte opzioni diverse che è possibile utilizzare per rsync per personalizzarlo in base alle proprie esigenze specifiche. Ecco cosa il codice di cui sopra dice a rsync di fare con i backup:

1. -a = ricorsivo( recurse in directory), links( copia symlink come symlinks), permanenti( preserva permessi), times( preservare i tempi di modifica), group( preserve group), proprietario( preserva proprietario), conserva i file del dispositivo e conserva i file speciali.
2. -v = dettagliato. Il motivo per cui ritengo importante è verbose in modo da poter vedere esattamente cosa rsync sta facendo il backup. Pensa a questo: cosa succede se il tuo disco rigido sta andando male e inizia a eliminare i file a tua insaputa, quindi esegui lo script rsync e apporta tali modifiche ai tuoi backup, eliminando così tutte le istanze di un file che non volevi ottenereliberarsi di?
3. -delete = Questo indica a rsync di cancellare tutti i file presenti in Directory2 che non si trovano in Directory1.Se scegli di utilizzare questa opzione, ti consiglio di utilizzare anche le opzioni dettagliate, per le ragioni sopra menzionate.

Utilizzando lo script sopra riportato, ecco l'output generato utilizzando rsync per eseguire il backup di Directory1 in Directory2.Si noti che senza l'interruttore dettagliato, non si riceveranno tali informazioni dettagliate.

rsync2

Lo screenshot qui sopra ci dice che File1.txt e File2.jpg sono stati rilevati come nuovi o comunque modificati dalle copie esistenti in Directory2, e quindi sono stati sottoposti a backup. Suggerimento Noob: noti le barre finali alla fine delle directory nel mio comando rsync - quelle sono necessarie, assicurati di ricordarle.

Andremo su alcuni switch più utili verso la fine di questo tutorial, ma ricorda che per vedere un elenco completo puoi digitare "man rsync" e visualizzare un elenco completo di switch da utilizzare.

Questo riguarda lo copre per quanto riguarda i backup locali. Come puoi vedere, rsync è molto facile da usare. Diventa leggermente più complesso quando lo si utilizza per sincronizzare i dati con un host esterno su Internet, ma ti mostreremo un modo semplice, veloce e sicuro per farlo.

Utilizzo di rsync per backup esterni

rsync può essere configurato in diversi modi per i backup esterni, ma andremo oltre il più pratico( anche il più semplice e sicuro) metodo di tunneling rsync tramite SSH.La maggior parte dei server e persino molti client dispongono già di SSH e possono essere utilizzati per i backup rsync. Ti mostreremo il processo per far sì che una macchina Linux esegua il backup su un'altra rete locale. Il processo sarebbe esattamente lo stesso se un host fosse su Internet da qualche parte, basta notare che la porta 22( o qualsiasi altra porta su cui è configurato SSH), dovrebbe essere inoltrata su qualsiasi apparecchiatura di rete sul lato del server.

Sul server( il computer che riceverà i backup), assicurarsi che SSH e rsync siano installati.

# yum -y installa ssh rsync

# sudo apt-get install ssh rsync

Oltre all'installazione di SSH e rsync sul server, tutto ciò che deve essere fatto è di impostare i repository sul server in cui desideri che i file siano supportatisu, e assicurarsi che SSH sia bloccato. Assicurati che l'utente che hai intenzione di utilizzare abbia una password complessa, e potrebbe anche essere una buona idea cambiare la porta su cui SSH è in ascolto( il valore predefinito è 22).

Eseguiremo lo stesso comando che abbiamo fatto per utilizzare rsync su un computer locale, ma includiamo le aggiunte necessarie per il tunneling rsync tramite SSH a un server sulla mia rete locale. Per l'utente "geek" che si connette a "192.168.235.137" e usando gli stessi switch come sopra( -av -delete), eseguiremo quanto segue:

$ rsync -av -delete -e ssh /Directory1/ [email protected]: /Directory2/

Ifse SSH è in ascolto su una porta diversa da 22, è necessario specificare il numero di porta, ad esempio in questo esempio in cui utilizzo la porta 12345:

$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/

rsync3

Come si può vedere dallo screenshot qui sopra, l'output dato durante il backup sulla rete è praticamente lo stesso di quando si esegue il backup localmente, l'unica cosa che cambia è il comando che si usa. Si noti inoltre che è stata richiesta una password. Questo è per autenticarsi con SSH.È possibile impostare le chiavi RSA per saltare questo processo, che semplificherà anche l'automazione di rsync.

Automazione di backup rsync

Cron può essere utilizzato su Linux per automatizzare l'esecuzione di comandi, come rsync. Usando Cron, possiamo fare in modo che il nostro sistema Linux esegua backup notturni o comunque desideri che vengano eseguiti.

Per modificare il file della tabella cron per l'utente con cui si è effettuato l'accesso, eseguire:

$ crontab -e

Per modificare questo file è necessario avere familiarità con vi. Digitare "I" per l'inserimento, quindi iniziare a modificare il file della tabella cron.

Cron utilizza la seguente sintassi: minuto dell'ora, ora del giorno, giorno del mese, mese dell'anno, giorno della settimana, comando.

All'inizio può essere un po 'confuso, quindi lasciatemi fare un esempio. Il seguente comando eseguirà il comando rsync ogni notte alle 22:

0 22 * ​​* * rsync -av --delete /Directory1/ /Directory2/

Il primo "0" specifica il minuto dell'ora e "22" specifica le 10 PM.Dato che vogliamo eseguire questo comando ogni giorno, lasceremo il resto dei campi con asterischi e quindi incolleremo il comando rsync.

Dopo aver finito di configurare Cron, premere escape, quindi digitare ": wq"( senza virgolette) e premere invio. Questo salverà le tue modifiche in vi.

Cron può essere molto più approfondito di questo, ma andare avanti sarebbe oltre lo scopo di questo tutorial. La maggior parte delle persone vorranno semplicemente un semplice backup settimanale o giornaliero, e ciò che abbiamo dimostrato si può ottenere facilmente. Per maggiori informazioni su Cron, consultare le pagine man.

Altre funzioni utili

Un'altra cosa utile che puoi fare è mettere i tuoi backup in un file zip. Sarà necessario specificare dove si desidera inserire il file zip, quindi rsync quella directory nella directory di backup. Ad esempio:

$ zip /ZippedFiles/ archive.zip /Directory1/ & &rsync -av --delete /ZippedFiles/ /Directory2/

rsync5

Il comando precedente prende i file da Directory1, li inserisce in /ZippedFiles/ archive.zip e quindi rsync quella directory a Directory2.Inizialmente, si potrebbe pensare che questo metodo si rivelerebbe inefficiente per i backup di grandi dimensioni, considerando che il file zip cambierà ogni volta che viene apportata la minima modifica a un file. Tuttavia, rsync trasferisce solo i dati modificati, quindi se il tuo file zip è 10 GB e aggiungi un file di testo a Directory1, rsync saprà che è tutto ciò che hai aggiunto( anche se è in un file zip) e trasferisci solo i pochi kilobytedi dati modificati.

Esistono diversi modi per crittografare i backup rsync. Il metodo più semplice consiste nell'installare la crittografia sul disco rigido stesso( quello su cui viene eseguito il backup dei file).Un altro modo è quello di crittografare i tuoi file prima di inviarli a un server remoto( o altro disco rigido, qualsiasi cosa tu stia facendo il backup).Tratteremo questi metodi negli articoli successivi.

Indipendentemente dalle opzioni e caratteristiche che scegli, rsync risulta essere uno degli strumenti di backup più efficienti e versatili fino ad oggi, e persino un semplice script rsync può salvarti dalla perdita dei tuoi dati.