Quando si tratta di trasferire file tra sistemi in rete, gli utenti Linux e Unix hanno molti strumenti a loro disposizione.
I protocolli più diffusi per il trasferimento dei dati sono SSH e FTP. Sebbene FTP sia molto popolare, preferisci sempre utilizzare 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 loro ha tutte le caratteristiche che rsync
fornisce. rsync
può essere utilizzato per il mirroring dei dati, backup incrementali, copia di file tra sistemi e così via.
In questo tutorial spiegheremo come copiare file con rsync
su SSH.
Requisiti #
-
Il
rsync
l'utilità deve essere installata sia nel sistema di destinazione che in quello di origine. Se non è installato, puoi installarlo utilizzando il gestore di pacchetti della tua distribuzione:Ubuntu e Debian:
sudo apt install rsync
CentOS e Fedora:
sudo yum install rsync
-
Accesso SSH al computer remoto.
-
L'utente che esegue
rsync
comando e l'utente SSH remoto deve disporre delle autorizzazioni appropriate per leggere e scrivere file.
Utilizzo di rsync
per trasferire file su SSH #
Con rsync
, puoi trasferire file e directory su SSH da e verso server remoti.
La sintassi generale per il trasferimento di file con rsync
è il seguente:
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
Dove SRC
è la directory di origine, DEST
è la directory di destinazione USER
è il nome utente SSH remoto e 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 -e ssh
opzione.
Ad esempio, per trasferire un singolo file /opt/file.zip
dal sistema locale al /var/www/
directory sul sistema remoto con IP 12.12.12.12
correresti:
rsync -a /opt/file.zip [email protected]:/var/www/
Il -a
opzione sta per modalità di archiviazione che sincronizzerà le directory in modo ricorsivo, trasferirà dispositivi speciali e bloccherà, conserverà collegamenti simbolici, tempi di modifica, gruppo, proprietà e autorizzazioni.
Se non hai impostato un accesso SSH senza password sulla macchina remota, ti verrà chiesto di inserire la password utente.
Se il file esiste sul server remoto verrà sovrascritto. Se vuoi salvare il file con un nome diverso, specifica il nuovo nome:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
Per trasferire i dati da una macchina remota a una macchina locale, usa la posizione remota come origine e la posizione locale come destinazione:
rsync -a [email protected]:/var/www/file.zip /opt/
Trasferimento di directory con rsync
su SSH equivale al trasferimento di file.
È importante sapere che rsync
fornisce un trattamento diverso alle directory di origine con una barra finale /
. Quando la directory di origine ha 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 il /opt/website/images/
locale directory nel /var/www/images/
directory su una macchina remota da digitare:
rsync -a /home/linuxize/images/ [email protected]:/var/www/images/
Usa il --delete
opzione se si desidera sincronizzare la directory locale e remota. Fai attenzione quando usi questa opzione perché eliminerà i file nella directory di destinazione se non esistono nella directory di origine.
rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/
Se SSH sull'host remoto è in ascolto su una porta diversa da quella predefinita 22
, specifica la porta usando -e
opzione. Ad esempio, se SSH è in ascolto sulla porta 3322
useresti:
rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/
Quando si trasferiscono grandi quantità di dati si consiglia di eseguire rsync
comando all'interno di una sessione di schermo o utilizzare il -P
opzione che dice a rsync
per mostrare una barra di avanzamento durante il trasferimento e conservare i file parzialmente trasferiti:
rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/
Conclusione #
Ti abbiamo mostrato come usare rsync
su SSH per copiare e sincronizzare file e directory.
Potresti anche voler leggere come escludere file o directory con rsync
.
Sentiti libero di lasciare un commento in caso di domande.