Vantaggi del comando 'Rsync'.
- È più veloce degli altri strumenti perché copia solo quei file dalla posizione di origine alla posizione di destinazione che sono stati modificati o non esistono nella posizione di destinazione.
- Supporta il trasferimento incompleto.
- Richiede meno larghezza di banda perché comprime i dati durante la trasmissione.
- Diminuisce l'overhead della trasmissione perché i dati meno importanti possono essere trasmessi senza crittografia.
Sintassi
La sintassi del comando “rsync” è la seguente:
rsync [Opzione] Destinazione sorgenteQui, i percorsi di origine e destinazione possono essere locali o remoti. Diversi tipi di opzioni possono essere utilizzati con questo comando per scopi diversi.
Opzioni utili del comando 'Rsync'.
Alcune opzioni comunemente utilizzate del comando 'rsync' sono spiegate di seguito:
Opzione | Scopo |
---|---|
-Con | Viene utilizzato per comprimere i dati durante la trasmissione. |
-R | Viene utilizzato per sincronizzare i dati in modo ricorsivo senza mantenere alcun permesso di file. |
-UN | Viene utilizzato per sincronizzare i dati in modo ricorsivo mantenendo tutti i permessi dei file. |
-B | Viene utilizzato per mantenere un backup dei dati durante la trasmissione. |
-In | Viene utilizzato per visualizzare l'output in formato dettagliato. |
-P | Viene utilizzato per visualizzare l'avanzamento del trasferimento. |
-N | Viene utilizzato per verificare se la sincronizzazione funziona o meno prima di trasferire i file o le cartelle. |
Elenco di 15 esempi di 'Rsync'.
- Trasferisci un singolo file e cartella in locale
- Trasferisci più file e cartelle in locale
- Trasferisci un singolo file e cartella in remoto
- Trasferisci più file e cartelle in remoto
- Visualizza l'avanzamento del trasferimento
- Comprimi i dati durante il trasferimento
- Trasferimento con il limite di larghezza di banda
- Trasferisci i file e le cartelle in modo ricorsivo
- Trasferimento con il limite di dimensione minima
- Trasferimento con il limite massimo di dimensioni
- Trasferisci i file di un tipo particolare
- Visualizza le differenze tra i file di origine e di destinazione
- Includere o escludere i file durante il trasferimento
- Sincronizzare i dati in modalità Dry
- Elimina i file e le cartelle di origine dopo il trasferimento
Trasferisci un singolo file e cartella in locale
Eseguire il comando 'ls' per visualizzare l'elenco di file e cartelle della posizione corrente. Successivamente, esegui il comando 'rsync' per trasferire il file 'employees.txt' nel file 'employees_copy.txt' localmente. Eseguire nuovamente il comando 'ls' per verificare se il file è stato trasferito correttamente o meno.
$ l
$ rsync impiegati.txt impiegati_copia.txt
$ l
Il seguente output mostra che il file 'employee.txt' è stato trasferito correttamente:
Supponiamo che il contenuto della cartella temporanea debba essere trasferito nella cartella tempdir dove esiste il file 'courses.txt' su entrambe le cartelle. Esegui il comando 'ls temp' per controllare il contenuto della cartella temp. Quindi, esegui il comando 'cat temp/courses.txt' per controllare il contenuto di questo file. Quindi, esegui il comando 'ls tempdir' per controllare il contenuto della cartella tempdir. Quindi, esegui il comando 'cat tempdir/courses.txt' per controllare il contenuto di questo file.
$ ls temp
$ cat temp/corsi.txt
$ lstempdir
$ cat tempdir/corsi.txt
L'output mostra che il contenuto del file 'courses.txt' delle cartelle temp e tempdir è leggermente diverso e il file 'courses.txt' della cartella temp contiene più dati rispetto al file 'courses.txt' della cartella tempdir .
Esegui il seguente comando per trasferire il contenuto della cartella temp nella cartella tempdir e controlla il contenuto del file 'courses.txt' della cartella tempdir per confermare che il file sia aggiornato correttamente o meno:
$ rsync -a temp/ tempdir/$ lstempdir
$ cat tempdir/corsi.txt
Il seguente output mostra che il contenuto della cartella temp viene trasferito correttamente nella cartella tempdir e il contenuto del file 'courses.txt' della cartella tempdir viene aggiornato correttamente:
Trasferisci più file e cartelle in locale
Il comando 'rsync' può essere utilizzato per trasferire più file e cartelle in locale. Eseguire il seguente comando per trasferire i file 'ping1.bash' e 'ping2.bash' nella cartella tempdir e controllare il contenuto della cartella tempdir dopo il trasferimento. L'opzione -v viene utilizzata con il comando 'rsync' per visualizzare l'output in formato dettagliato:
$ rsync -v ping1.bash ping2.bash tempdir/$ lstempdir
Il seguente output mostra che più file vengono trasferiti correttamente nella cartella tempdir:
Eseguire i seguenti comandi per verificare il contenuto delle cartelle temp, tempdir e test e trasferire il contenuto delle cartelle test e tempdir nella cartella temp:
$ ls temp$ lstempdir
$ ls test
$ rsync -av prova/ tempdir/ temp/
$ ls temp
L'output mostra che il contenuto delle cartelle test e tempdir è stato trasferito correttamente nella cartella temp. I file 'customers.csv', 'ping1.bash' e 'ping2.bash' vengono aggiunti come nuovi file alla cartella temporanea:
Trasferisci un singolo file e cartella in remoto
Devi installare e configurare il server SSH nella posizione remota per trasferire i file e le cartelle in remoto. Puoi controllare questo tutorial per configurare il server SSH.
Esegui il seguente comando per verificare la dimensione del file 'courses.txt' della posizione corrente:
ls -la corsi.txtL'output mostra che la dimensione del file 'courses.txt' è di 65 byte:
Esegui il seguente comando per trasferire 'courses.txt' al file /home/ubuntu/corsi/ cartella della posizione remota, ubuntu@192.168.0.101. Devi fornire la password di root della macchina remota prima di trasferire il file:
rsync -v corsi.txt ubuntu@192.168.0.101:/home/ubuntu/corsi/Il seguente output mostra che il file 'courses.txt' viene trasferito correttamente nel computer remoto e la dimensione del file è di 65 byte:
Esegui il comando seguente per trasferire la cartella temporanea nel file /home/ubuntu/corsi/ cartella della posizione remota, ubuntu@192.168.0.101. Devi fornire la password di root della macchina remota prima di trasferire il file come il comando precedente.
rsync -av temp/ ubuntu@192.168.0.101:/home/ubuntu/corsi/Il seguente output mostra che il contenuto della cartella temporanea viene trasferito correttamente nel computer remoto:
Trasferisci più file e cartelle in remoto
Il seguente comando 'rsync' trasferisce i file 'customers.csv' e 'department.json' al /home/Ubuntu/file/ cartella della posizione remota, ubuntu@192.168.0.101.
rsync -av clients.csv department.json ubuntu@192.168.0.101:/home/ubuntu/files/Il seguente output mostra che più file vengono trasferiti correttamente nella posizione remota:
Il seguente comando 'rsync' trasferisce il contenuto delle cartelle temp e test e il file 'department.json' al /home/Ubuntu/file/ cartella della posizione remota, ubuntu@192.168.0.101.
rsync -av temp/ test/ department.json ubuntu@192.168.0.101:/home/ubuntu/files/Il seguente output mostra che il contenuto di più cartelle viene trasferito correttamente nella posizione remota:
Visualizza l'avanzamento del trasferimento
Eseguire il comando 'rsync' con l'opzione –progress per trasferire il contenuto della cartella tempdir nella cartella temp_copy con le informazioni sull'avanzamento.
rsync -a tempdir/ temp_copy --progressIl seguente output mostra che la directory temp_copy viene creata localmente e il contenuto della cartella tempdir viene trasferito correttamente nella cartella temp_copy:
Comprimi i dati durante il trasferimento
Eseguire il seguente comando 'rsync' con l'opzione –z per comprimere e trasferire localmente la directory tempdir nella directory test:
rsync -za tempdir/test/Il seguente output mostra che la directory compressa è stata trasferita correttamente in locale:
Trasferimento con il limite di larghezza di banda
Eseguire il seguente comando 'rsync' con l'opzione –bwlimit con valore 100 per trasferire localmente il file /etc/passwd nella cartella temp:
rsync -v --bwlimit=100 etc/passwd temp/Il seguente output mostra che il file passwd è stato trasferito correttamente:
Trasferisci il file e la cartella in modo ricorsivo
Eseguire il seguente comando 'rsync' con l'opzione –rv per trasferire localmente la cartella di test nella cartella test_bak:
rsync -rv test/ test_bak/Il seguente output mostra che la cartella test è stata trasferita correttamente nella cartella test_bak:
Trasferimento con il limite di dimensione minima
Il trasferimento di file e cartelle utilizzando il comando 'rsync' può essere limitato utilizzando l'opzione –min-size per impostare il limite minimo della dimensione del trasferimento di file e cartelle. Esegui il seguente comando 'ls -la tempdir' per controllare la dimensione di ogni file e cartella di questa cartella. Successivamente, esegui il comando 'rsync' per trasferire il contenuto della cartella tempdir nella cartella tempdir_bak con il limite di dimensione minimo.
ls -la tempdirrsync -av --min-size='245B' tempdir/tempdir_bak
L'output seguente mostra che nella cartella tempdir esistono due file che corrispondono alla dimensione minima. Questi sono 'ping1.bash' (248 byte) e 'test.txt' (34504 byte). Questi file vengono trasferiti nella cartella tempdir_bak e gli altri file della cartella tempdir vengono omessi:
Trasferimento con il limite massimo di dimensioni
Il trasferimento di file e cartelle utilizzando il comando 'rsync' può essere limitato utilizzando l'opzione –max-size per impostare il limite massimo della dimensione del trasferimento di file e cartelle. Esegui il seguente comando 'ls -la temp' per controllare la dimensione di ogni file e cartella di questa cartella. Successivamente, esegui il comando 'rsync' per trasferire il contenuto della cartella temporanea nella cartella temp_bak con il limite massimo di dimensione.
ls -la temprsync --max-size='250B' temp/ temp_bak/
L'output seguente mostra che esistono quattro file nella cartella temporanea che corrisponde al limite massimo di dimensioni. Questi sono 'courses.txt' (65 byte), 'employees.csv' (361 byte), 'ping1.bash' (248 byte) e 'ping2.bash' (244 byte). Questi file vengono trasferiti nella cartella temp_bak e gli altri file nella cartella temp vengono omessi:
Trasferisci i file di un tipo particolare
Il tipo di file che verrà trasferito può essere impostato menzionando l'estensione del file nel comando 'rsync'. Esegui il seguente comando 'rsync' per trasferire tutti i file di testo della cartella temp nella cartella mydir. Qui, l'estensione del file di testo è indicata con '*.txt':
rsync -v temp/*.txt miadir/Il seguente output mostra che due file di testo, 'courses.txt' e 'test.txt', vengono trasferiti nella cartella mydir e gli altri file della cartella temp vengono omessi:
Visualizza le differenze tra i file di origine e di destinazione
Quando i file o le cartelle vengono trasferiti da una posizione a un'altra in locale o in remoto, entrambe le posizioni possono contenere gli stessi file o cartelle. Le differenze tra l'origine e la destinazione durante la trasmissione possono essere esaminate utilizzando l'opzione -i con il comando 'rsync'. Eseguire i seguenti comandi 'cat' per verificare il contenuto del file di origine e di destinazione prima del trasferimento. Qui, il file 'courses.txt' viene trasferito nella cartella temporanea.
corsi per gatti.txtcat temp/corsi.txt
rsync -avi corsi.txt temp/
Il seguente output mostra che il file 'courses.txt' dell'origine e della destinazione sono leggermente diversi. L'output del comando 'rsync' mostra la differenza tra i file:
Sincronizzare i dati in modalità Dry
Se vuoi sapere quali file e cartelle vengono trasferiti dal comando 'rsync' prima del trasferimento effettivo, è meglio eseguire il comando 'rsync' con l'opzione –dry-run o l'opzione –n. Quando il comando 'rsync' viene eseguito con questa opzione, controlla quali file o cartelle vengono copiati dalla cartella di origine alla cartella di destinazione, ma mantiene invariata la cartella di destinazione. Eseguire il file 'ls –la department.json' per verificare le dimensioni del file. Successivamente, esegui il comando 'rsync' con la modalità –dry-run per verificare il trasferimento di 'department.json' nella cartella temp.
ls -la dipartimento.jsonrsync -v --dry-run department.json temp/
L'output seguente mostra che la dimensione del file 'department.json' è di 1172 byte. La dimensione del file mostra 1172 byte dopo l'esecuzione del comando 'rsync' con l'opzione –dry-run:
Includere o escludere i file durante il trasferimento
È possibile filtrare il tipo di file al momento del trasferimento dalla posizione di origine alla posizione di destinazione utilizzando le opzioni –include e –exclude. L'opzione 'optionsinclude' viene utilizzata per definire l'estensione di quei file che verranno trasferiti dall'origine alla destinazione. L'opzione –exclude viene utilizzata per definire l'estensione di quei file che non verranno trasferiti dall'origine alla destinazione.
Esegui la seguente cartella 'ls temp' per controllare il contenuto della cartella temp. Successivamente, esegui il comando 'rsync' con le opzioni –include e –exclude. In base al comando, tutti i file CSV della cartella temporanea vengono trasferiti nella cartella dei file e tutti i file di testo della cartella temporanea vengono omessi al momento del trasferimento. Quindi, esegui il comando 'ls files' per verificare quali file vengono trasferiti dalla cartella temporanea alla cartella dei file.
temprsync -a temp/ files/ --include=*.csv --exclude=*.txt
ls
L'output seguente mostra che la cartella temporanea contiene due file CSV, due file di testo e due file BASH. La cartella dei file è vuota prima del trasferimento e vengono trasferiti due file CSV e due file BASH:
Elimina i file e le cartelle di origine dopo il trasferimento
Nei precedenti tutti i comandi 'rsync', i file e le cartelle di origine rimangono nella posizione di origine dopo il trasferimento nella posizione di destinazione. Ma a volte, richiede il trasferimento permanente di file e cartelle nella posizione di destinazione. Questa attività può essere eseguita utilizzando l'opzione –remove-source-files con il comando “rsync”. Esegui il comando 'ls' per controllare tutti i file e le cartelle della posizione corrente. Esegui il comando 'ls temp' per controllare i file e le cartelle della cartella temp. Quindi, esegui il comando 'rsync' con l'opzione –remove-source-files per eliminare i file e le cartelle della posizione di origine dopo aver completato il trasferimento. Eseguire nuovamente il comando 'ls' per verificare se il file di origine è stato rimosso o meno dal percorso di origine.
lstemp
rsync employee.csv temp/ --remove-source-files
ls
Il seguente output mostra che il file 'employees.csv' della posizione corrente viene trasferito nella cartella temporanea e il file 'employees.csv' viene rimosso dalla posizione di origine dopo il trasferimento:
Conclusione
'rsync' è uno strumento molto utile di Linux che semplifica l'attività di trasmissione di file e cartelle da una posizione a un'altra utilizzando diverse opzioni. I metodi di utilizzo del comando 'rsync' per trasferire i file e le cartelle da una posizione a un'altra comprimendo, impostando le dimensioni di file e cartelle, impostando il tipo di file, impostando il limite di larghezza di banda, ecc. sono mostrati in 15 semplici esempi di questo tutorial. Questo tutorial aiuta gli utenti Linux a conoscere correttamente gli usi di base del comando 'rsync' in Linux.