Homepage » come » Come utilizzare rsync per eseguire il backup dei dati su Linux

    Come utilizzare rsync per eseguire il backup dei dati su Linux

    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 utilizzato 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."


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


    Il comando su Debian / Ubuntu.

    Utilizzo di rsync per 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, la seguente riga di codice sarà sufficiente:

    $ 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 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 symlink), permanenti (preserva permessi), times (preservare i tempi di modifica), group (preserve group), owner (preserva proprietario), preservare i file del dispositivo, e preservare 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 invia tali modifiche ai tuoi backup, eliminando così tutte le istanze di un file che non volevi ottenere sbarazzarsi 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.

    Usando lo script sopra, ecco l'output generato usando rsync per fare il backup di Directory1 in Directory2. Notare che senza l'interruttore dettagliato non si riceveranno informazioni così dettagliate.

    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.

    Passeremo ad alcuni switch più utili verso la fine di questo tutorial, ma ricordati che per visualizzare 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 usa 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 eseguire il backup di una macchina Linux su un'altra su una 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 delle cose.

    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, è sufficiente configurare i repository sul server in cui si desidera eseguire il backup dei file e assicurarsi che SSH sia bloccato. Assicurati che l'utente che intendi 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 usare rsync su un computer locale, ma includiamo le aggiunte necessarie per il tunneling rsync tramite SSH verso 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) faremo quanto segue:

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

    Se si sta ascoltando SSH su una porta diversa da 22, è necessario specificare il numero di porta, come in questo esempio in cui utilizzo la porta 12345:

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

    Come puoi vedere dallo screenshot qui sopra, l'output dato durante il backup sulla rete è praticamente lo stesso di quando esegui il backup localmente, l'unica cosa che cambia è il comando che usi. 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 hai effettuato l'accesso, esegui:

    $ crontab -e

    Avrai bisogno di familiarizzare con vi per modificare questo file. Digitare "I" per l'inserimento e 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 terminato la configurazione di Cron, premi Esc, quindi digita ": wq" (senza virgolette) e premi 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 caratteristiche 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 e quindi rsync quella directory nella directory di backup. Per esempio:

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

    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 kilobyte di dati modificati.

    Esistono due modi diversi 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, qualunque cosa tu stia facendo il backup). Tratteremo questi metodi negli articoli successivi.

    Qualunque siano le opzioni e le caratteristiche che scegli, rsync risulta essere uno degli strumenti di backup più efficienti e versatili fino ad oggi, e anche un semplice script rsync può farti risparmiare la perdita dei dati.