Backup automatico con rsync via ssh: differenze tra le versioni
(Creazione della guida per effettuare un backup automatico via ssh con rsync) |
Nessun oggetto della modifica |
||
(10 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Stub}} | ||
{{Versioni compatibili|Bullseye}} | |||
==Introduzione== | ==Introduzione== | ||
rsync è uno strumento affidabile che permette la sincronizzazione del contenuto di due cartelle, quindi perfetto per fare il backup di un server o dei dati personali del vostro PC | [[rsync]] è uno strumento affidabile che permette la sincronizzazione del contenuto di due cartelle, quindi perfetto per fare il backup di un server o dei dati personali del vostro PC. Si rimanda alla guida specifica di [[rsync]] presente su questo sito per il dettaglio delle opzioni del comando rsync. In questa guida verrà trattato un esempio pratico per realizzare il backup automatico di una cartella da un PC client verso un server dando uno sguardo rapido alle principali opzioni di rsync. | ||
Per procedere con questa guida è necessario che sia installato sia sul client che sul server rsync. Inoltre sul client deve essere presente openssh-client e sul server deve essere presente openssh-server. Per maggiori informazioni su come procedere all'installazione e alla configurazione vedere la guida [[OpenSSH]]. | |||
==Predisporre la connessone fra client e server== | ==Predisporre la connessone fra client e server== | ||
=== Testare la connessione via ssh === | === Testare la connessione via ssh === | ||
Questa prima verifica naturalmente è facoltativa, tuttavia controllare la corretta connessione fra client e server può essere utile per escludere che fra i due | Questa prima verifica naturalmente è facoltativa, tuttavia controllare la corretta connessione fra client e server può essere utile per escludere che fra i due PC non ci siano di mezzo firewall o altri sistemi di protezione che in caso contrario sarà necessario configurare. | ||
ssh | $ ssh remoteuser@remotehost | ||
Se è la prima volta che instauri una comunicazione ssh fra gli utenti specifici sul client e sul server, verrà richiesta conferma di uno scambio di chiavi per permettere di cifrare la comunicazione, successivamente verrà richiesta la password dell'utente presente sul server. Se questa prova andrà a buon fine avrai accesso al terminale del server. Se fallisce dovresti verificare che l'indirizzo del server sia corretto e che non ci siano meccanismi di difesa che bloccano la comunicazione, nel qual caso è necessari procedere alla loro configurazione. | Se è la prima volta che instauri una comunicazione [[ssh]] fra gli utenti specifici sul client e sul server, verrà richiesta conferma di uno scambio di chiavi per permettere di cifrare la comunicazione, successivamente verrà richiesta la password dell'utente presente sul server. Se questa prova andrà a buon fine avrai accesso al terminale del server. Se fallisce dovresti verificare che l'indirizzo del server sia corretto e che non ci siano meccanismi di difesa che bloccano la comunicazione, nel qual caso è necessari procedere alla loro configurazione. | ||
=== Generare le chiavi sul client per accedere al server senza password === | === Generare le chiavi sul client per accedere al server senza password === | ||
Vediamo ora come fare in modo che, effettuando una connessione ssh dal client al "remotehost" utilizzando l’utente "remoteuser", non non venga richiesta la password. | |||
Per prima cosa generiamo una coppia di chiavi di autenticazione sulla macchina locale con il comando seguente. | |||
$ ssh-keygen -t rsa | |||
Durante la generazione delle chiavi verrà richiesta una password: lasciare vuoto per accedere senza password ma solo in virtù dello scambio di chiavi. | |||
Oppure possiamo creare una chiave a [https://it.wikipedia.org/wiki/Crittografia_ellittica crittografia ellittica]: | |||
$ ssh-keygen -t ecdsa | |||
Con questo comando, nella directory /home/mio_utente/.ssh sono state create due chiavi: una pubblica id_rsa.pub e una privata id_rsa (o id_ecdsa e id_ecdsa.pub nel caso si utilizzi ecdsa). E’ importante verificare che la chiave privata sia accessibile solo per il proprietario: | |||
<pre>$ ls -la /home/mio_utente/.ssh | |||
-rw------- 1 root root 1675 Jan 7 15:54 id_rsa | |||
-rw-r--r-- 1 root root 395 Jan 7 15:54 id_rsa.pub</pre> | |||
A questo punto occorre aggiungere la chiave pubblica al "remotehost" per l’utente "remoteuser". | |||
<pre>$ cat ~/.ssh/id_rsa.pub | ssh remoteuser@remotehost 'cat >> .ssh/authorized_keys'</pre> | |||
Se sul server remoto non esiste la cartella .ssh allora dobbiamo crearla manualmente e riprovare a lanciare il comando sopra. Se tutto va bene la connessione fra il computer locale e il "remotehost" avverrà, per l’utente "remoteuser", senza la richiesta della password. | |||
=== Testare la connessione senza richiesta di password === | |||
Effettuando nuovamente la connessione provata all'inizio di questa guida la connessione al remotehost dovrebbe avvenire senza digitare la password. | |||
$ ssh remoteuser@remotehost | |||
== Impostare il backup con rsync via ssh == | |||
Il backup di una cartella del client su una cartella del remotehost può essere impostato con il seguente comando. | |||
$ rsync -av -e ssh /this/dir/ remoteuser@remotehost:/remote/dir | |||
Il backup avverrà in modo incrementale ma conservativo, ovvero la cancellazione di un file sul client non causerà la cancellazione del file sul server. La sincronizzazione non conservativa può essere realizzata con l'opzione --delete tuttavia questa opzione deve essere usata con estrema cautela poiché può determinare la cancellazione dei file sul server. | |||
== Altre opzioni interessanti di rsync == | |||
=== Escludere una cartella dal backup === | |||
Con l'opzione --exclude è possibile escludere una cartella dal nostro backup. Nell'esempio viene esclusa la cartella nascosta .Trashes. | |||
<pre> | |||
rsync -va --delete --exclude .Trashes/ /media/cartella_1/ /media/cartella_2/ | |||
</pre> | |||
Se vogliamo aggiungere più esclusioni basta ripetere l'opzione: --exclude .Trash1/ --exclude .Trash2/ --exclude .Trash3/ | |||
Oppure ancora più "elegante" è la possibilità di definire in un file tutte le esclusioni: creiamo ad esempio un file chiamato '''exclude.txt''' e all'interno metteremo quello che vogliamo escludere dal backup: | |||
<pre> | |||
.Trash1/ | |||
.Trash2/ | |||
.Trash3/*.zip | |||
</pre> | |||
si può usare il carattere "*" per definire più file (in questo caso esclude dalla cartella .Trash3/ solo i file .zip. | |||
Infine basta aggiungere alla nostra riga di rsync l'opzione: | |||
<pre> | |||
--exclude-from 'exclude.txt' | |||
</pre> | |||
== Automatizziamo il backup == | |||
Non resta che ''schedulare'' il nostro backup con cron. La configurazione è semplicissima. Basta editare il file /etc/cronttab | |||
<pre>00 13 * * * mio_utente rsync -av -e ssh /this/dir/ remoteuser@remotehost:/remote/dir</pre> | |||
In questo caso il backup sarà eseguito in automatico ogni giorno alle 13 dall’utente "mio_utente". I dati della directory /this/dir/ saranno salvati nella cartella /remote/dir del server "remotehost". | |||
{{Autori | |||
|Autore=[[Utente:Max-B|Max-B]] 10:46, 9 mar 2022 (CEST) | |||
|Numero_revisori=0 | |||
}} | |||
[[Categoria:Backup&restore]] | [[Categoria:Backup&restore]] |
Versione attuale delle 13:27, 20 mar 2022
Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.
Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template. |
Versioni Compatibili Debian 11 "bullseye" |
Introduzione
rsync è uno strumento affidabile che permette la sincronizzazione del contenuto di due cartelle, quindi perfetto per fare il backup di un server o dei dati personali del vostro PC. Si rimanda alla guida specifica di rsync presente su questo sito per il dettaglio delle opzioni del comando rsync. In questa guida verrà trattato un esempio pratico per realizzare il backup automatico di una cartella da un PC client verso un server dando uno sguardo rapido alle principali opzioni di rsync.
Per procedere con questa guida è necessario che sia installato sia sul client che sul server rsync. Inoltre sul client deve essere presente openssh-client e sul server deve essere presente openssh-server. Per maggiori informazioni su come procedere all'installazione e alla configurazione vedere la guida OpenSSH.
Predisporre la connessone fra client e server
Testare la connessione via ssh
Questa prima verifica naturalmente è facoltativa, tuttavia controllare la corretta connessione fra client e server può essere utile per escludere che fra i due PC non ci siano di mezzo firewall o altri sistemi di protezione che in caso contrario sarà necessario configurare.
$ ssh remoteuser@remotehost
Se è la prima volta che instauri una comunicazione ssh fra gli utenti specifici sul client e sul server, verrà richiesta conferma di uno scambio di chiavi per permettere di cifrare la comunicazione, successivamente verrà richiesta la password dell'utente presente sul server. Se questa prova andrà a buon fine avrai accesso al terminale del server. Se fallisce dovresti verificare che l'indirizzo del server sia corretto e che non ci siano meccanismi di difesa che bloccano la comunicazione, nel qual caso è necessari procedere alla loro configurazione.
Generare le chiavi sul client per accedere al server senza password
Vediamo ora come fare in modo che, effettuando una connessione ssh dal client al "remotehost" utilizzando l’utente "remoteuser", non non venga richiesta la password.
Per prima cosa generiamo una coppia di chiavi di autenticazione sulla macchina locale con il comando seguente.
$ ssh-keygen -t rsa
Durante la generazione delle chiavi verrà richiesta una password: lasciare vuoto per accedere senza password ma solo in virtù dello scambio di chiavi.
Oppure possiamo creare una chiave a crittografia ellittica:
$ ssh-keygen -t ecdsa
Con questo comando, nella directory /home/mio_utente/.ssh sono state create due chiavi: una pubblica id_rsa.pub e una privata id_rsa (o id_ecdsa e id_ecdsa.pub nel caso si utilizzi ecdsa). E’ importante verificare che la chiave privata sia accessibile solo per il proprietario:
$ ls -la /home/mio_utente/.ssh -rw------- 1 root root 1675 Jan 7 15:54 id_rsa -rw-r--r-- 1 root root 395 Jan 7 15:54 id_rsa.pub
A questo punto occorre aggiungere la chiave pubblica al "remotehost" per l’utente "remoteuser".
$ cat ~/.ssh/id_rsa.pub | ssh remoteuser@remotehost 'cat >> .ssh/authorized_keys'
Se sul server remoto non esiste la cartella .ssh allora dobbiamo crearla manualmente e riprovare a lanciare il comando sopra. Se tutto va bene la connessione fra il computer locale e il "remotehost" avverrà, per l’utente "remoteuser", senza la richiesta della password.
Testare la connessione senza richiesta di password
Effettuando nuovamente la connessione provata all'inizio di questa guida la connessione al remotehost dovrebbe avvenire senza digitare la password.
$ ssh remoteuser@remotehost
Impostare il backup con rsync via ssh
Il backup di una cartella del client su una cartella del remotehost può essere impostato con il seguente comando.
$ rsync -av -e ssh /this/dir/ remoteuser@remotehost:/remote/dir
Il backup avverrà in modo incrementale ma conservativo, ovvero la cancellazione di un file sul client non causerà la cancellazione del file sul server. La sincronizzazione non conservativa può essere realizzata con l'opzione --delete tuttavia questa opzione deve essere usata con estrema cautela poiché può determinare la cancellazione dei file sul server.
Altre opzioni interessanti di rsync
Escludere una cartella dal backup
Con l'opzione --exclude è possibile escludere una cartella dal nostro backup. Nell'esempio viene esclusa la cartella nascosta .Trashes.
rsync -va --delete --exclude .Trashes/ /media/cartella_1/ /media/cartella_2/
Se vogliamo aggiungere più esclusioni basta ripetere l'opzione: --exclude .Trash1/ --exclude .Trash2/ --exclude .Trash3/
Oppure ancora più "elegante" è la possibilità di definire in un file tutte le esclusioni: creiamo ad esempio un file chiamato exclude.txt e all'interno metteremo quello che vogliamo escludere dal backup:
.Trash1/ .Trash2/ .Trash3/*.zip
si può usare il carattere "*" per definire più file (in questo caso esclude dalla cartella .Trash3/ solo i file .zip.
Infine basta aggiungere alla nostra riga di rsync l'opzione:
--exclude-from 'exclude.txt'
Automatizziamo il backup
Non resta che schedulare il nostro backup con cron. La configurazione è semplicissima. Basta editare il file /etc/cronttab
00 13 * * * mio_utente rsync -av -e ssh /this/dir/ remoteuser@remotehost:/remote/dir
In questo caso il backup sarà eseguito in automatico ogni giorno alle 13 dall’utente "mio_utente". I dati della directory /this/dir/ saranno salvati nella cartella /remote/dir del server "remotehost".
Guida scritta da: Max-B 10:46, 9 mar 2022 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |