UBUNTU – Come copiare files usando Rsync con connessione SSH

Come copiare files da un server Ubuntu ad un altro server utilizzando la connessione SSH e solo comandi da console

[amazon_auto_links id="19493"]

Se avete la necessità di copiare files o cartelle da un server UBUNTU ad un altro utilizzando esclusivamente la console quello che vi propongo è un metodo davvero semplice e funzionale.

Utilizzo il comando linux RSYNC presente su tutte le ultime installazioni di UBUNTU e come connessione sfrutto SSH piuttosto che FTP.

La guida, e la conseguente prova che vi propongo, l’ho realizzata utilizzando una installazione di UBUNTU Server 14.04 ma dovrebbe funzionare con tutte le release successive ( e probabilmente anche le precedenti ).

Vediamo anzitutto cosa occorre per copiare un file o una cartella da un server Ubuntu ad un altro utilizzando la console

  • Ovviamente 2 Server Ubuntu raggiungubili sulla rete ( non è importante se locale o Internet )
  • Account amministrativi su entrambi i server
  • Il servizio SSH attivo ( quello che probabilmente usate per connettervi alla console via Putty )

Step 1 – Generazione di una ” public SSH keys “

[amazon_auto_links id="19493"]

Sul nostro server di origine, generiamo le chiavi pubbliche SSH senza password:

da console scrivete :

ssh-keygen -f ~/.ssh/id_rsa -q -P ""
cat ~/.ssh/id_rsa.pub

Questa è la nostra chiave SSH pubblica che può essere posizionata su altri host per darci accesso, nel nostro caso sul nostro altro server…

ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  root@blograffo

N.B. Ovviamente la vostra chiave sarà composta da tanti caratteri diversi… io NON HO pubblicato la mia chiave

Step 2 – Copia della chiave pubblica sul Server di destinazione

Copiate questa chiave negli appunti del computer e accedete all’altro server ( quello di destinazione).

Mettete la chiave SSH in una delle seguenti :

  • /etc/ssh/authorized_keys
  • ~/.ssh/authorized_keys ( cioè /root/.ssh/authorized_keys )

o dovunque abbiate deciso nella eventuale personalizzazione della vostra installazione di SSH

Se il file authorized_keys non esiste, createlo pure.

Step 3 – Rsync Trasferimento del file

Per la copia utilizzo RSYNC , in quanto consente, tra le altre cose, di copiare i file in modo ricorsivo, con la compressione e su un canale crittografato.

Copiamo un file dal nostro server di origine sul nostro server di destinazione

Accediamo sul primo server ( server di origine ) e da console lanciamo il comando :

rsync -avz -e "ssh -o StrictHostKeyChecking = no -o UserKnownHostsFile = / dev / null" --progress /cartellaorigine/nomefileorigine.est indirizzoserverdestinazione.dyndns.org:/cartelladestinazione/nomefiledestinazione.est

Se si utilizza un utente diverso, ad esempio “nomeutente”, è necessario aggiungerlo davanti al server di destinazione:

rsync -v -e "ssh -p22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /cartellaorigine/nomefileorigine.est [email protected]:/cartelladestinazione/nomefiledestinazione.est

Alcune precisazioni :

  • il parametro p22 dentro le virgolette indica la porta d’ascolto SSH…se l’avete cambiata dovete modificare queto dato
  • –progress potete ometterlo se non volete la visualizzazione del temporestante alla copia
  • sulla cartella di destinazione l’utente deve avere i diritti di scrittura

Uso questa tecnica per mantenere aggiornati e sincronizzati più server che ospitano il mio blog…

Potete farlo anche voi combinando una serie di comandi

Backup e copia di un database MySql

mysqldump -uroot -pPassword nomedatabase > /cartellaorigine/backup.sql


rsync -v -e "ssh -p22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /cartellaorigine/backup.sql [email protected]:/cartelladestinazione/backup.sql

Ovviamente i 2 comandi possono essere combinati all’interno di un file eseguibile .sh in modo che il backup ed il trasferimento su altro server siamo automatici

#!/bin/sh 
#Copia passo passo database di blograffo 
# echo "Creo il backup di MySQL" 
mysqldump -uroot -pPassword nomedatabase > /cartellaorigine/backup.sql 
echo "Trasferisco il Backup su BLograffo" 
rsync -v -e "ssh -p22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /cartellaorigine/backup.sql [email protected]:/cartelladestinazione/backup.sql echo "***FINE backup di MySQL"

>Per dubbi o suggerimenti…ci scriviamo nei commenti

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *