GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux rsync con esempi pratici

Rsync è uno strumento di copia file veloce e straordinariamente versatile. Può copiare localmente, su/da un altro host su qualsiasi shell remota o su/da un demone rsync remoto. Offre un gran numero di opzioni che controllano ogni aspetto del suo comportamento e consentono di copiare specifiche molto flessibili dell'insieme di file. È famoso per il suo algoritmo di trasferimento delta, che riduce la quantità di dati inviati sulla rete inviando solo le differenze tra i file di origine e i file esistenti nella destinazione. Rsync è ampiamente utilizzato per backup e mirroring e come comando di copia migliorato per l'uso quotidiano.

Rsync trova i file che devono essere trasferiti utilizzando un algoritmo di "controllo rapido" (per impostazione predefinita) che cerca i file che hanno cambiato dimensione o nell'ultima modifica. Eventuali modifiche agli altri attributi conservati (come richiesto dalle opzioni) vengono apportate direttamente al file di destinazione quando il controllo rapido indica che i dati del file non devono essere aggiornati.

Alcune delle funzionalità aggiuntive di rsync sono

  • supporto per la copia di link, dispositivi, proprietari, gruppi e autorizzazioni
  • opzioni di esclusione ed esclusione da simili a GNU tar
  • una modalità di esclusione CVS per ignorare gli stessi file che CVS ignorerebbe
  • può utilizzare qualsiasi shell remota trasparente, inclusi ssh o rsh
  • non richiede privilegi di superutente
  • pipeline dei trasferimenti di file per ridurre al minimo i costi di latenza
  • supporto per demoni rsync anonimi o autenticati (ideale per il mirroring)

Sintassi

La sintassi di base del comando rsync è:

# rsync options source destination

Alcune delle opzioni comunemente utilizzate:

  • –elimina :elimina i file che non esistono sul mittente (sistema).
  • -v :output dettagliato
  • -e "opzioni ssh" :specifica ssh come shell remota
  • -a :modalità archivio
  • -r :ricorrono nelle directory
  • -z :comprime i dati del file

esempi di comandi rsync in Linux

sincronizza file e directory sul sistema locale

# rsync -zvr /usr/  /root/sync-data/

Il comando precedente copierà o sincronizzerà tutti i file e le directory della cartella /usr nella cartella /root/sync-data.

sincronizza i file in locale preservando i permessi

-a le opzioni effettuano le seguenti operazioni:fornisce funzionalità ricorsive e conserva autorizzazioni, collegamenti simbolici, informazioni su utenti e gruppi.

# rsync -azv /usr/ /root/sync-data/

sincronizza/copia i file dalla macchina locale al server remoto

# rsync -avz /root/sync-data/ [email protected]:/tmp

Il comando precedente copierà i dati della cartella /root/syc-data sulla macchina remota con le credenziali dell'utente root nella cartella /tmp.

sincronizza/copia i file dal server remoto alla macchina locale

# rsync -avz [email protected]:/tmp/src /opt 
[email protected]'s password: 
receiving file list ... done 
src/ 
src/debug/ 
src/kernels/
sent 38 bytes  received 99 bytes  10.96 bytes/sec 
total size is 0  speedup is 0.00

Il comando precedente copierà la cartella /tmp/src del server remoto nella cartella /opt della macchina locale.

Sincronizzazione remota su ssh

rsync ci consente di sincronizzare i file sulla macchina remota e viceversa su ssh, ovvero una comunicazione sicura. Utilizzare "rsync -e ssh" per specificare quale shell remota utilizzare. Nel nostro caso, rsync utilizzerà ssh.

# rsync -avz -e ssh [email protected]:/var/lib/rpm  /opt 
The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. 
RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. 
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts.
[email protected]'s password: 
receiving file list ... done 
rpm/ 
rpm/.rpm.lock 
rpm/Basenames 
rpm/Conflictname 
............
rpm/Triggername
sent 422 bytes  received 12521670 bytes  115410.99 bytes/sec 
total size is 35467264  speedup is 2.83

Visualizza lo stato di avanzamento della sincronizzazione

Possiamo usare l'opzione “–progress” per visualizzare l'avanzamento della sincronizzazione.

# rsync -avz  --progress [email protected]:/usr   /opt 
[email protected]'s password: 
receiving file list ... 
44609 files to consider 
usr/ 
usr/tmp -> ../var/tmp 
usr/bin/ 
usr/bin/.fipscheck.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#1, to-check=44605/44609) 
usr/bin/.ssh.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#2, to-check=44604/44609) 
usr/bin/GET 
14519 100%  248.75kB/s    0:00:00 (xfer#3, to-check=44603/44609) 
usr/bin/HEAD 
14519 100%  232.44kB/s    0:00:00 (xfer#4, to-check=44602/44609)
............

Includi ed escludi opzioni in rsync

rsync ci consente di specificare il modello che vogliamo includere ed escludere file o directory durante la sincronizzazione.

# rsync -avz --include 'P*' --exclude '*' [email protected]:/var/lib/rpm/  /opt 
[email protected]'s password: 
receiving file list ... done 
./ 
Packages 
Providename 
Provideversion 
Pubkeys
sent 129 bytes  received 9395561 bytes  695977.04 bytes/sec 
total size is 28999680  speedup is 3.09

L'esempio precedente include solo i file o le directory che iniziano con "P" ed esclude tutti gli altri file. (usando rsync escludi '*' )

Elimina i file nella destinazione se i file non sono presenti nella sorgente

Con l'aiuto dell'opzione “–delete” in rsync, possiamo eliminare i file creati sulla destinazione se gli stessi file non sono presenti alla fonte.

# rsync -avz --delete [email protected]:/var/lib/rpm/  /opt

ESEMPIO:9 VISUALIZZARE I CAMBIAMENTI TRA SORGENTE E TARGET UTILIZZANDO L'OPZIONE “-I”

Visualizza le modifiche tra sorgente e target

È possibile visualizzare le modifiche tra i file di origine e di destinazione utilizzando l'opzione "-i". Ad esempio:

# rsync -avzi [email protected]:/var/lib/rpm/ /opt
 [email protected]'s password:
 receiving file list ... done
 >f+++++++ .rpm.lock
 >f+++++++ Basenames
 >f+++++++ Conflictname
 >f+++++++ Dirnames
 >f+++++++ Filedigests
 >f+++++++ Group
 >f+++++++ Installtid
 >f+++++++ Name
 >f+++++++ Obsoletename
 >f+++++++ Requirename
 >f+++++++ Requireversion
 >f+++++++ Sha1header
 >f+++++++ Sigmd5
 >f+++++++ Triggername
sent 328 bytes  received 3126214 bytes  297765.90 bytes/sec
total size is 35467264  speedup is 11.34

Limita la dimensione del file di trasferimento

Puoi forzare rsync a non trasferire file di dimensioni maggiori di una dimensione specifica utilizzando l'opzione "–max-size".

# rsync -avz --max-size='200k' [email protected]:/var/lib/rpm/ /opt

Il comando precedente fa in modo che rsync trasferisca solo i file inferiori o uguali a 200 K. Possiamo indicare M per megabyte e G per gigabyte.


Linux
  1. Comando wc Linux con esempi

  2. 25 Utili comandi find Esempi pratici in Linux

  3. Comando JQ in Linux con esempi

  4. Esempi pratici di comando rsync in Linux

  5. Esempi pratici del comando Unzip in Linux

12 Esempi pratici di In Command in Linux

Wait Command in Linux spiegato con esempi pratici

15 esempi pratici di comando Rsync in Linux

Tutorial comando trova Linux (con esempi)

lsof Command in Linux con esempi

Comando di comunicazione Linux con esempi