Rsync su tunnel SSH

sezione dedicata ai sistemi operativi Linux

Rsync su tunnel SSH

Messaggio da leggereda root » 10/02/2014, 10:16

Backup automatico verso un server remoto tramite SSH con Rsync:

per automatizzare la procedura ed eseguirla per esempio tramite crontab, e' necessario preparare le chiavi pubbliche di ssh così da potervi accedere senza digitare password.

In questo esempio per praticita' io ho utilizzato l'utente root sulla macchina che deve fare il backup (l'ho chiamata server locale), ma si puo' utilizzare qualsiasi utente che abbia i permessi giusti per poter leggere i files e fare il backup.

Entrare nel server locale come root e creare la directory .ssh con il comando:

mkdir /root/.ssh

generare la coppia di chiavi privata e pubblica, per l'accesso ssh senza necessita' di password, con il comando:

ssh-keygen -t rsa

Apparira' la seguente domanda:

Enter file in which to save the key (/root/.ssh/id_rsa):

non inserire nulla e premere "invio" per tutte e tre le domande che ci verranno poste.

Una volta che saranno create le due chiavi, occorre dare i permessi giusti alla chiave privata affinche' nessuno tranne noi possa leggerla, dando il comando:

chmod 600 /root/.ssh/id_rsa

Entriamo quindi tramite ssh (per questa volta ancora con la password) nel server remoto, che e' quello a cui invieremo il backup, e creiamo anche qui la directory .ssh con il comando:

ssh nomeutenteremoto@server-remoto.com "mkdir .ssh; chmod 600 .ssh"

Inserire la password dell'utente remoto quando ci verra' chiesta.

nota: nomeutenteremoto e server-remoto.com sono da esempio e vanno ovviamente sostituiti con i nostri parametri.

poi copiamo la nostra chiave pubblica sul server remoto nella directory che abbiamo appena creato con il comando:

cat .ssh/id_rsa.pub | ssh nomeutenteremoto@server-remoto.com 'cat >> .ssh/authorized_keys'

A questo punto le chiavi sono a posto, riavviamo entrambi i servers e verifichiamo l'accesso ssh al server remoto senza necessita' di password con il comando:

ssh nomeutenteremoto@server-remoto.com ls -la

nota: questo comando va dato dall'utente root sul server locale (quello da cui parte il backup).

come output dovremmo avere l'elenco completo dei files contenuti nella cartella dell'utente remoto (il server sul quale andremo a salvare il backup).

A questo punto per fare il backup, ad esempio della cartella /home/cartellaorigine del server locale, verso il server remoto nella cartella /home/nomeutenteremoto/cartelladestinazione, basta utilizzare il comando seguente:

rsync -avz --size-only --progress --delete -e "ssh -p 22" /home/cartellaorigine nomeutenteremoto@server-remoto.com:cartelladestinazione

Si puo' quindi creare un "Cron Job" per fare in modo che questo backup parta automaticamente ogni giorno.
Maurizio
Avatar utente
root
Amministratore
 
Messaggi: 390
Iscritto il: 10/04/2012, 10:55
Località: Turin

Torna a Linux

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron