Copiare e fare il backup di file e cartelle utilizzando l'utilità Rsync

Ulteriori informazioni su Rsync

Rsync è uno strumento veloce e versatile per la copia di file e cartelle. L'utility può copiare i dati sia localmente che su altri host, compreso il Cloud Storage di Introserv.
Le opzioni dell'utility consentono di controllare molti aspetti della copia e del mirroring dei dati.
Una delle caratteristiche principali è la possibilità di comprimere i dati durante l'invio, che consente di accelerare il processo di copia tra i server.
Un altro vantaggio è l'eccezione per la copia di file identici. Pertanto, verranno copiati o trasferiti solo i file diversi, il che farà indubbiamente risparmiare tempo nella sincronizzazione di directory di grandi dimensioni.

Opzioni di utilità

Vediamo alcuni esempi di utilizzo di Rsync per copiare file e directory sul Cloud Storage remoto di Introserv utilizzando il protocollo SSH. Importante! Comandi simili, specificando solo il server di destinazione, consentono di copiare directory e file su qualsiasi server remoto tramite SSH.

Vediamo alcune delle principali opzioni di utilità che verranno utilizzate più spesso. Un elenco più dettagliato delle opzioni disponibili è disponibile nella documentazione man( comandoman rsync ):

-v - visualizza informazioni dettagliate sul processo
-c - controlla le checksum dei file
-q - informazioni minime
-a - modalità di archiviazione
-R - percorsi relativi
-y - non sovrascrive i file più recenti
-b - crea una copia di backup
-l - copia i collegamenti simbolici
-L - copia il contenuto dei link
-H - copia i collegamenti fissi
-g - salva gruppo
-p - conserva i permessi dei file
-t - salva il tempo di modifica
-x - funziona solo in questo FS
-e - utilizza un altro protocollo di trasporto (ad esempio, ssh)
-z - comprime i file prima del trasferimento
--delete - elimina i file che non sono presenti nell'origine
--esclude - esclude i file
--recursive - enumera le directory in modo ricorsivo
--no-recursive - disabilita la ricorsione
--progress - visualizza l'avanzamento del trasferimento dei file
--stat - mostra le statistiche di trasferimento
--max-size - dimensione massima del file per il trasferimento
--bwlimit - limite di velocità per i trasferimenti di file

Breve spiegazione della sintassi

rsync -az --progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/

Le opzioni-az --progress indicano che è necessario archiviare il file trasferito, comprimerlo prima del trasferimento e visualizzare sullo schermo l'avanzamento della copia;

/home/user/test.file: è il percorso del file e il file stesso che deve essere trasferito;

boxxxx@boxxxxx.introserv.cloud: questa è la risorsa di destinazione (nel nostro esempio è il cloud storage, ma può anche essere un server remoto) boxxxx è il nome dell'utente, dopo il segno @ è il nome della risorsa o l'indirizzo IP del server remoto;

/cartella_remota/ è una cartella su una risorsa remota. Nel nostro esempio, in Introserv Cloud Storage.

Copiare un file in una cartella su uno storage remoto

rsync -az --progress /home/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/

Verrà richiesta una password per la connessione allo storage:

Inserite la password e continuate, vedrete l'avanzamento e la velocità di trasferimento dei file:

Copia della cartella nella cartella di uno storage remoto

Prestare attenzione agli slash nelle righe della cartella di origine e della cartella di destinazione. L'assenza di uno slash nella cartella di origine indica che si vuole trasferire ricorsivamente la cartella Desktop locale con tutto il suo contenuto alla cartella remote_folder

rsync -azr --progress /home/user/Desktop boxxxx@boxxxx.introserv.cloud:/remote_folder/

Si vedrà il trasferimento della cartella e di tutti i file al suo interno:

Copiare il contenuto di una cartella locale in una cartella su uno storage remoto

Prestare attenzione alla barra alla fine della cartella di origine. La sua presenza indica che l'utilità deve copiare il contenuto della cartella locale in una cartella del dispositivo di memorizzazione remoto.

rsync -avzr --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verrà visualizzato l'avanzamento e la velocità di copia:

Copia di una cartella da uno storage remoto a una cartella del server locale

Utilizzando Rsync, è possibile avviare la copia di una cartella da uno storage remoto. Il comando si presenta come segue:

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/

Verrà visualizzato l'avanzamento e la velocità di copia di una cartella remota in una cartella del server locale:

Copia del contenuto di una cartella da uno storage remoto a una cartella del server locale

In questo caso è bene prestare attenzione alla barra alla fine del percorso della cartella di origine. La sua presenza indica che deve essere copiato solo il contenuto della cartella

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/

Copiare il contenuto di una cartella escludendo e/o includendo i file

L'utilità consente di specificare esplicitamente quali file trasferire e quali escludere. A tale scopo, utilizzare le opzioni --include e --exclude.

rsync -azr --progress --include 'test.file' --esclude 'test.file2' /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Si noterà che viene trasferito un solo file, specificato dall'opzione --include. Si noti che le opzioni include ed esclude possono essere usate separatamente l'una dall'altra.

Copia solo i file che sono diversi da quelli presenti nella cartella di destinazione

Per annullare la copia di file identici, è necessario utilizzare l'opzione -c per controllare le checksum dei file. In questo modo è possibile escludere dal processo di copia i file che sono già presenti nella cartella di destinazione

rsync -azrс --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Si noterà che solo 3 file sono stati copiati nella cartella remota, con l'eccezione del file test.odt, che è già presente nello storage remoto:

Utilizzo di Rsync su SSH con una porta SSH non standard

Per trasferire file da/verso un server con una porta SSH modificata, utilizzare l'opzione -e 'ssh -p port_number'.

Il comando per copiare un file su un server la cui porta SSH è stata cambiata in 44 sarà simile a questo:

rsync -azrс --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/