GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare un backup con rsync su Ubuntu 18.04

Rsync (sincronizzazione remota) è uno strumento per copiare e sincronizzare file e cartelle sullo stesso server o tra macchine diverse su Linux.

Ciò che distingue Rsync dal classico “copia e incolla” è che questo strumento riconosce automaticamente quali documenti differiscono tra due cartelle, così da velocizzare il processo di copia da una cartella di origine a una destinazione.

In questo articolo imparerai come installare, configurare e utilizzare Rsync su Linux Ubuntu 18.04 per sincronizzare file e cartelle e pianificare un backup periodico del tuo server.

Installazione

I pacchetti rsync sono già presenti nel repository ufficiale di Ubuntu. Per installarlo digita:

$ sudo apt install rsync

Sintassi

$ rsync options /path/source/ /path/destination/

Le opzioni disponibili sono:

  • -v:i file e le cartelle copiati verranno mostrati sulla shell

  • -r:per copiare le cartelle e il loro contenuto

  • -h:invece di mostrare la dimensione dei file copiati in byte, verrà mostrato un formato facilmente leggibile (anziché 14.167.396 byte , si vedranno 14.17 Mb)

  • -z:per comprimere i dati trasferiti

  • -a:mostra le informazioni originali del file, come timestamp, permessi, proprietario ecc.

  • -u:durante la copia,

  • --delete:rsync cancellerà i file nella cartella di destinazione che non sono presenti nella cartella di origine.

  • --exclude:alcuni file o cartelle verranno ignorati durante la copia.

  • --progress:mostra la percentuale del processo di copiatura e il tempo rimanente.

  • --existing:verranno copiati solo i file già esistenti nella cartella di destinazione.

Sincronizzazione di due cartelle sullo stesso computer

La copia da una cartella all'altra viene eseguita con il comando "rsync" seguito dalla cartella di origine (da cui vengono copiati gli elementi) e dalla cartella di destinazione. Indipendentemente dal fatto che la cartella da copiare contenga cartelle al suo interno, è preferibile aggiungere il tag al tag "-r":

 $ rsync -r path/source path/destination

L'intera cartella "sorgente" viene copiata nella cartella "destinazione".

 $ rsync -r ~/source/ ~/destination

Il contenuto della cartella "sorgente" viene copiato nella cartella "destinazione".

Attenzione alla differenza tra i due comandi:scrivendo "/" dopo la cartella sorgente viene detto al sistema di copiare i file contenuti nella cartella.

Non inserire “/” implica la selezione dell'intera cartella e, di conseguenza, la creazione di una copia della cartella sorgente nella cartella di destinazione.

Copiare file di un unico formato

Rsync permette anche di copiare solo alcuni tipi di file, specificandone il formato o il nome.

Supponendo che i file siano in formato "txt", tutti i file in questo formato possono essere copiati digitando:

$ rsync path/source_folder/*.txt path/destination_folder

Con "* .txt" hai espressamente richiesto una copia di "tutti i file .pdf".

Copia file su protocollo SSH tra due macchine

Puoi anche usare il protocollo SSH per copiare file e cartelle dal tuo computer a un altro. L'utilizzo di questo protocollo garantisce che, durante il trasferimento, tutti i file siano crittografati e che, quindi, nessuno potrà leggerli.

Il comando richiede l'opzione "-e ssh" seguita dall'origine e dalla destinazione della copia.

$ rsync -r ssh path/source/ [email protected]_machine:/path/destination/

Sarà richiesta la password dell'utente che accede alla macchina di destinazione.

Copiare i file in base alle dimensioni

Rsync filtra i file da copiare anche in base alla dimensione che occupano sul disco.

$ rsync --max-size=15k path/source_folder/*.* path/destination_folder/*.*

Verranno copiati solo i file di dimensioni inferiori a 15Kb.

I file più grandi verranno ignorati.

$ rsync --min-size=20k ~/source_folder/*.* ~/destination_folder/*.*

Verranno copiati solo i file più grandi di 20Kb.
I file più piccoli verranno ignorati.

Esclusione dei file dalla copia in base all'estensione

Se non vuoi copiare alcuni tipi di file, puoi utilizzare il tag "--exclude" per escludere alcuni file dalla copia in base all'estensione.

Nell'esempio seguente, i file in formato .PDF non verranno copiati dalla cartella "origine" alla cartella "destinazione".

$ rsync -r --exclude="*.pdf" path/source_folder/ path/destination_folder

Rimozione del contenuto dalla cartella di origine dopo il trasferimento

Allo stesso modo il concetto di "taglia e incolla", con i file rsync può essere spostato da una cartella di origine a una cartella di destinazione. In questo caso, i file vengono copiati nella cartella di destinazione e quindi rimossi dalla cartella di origine.

$ rsync -r --remove-source-files path/source_folder path/destination_folder

Impostazione limite velocità di trasferimento

In caso di copia attraverso la rete, potrebbe essere necessario impostare un limite di velocità di caricamento per i file. In questo caso, usa il tag "--bwlimit =KBPS", sostituendo "KBPS" con la velocità di trasferimento desiderata.

$ rsync --bwlimit=KBPS -r ssh source_path/folder [email protected]_receiver:/destination_path

Sostituisci "KBPS" con il valore della velocità di trasferimento massima espressa in KB/s (2048 KB/s =2MB/s)

Copie periodiche e automatizzate

Nel caso in cui utilizzi rsync per fare un backup ma non vuoi digitare i comandi ogni volta, c'è uno strumento perfetto per te:Cron.

Già presente in Ubuntu 18.04, questo servizio permette di impostare delle "regole" per la ripetizione periodica di alcuni comandi.

Per iniziare a creare le tue regole e quindi iniziare a impostare il processo di copia automatica, digita:

$ crontab -e

Si aprirà un editor di testo dove indicare quale comando ripetere regolarmente. Una volta impostate le regole, salvalo e chiudilo.

Come configurare un crontab

La scrittura del crontab deve seguire una sintassi precisa, specificando 6 parametri ordinati:

 m h dom mon dow command
  • m:minuti (0-59)

  • h:ore (0-23)

  • dom:giorno del mese (1-31)

  • lun:mese (1-12)

  • dow:giorno della settimana (0:domenica - 6:sabato)

  • comando:comando da eseguire

    Esempi di possibili configurazioni:

     30 * * * * rsync path/source/*.pdf path/destination

    (ogni mese, ogni giorno e ogni ora a 30 minuti, tutti i file ".pdf" nella cartella "sorgente" verranno copiati nella cartella "destinazione")

    */2 * * * * rsync percorso/sorgente/*.pdf percorso/destinazione (tutti i file .pdf presenti nella cartella "sorgente" nella cartella "destinazione" vengono copiati tutti i giorni del mese, ogni 2 minuti)

    50 8 * * 1,3 rsync path/source/*.pdf path/destination (il comando per copiare i file .pdf nella cartella "source" nella "destination" cartella viene eseguita dal lunedì al mercoledì alle 8:50)

    Una volta salvato e chiuso l'editor, per vedere l'elenco dei crontab digita:

    $ crontab -l

    Linux
    1. Come eliminare tutti i file con un'estensione particolare in una cartella particolare?

    2. Come silenziare selettivamente Rsync?

    3. Come eseguire il backup del telefono Ubuntu?

    4. Come trasferire file in Linux con SCP e Rsync

    5. Come posso copiare la cartella con i file in un'altra cartella in Unix/Linux?

    Come eseguire il backup dei file con Déjà Dup e Duplicity su Ubuntu 18.04 LTS

    Come configurare il backup di Dropbox con Plesk?

    Come configurare il firewall con UFW su Ubuntu Linux

    Come installare 7Zip su Ubuntu 18.04

    Come impostare e configurare una VPN con OpenVPN su Ubuntu 18.04

    Come configurare un server di posta SMTP con Postfix su Ubuntu 18.04