Introduzione
Rsync è un leggero e versatile strumento per il backup. Può eseguire backup locali o in remoti ed è molto efficiente data la caratteristica di effettuare dei salvataggi incrementali (salvare esclusivamente i file che hanno subito modifiche rispetto all'ultima operazione di copia).
Prima di cominciare
Rsync è installato di base su Ubuntu, tuttavia è preferibile controllare che i pacchetti: [apt://rsync rsync], [apt://xinetd xinetd] e [apt://ssh ssh] siano [:AmministrazioneSistema/InstallareProgrammi:installati] prima di procedere col backup.
E' necessario che la cartella di destinazione si trovi su un filesystem in grado di gestire i [:AmministrazioneSistema/PermessiFile:permessi] di tipo Unix-like (evitare quindi i filesystem dei sistemi NT, quali NTFS e FAT).
Eseguire un backup
Backup in locale
Per eseguire un backup in locale è sufficiente digitare il seguente comando in una finestra di terminale:
sudo rsync -azvv /percorso/cartella1 /percorso/cartella2
prestando attenzione a sostituire «/percorso/cartella1» con il percorso della cartella di origine e «/percorso/cartella2» con il percorso della cartella di destinazione.
Le opzioni utilizzate in questo caso sono:
-a: copia ricorsivamente e conserva i permessi e le date dei file.
-z: comprime i dati.
-vv: abilita la modalità verbose (mostrando le operazioni in corso ed eventuali errori).
È possibile eseguire un backup in rete come se fosse un backup in locale semplicemente utilizzando [:Server/Samba:Samba] e montando la cartella condivisa nel computer da cui si sta operando. È comunque consigliabile per la propria sicurezza utilizzare questo metodo solo per computer connessi in reti private e non in internet.
È possibile fare in modo che rsync cancelli nella cartella di destinazione i file non più presenti nella cartella di origine aggiungendo l'opzione --delete ottenendo quindi un backup incrementale completo:
sudo rsync --delete -azvv /percorso/cartella1 /percorso/cartella2
È anche possibile escludere dal backup alcuni file grazie all'opzione --exclude, ad esempio i file nascosti:
sudo rsync --exclude=".*/" --delete -azvv /percorso/cartella1 /percorso/cartella2
Per ulteriori opzioni è possibile consultare il manuale di rsync:
man rsync
Backup in rete
Per eseguire un backup in rete è sufficiente digitare questo comando in una finestra di terminale:
sudo rsync --delete -azvv -e ssh /percorso/cartella1 utenteremoto@hostremoto:/percorso/cartella2
sempre prestando attenzione a sostituire «/percorso/cartella1» con il percorso della cartella di origine, «/percorso/cartella2» con il percorso della cartella di destinazione e «utenteremoto@hostremoto» con l'indirizzo dell'utente remoto.
In questo caso l'opzione utilizzata, oltre a quelle precedentemente descritte comuni al backup in locale, è:
-e: specifica la shell remota da utilizzare, in questo caso ssh.
Rsync Daemon
In alternativa a ssh è possibile utilizzare Rsync Daemon per effettuare i backup in rete. Il vantaggio di utilizzare Rsync Daemon è quello di poter effettuare un backup di un intero sistema senza abilitare il login di root e quindi mantenere una maggiore sicurezza.
Per utilizzare Rsync Daemon procedere come segue:
[:AmministrazioneSistema/InstallareProgrammi:Installare] il pacchetto [apt://xinetd xinetd].
Per abilitare l'utilizzo di xinetd da parte di rsync aprire con un [:Ufficio/EditorDiTesto:editor di testo] e con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] il file /etc/default/rsync. Cercare la seguente riga:
RSYNC_ENABLE=false
e modificarla come segue:
RSYNC_ENABLE=inetd
salvare e chiudere l'editor.Per avviare rsync tramite xinetd creare con un [:Ufficio/EditorDiTesto:editor di testo] e con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] il file /etc/xinetd.d/rsync e incollare il seguente contenuto:
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
Per configurare rsync per la modalità daemon creare con un [:Ufficio/EditorDiTesto:editor di testo] e con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] il file /etc/rsyncd.conf e incollare il seguente contenuto:
max connections = 2 log file = /var/log/rsync.log timeout = 300 [share] comment = Public Share path = /home/share read only = no list = yes uid = nobody gid = nogroup auth users = utente secrets file = /etc/rsyncd.secrets
prestando attenzione a sostituire la parola «utente» col nome dell'utente da autorizzare all'utilizzo di rsync.
Per impostare la password creare con un [:Ufficio/EditorDiTesto:editor di testo] e con i [:AmministrazioneSistema/Sudo:privilegi di amministrazione] il file /etc/rsyncd.secrets e scrivere quanto segue:
utente:password
prestando attenzione a sostituire «utente» col nome utente utilizzato in precedenza e «password» con la password utilizzata per il login in macchina remota.Per assegnare i giusti permessi al file precedentemente creato aprire un terminale e digitare il seguente comando:
sudo chmod 600 /etc/rsyncd.secrets
Infine riavviare xinetd per applicare le modifiche digitano:
sudo /etc/init.d/xinetd restart
Per controllare il buon esito delle operazioni è possibile digitare il seguente comando:
sudo rsync utente@host::share
sostituendo «utente» con il nome utente in uso e «host» con il nome host in uso.Il risultato del precedente comando dovrebbe essere simile a questo:
drwxr-xr-x 4096 2006/12/13 09:41:59 . drwxr-xr-x 4096 2006/11/23 18:00:03 folders
Ulteriori risorse
[https://help.ubuntu.com/community/rsync Documento originale]
[http://samba.anu.edu.au/rsync/ Sito ufficiale]
[http://everythinglinux.org/rsync/ Guida su everythinglinux in inglese]
[http://samba.anu.edu.au/ftp/rsync/rsync.html man di rsync]