Introduzione
Quando si tratta di trasferire file tra sistemi sulla rete, gli utenti Linux e Unix hanno molti strumenti a loro disposizione.
I protocolli più popolari per il trasferimento dei dati sono SSH e FTP. Mentre FTP è molto popolare, preferisci sempre usare SSH in quanto è il modo più sicuro per trasferire i tuoi file.
Esistono strumenti specializzati per il trasferimento di file su SSH come scp
e sftp
ma nessuno di essi ha tutte le funzionalità che offre rsync
. rsync
può essere utilizzato per il mirroring di dati, backup incrementali, copia di file tra sistemi e così via.
In questo tutorial, spiegheremo come copiare file con rsync
over SSH.
Prerequisiti
L'utilità rsync
deve essere installata su entrambi i sistemi di destinazione e di origine. Se non è installato, è possibile installarlo utilizzando il gestore pacchetti della propria distribuzione:
Ubuntu e Debian:
sudo apt install rsync
CentOS e Fedora:
sudo yum install rsync
- Accesso SSH al computer remoto.
- L'utente che esegue il comando
rsync
e l'utente SSH remoto devono disporre delle autorizzazioni appropriate per leggere e scrivere file.
Utilizzare rsync per trasferire file su SSH
Con rsync
, è possibile trasferire file e directory su SSH da e verso server remoti.
La sintassi generale per il trasferimento di file con rsync
è la seguente:
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
SRC
è la directory di origine, DEST
la directory di destinazione USER
è il nome utente SSH remoto ed HOST
è l'host SSH remoto o l'indirizzo IP.
Le versioni più recenti di rsync sono configurate per utilizzare SSH come shell remota predefinita in modo da poter omettere l'opzione -e ssh
.
Ad esempio, per trasferire un singolo file /opt/file.zip
dal sistema locale alla directory /var/www/
sul sistema remoto con IP 12.12.12.12
dovresti eseguire:
rsync -a /opt/file.zip [email protected]:/var/www/
L'opzione -a
indica la modalità di archiviazione che sincronizza ricorsivamente le directory, trasferisce dispositivi speciali e blocca, preserva collegamenti simbolici, tempi di modifica, gruppo, proprietà e autorizzazioni.
Se non hai impostato un accesso SSH senza password al computer remoto, ti verrà chiesto di inserire la password dell'utente.
Se il file esiste sul server remoto verrà sovrascritto. Se si desidera salvare il file con un nome diverso, specificare il nuovo nome:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
Per trasferire i dati da un server remoto a un computer locale, utilizzare la posizione remota come origine e la posizione locale come destinazione:
rsync -a [email protected]:/var/www/file.zip /opt/
Il trasferimento di directory con rsync
attraverso SSH equivale al trasferimento di file.
È importante sapere che rsync
offre un trattamento diverso alle directory di origine con una barra finale /
. Quando la directory di origine presenta una barra finale, rsync
copierà solo il contenuto della directory di origine nella directory di destinazione. Quando la barra finale viene omessa, la directory di origine verrà copiata all'interno della directory di destinazione.
Ad esempio, per trasferire la directory locale /opt/website/images/
nella directory /var/www/images/
su un computer remoto, digitare:
rsync -a /home/noviello/images/ [email protected]:/var/www/images/
Utilizzare l'opzione --delete
se si desidera sincronizzare la directory locale e remota. Prestare attenzione quando si utilizza questa opzione poiché eliminerà i file nella directory di destinazione se non esistono nella directory di origine.
rsync -a --delete /home/noviello/images/ [email protected]:/var/www/images/
Se l'SSH sull'host remoto è in ascolto su una porta diversa da quella predefinita 22
, specificare la porta utilizzando l'opzione -e
. Ad esempio, se SSH è in ascolto sulla porta 3322
, utilizzare:
rsync -a -e "ssh -p 3322" /home/noviello/images/ [email protected]:/var/www/images/
Quando si trasferiscono grandi quantità di dati, si consiglia di eseguire il comando rsync
all'interno di una sessione screen o utilizzare l'opzione -P
che indica al comando rsync
di mostrare una barra di avanzamento durante il trasferimento e mantenere i file parzialmente trasferiti:
rsync -a -P /home/noviello/images/ [email protected]:/var/www/images/
Conclusione
Ti abbiamo mostrato come usare rsync
su SSH per copiare e sincronizzare file e directory.