Guida verificata con Ubuntu: 22.04 24.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Rsync è uno strumento leggero e versatile per il backup, installato di base su Ubuntu. Consente di eseguire backup incrementali (rileva e salva solo i file modificati o aggiunti rispetto all'ultima operazione di copia, evitando un backup completo), sia in locale che in remoto.
Prerequisiti
Tuttavia, prima di procedere con il backup, è consigliabile ed è necessario che:
La cartella di destinazione si trovi su un filesystem in grado di gestire i permessi di tipo Unix-like (evitare quindi i filesystem di sistemi NT, come NTFS e FAT).
Qualora invece sia assente in caso di installazioni minimali oppure ad esempio disinstallazione accidentale, installare i seguenti pacchetti: rsync, xinetd e ssh.
Per i backup locali, xinetd e ssh non sono indispensabili.
Grsync
Grsync è una semplice interfaccia grafica per rsync. Permette solo le operazioni più semplici con le opzioni base, ma per backup di cartelle locali con destinazione su dischi locali è sufficiente. Per maggiori informazioni, consultare la relativa guida.
Eseguire un backup
Backup in locale
Per eseguire un backup in locale, digitare in un terminale, il seguente comando:
sudo rsync -av /percorso/cartelladiorigine /percorso/cartelladidestinazione
Sostituire /percorso/cartelladiorigine con il percorso della cartella contenente i dati da sottoporre a backup e /percorso/cartelladidestinazione con il percorso della cartella di destinazione del backup stesso.
Le opzioni utilizzate in questo caso sono:
Sintassi opzioni |
|
Opzione |
Risultato |
-a |
copia ricorsivamente e conserva i permessi e le date dei file. |
-v |
abilita la modalità verbose (mostrando le operazioni in corso ed eventuali errori). |
Backup incrementale
Per un backup incrementale completo, che cancelli nella cartella di destinazione i file non più presenti nella cartella di origine:
Aggiungere l'opzione --delete:
sudo rsync --delete -av /percorso/cartelladiorigine /percorso/cartelladidestinazione
È anche possibile escludere dal backup alcuni dati usando l'opzione --exclude.
Ad esempio, per escludere i file e le cartelle nascoste:sudo rsync --exclude=".*" --delete -av /percorso/cartelladiorigine /percorso/cartelladidestinazione
Per ulteriori opzioni, consultare il manuale digitando il comando man rsync
Backup in rete
Per backup in rete su cartelle condivise con Samba, si può montare la risorsa remota e trattarla come una destinazione locale. È consigliabile utilizzare questo metodo solo su reti private per motivi di sicurezza.
Per eseguire un backup in rete, è possibile utilizzare rsync tramite SSH. Questo garantisce un trasferimento sicuro dei dati. Digitare in un terminale il seguente comando:
sudo rsync --delete -azv -e ssh /percorso/cartella1 utenteremoto@hostremoto:/percorso/cartella2
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 (ad esempio, nomeutente@indirizzo_IP_o_hostname).
In questo caso, le opzioni utilizzate, oltre a quelle precedentemente descritte, sono:
Sintassi opzioni |
|
Opzione |
Risultato |
-z |
comprime i dati durante il trasferimento, utile per connessioni più lente. |
-e ssh |
specifica la shell remota da utilizzare, in questo caso ssh, che garantisce un canale crittografato. |
Autenticazione SSH
Per l'autenticazione remota tramite SSH, sono disponibili due metodi principali:
Password: Se non è configurata l'autenticazione tramite chiave SSH, verrà richiesta la password dell'utente remoto al momento dell'esecuzione del comando rsync.
Chiavi SSH: Per una maggiore sicurezza e per automatizzare i backup (senza dover inserire la password ogni volta), è fortemente consigliato configurare l'autenticazione tramite chiavi SSH.
Generare una coppia di chiavi SSH sul computer locale (se non già presenti) con ssh-keygen.
Copiare la chiave pubblica sul server remoto utilizzando ssh-copy-id utenteremoto@hostremoto.
Assicurarsi che i permessi delle chiavi siano corretti (chmod 600 ~/.ssh/id_rsa per la chiave privata e chmod 644 ~/.ssh/id_rsa.pub per la chiave pubblica).
Alternative a SSH
Rsync Daemon
In alternativa a ssh, è possibile utilizzare Rsync Daemon per effettuare i backup in rete. Il vantaggio di utilizzare Rsync Daemon è la possibilità di effettuare un backup di un intero sistema senza utilizzare l'utente root, mantenendo una maggiore sicurezza.
Per utilizzare Rsync Daemon, procedere come segue:
Abilitare xinetd da parte di rsync
Aprire con un editor di testo e con i 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 di testo.
Avviare rsync tramite xinetd
Creare con un editor di testo e con i privilegi di amministrazione il file /etc/xinetd.d/rsync e inserire 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
}Infine riavviare xinetd per applicare le modifiche digitando in una finestra di terminale il seguente comando:
sudo systemctl restart xinetd
Modalità daemon
Per configurare rsync per la modalità daemon:
Creare con un editor di testo e con i 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.
Riavviare il servizio xinetd per applicare le modifiche digitando in un terminale il seguente comando:
sudo systemctl restart xinetd
Impostare password
Per impostare la password, creare con un editor di testo e con i privilegi di amministrazione il file /etc/rsyncd.secrets e scrivere quanto segue:
utente:password
sostituire utente col nome utente utilizzato in precedenza e password con la password utilizzata per il login in macchina remota.
Assegnare i permessi
Per assegnare i giusti permessi al file precedentemente creato:
Aprire il file /etc/rsyncd.secrets con un terminale digitando il seguente comando:
sudo chmod 600 /etc/rsyncd.secrets
Infine riavviare xinetd per applicare le modifiche digitando in una finestra di terminale il seguente comando:
sudo systemctl restart xinetd
Controllare l'esito del backup
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