L'anticamera del cestino

Raccolta differenziata di esperienze di dubbia utilità

Backup con rsync via ssh

with 3 comments

Limportanza del backup. Questo server è stato distrutto in un incendio nel Choteau NE Oklahoma sul 11/27. Immagine di John from USA pubblicata su Wikimedia Commons con licenza Creative Commons

L'importanza del backup. Questo server è stato distrutto in un incendio nel Choteau NE Oklahoma sul 11/27. Immagine di John from USA pubblicata su Wikimedia Commons con licenza Creative Commons

Questa guida è tratta dai seguenti articoli “Using Rsync and SSH” e “Login SSH senza password“.

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. Ecco come abbinare rsync a ssh per salvare la vostra copia di backup su una macchina remota e come schedulare questa attività con cron.

$ rsync -avz -e ssh /this/dir/ remoteuser@remotehost:/remote/dir

rsync è dotato di numerose opzioni che permettono di adattarlo agli usi più diversi. Si rimanda al manuale di rsync per la consultazione delle diverse opzioni. Nel comando riportato sopra, le opzioni -az permetteranno di fare un backup incrementale, comprimendo i dati prima del trasferimento. Volendo è possibile aggiungere l’opzione –delete per avere una copia esatta delle due cartelle (suggerimento di Malex, vedi commenti). Senza questa opzione, un file cancellato sulla macchina locale verra conservato sul server remoto. L’opzione -v permette di visualizzare le attività svolte nel corso dell’operazione.

Lanciando il comando riportato sopra vi verrà richiesto di inserire la password dell’utente “remoteuser” sul server “remotehost”. Se l’autenticazione avrà successo, rsync copierà il contenuto della cartella /this/dir nella cartella /remote/dir. Nel caso sia già stato eseguito il comando in precedenza, rsync copierà solo le modifiche.

Vediamo ora come fare in modo che, effettuando una connessione ssh dalla macchina locale 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 (nel momento in cui sarà richiesta una password non inseriamo nulla).

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mio_utente/.ssh/id_rsa):
Created directory '/home/mio_utente/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mio_utente/.ssh/id_rsa.
Your public key has been saved in /home/mio_utente/.ssh/id_rsa.pub.
The key fingerprint is:
2f:3e:09:4f:5e:79:5h:8c:2a:ad:f5:32:41:ac:17:e2 mio_utente@pclocale

Con questo comando, nella directory /home/mio_utente/.ssh sono state create due chiavi: una pubblica id_rsa.pub e una privata id_rsa. 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 /home/mio_utente/.ssh/id_rsa.pub | ssh remoteuser@remotehost 'cat >> .ssh/authorized_keys'

A questo punto la connessione fra il computer locale e il “remotehost” avverrà, per l’utente “remoteuser”, senza la richiesta della password.

Non resta che scheduare il nostro backup con cron. La configurazione è semplicissima. Basta editare il file /etc/cronttab

00 13 * * * mio_utente  rsync -avz -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”.

Buon backup.

Written by Max-B

8 gennaio 2009 a 10:10

Pubblicato su GNU/Linux

Tagged with

3 Risposte

Subscribe to comments with RSS.

  1. Per avere una copia fedele io aggiungere l’opzione –delete, altrimenti i file cancellati nel sistema non vengono cancellati anche nel sistema remoto.

    Se interessa un comando di backup un pò più sofisticato, suggerisco rdiff-backup.

    malex

    8 gennaio 2009 at 11:11

  2. Giusto, grazie per la precisazione!

    maxborg

    8 gennaio 2009 at 11:29

  3. Grazie, avevo bisogno di capire con una spiegazione chiara come fare ad evitare la richiesta di password per schedulare il cron.

    alla prossima…

    Paolo

    22 giugno 2009 at 13:12


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: