10 exemples pràctics de l'ordre Rsync a Linux


Rsync (sincronització remota) és l'ordre més utilitzada per copiar i sincronitzar fitxers i directoris de manera remota, així com localment en sistemes Linux/Unix.

Amb l'ajuda de l'ordre rsync, podeu copiar i sincronitzar les vostres dades de forma remota i local entre directoris, discs i xarxes, fer còpies de seguretat de dades i duplicar entre dues màquines Linux.

Aquest article explica 10 ús bàsic i avançat de l'ordre rsync per transferir els vostres fitxers de manera remota i local en màquines basades en Linux. No cal que siguis un usuari root per executar l'ordre rsync.

  • Copia i sincronitza fitxers de manera eficient cap a o des d'un sistema remot.
  • Admet la còpia d'enllaços, dispositius, propietaris, grups i permisos.
  • És més ràpid que scp (Copia segura) perquè rsync utilitza un protocol d'actualització remota que permet transferir només les diferències entre dos conjunts de fitxers. La primera vegada, copia tot el contingut d'un fitxer o un directori de l'origen a la destinació, però a partir de la propera vegada, copia només els blocs i bytes modificats a la destinació.
  • Rsync consumeix menys ample de banda, ja que utilitza mètodes de compressió i descompressió mentre envia i rep dades als dos extrems.

# rsync options source destination

  • -v : detallat
  • -r : copia les dades de manera recursiva (però no conserveu les marques de temps i els permisos durant la transferència de dades.
  • -a : mode d'arxiu, que permet copiar fitxers de forma recursiva i també conserva els enllaços simbòlics, els permisos de fitxers, les propietats d'usuaris i grups i les marques de temps.
  • -z : comprimeix les dades del fitxer.
  • -h : números llegibles per l'home, els números de sortida en un format llegible per l'home.

[També us pot agradar: Com sincronitzar fitxers/directoris mitjançant Rsync amb un port SSH no estàndard]

Instal·leu Rsync al sistema Linux

Podem instal·lar el paquet rsync amb l'ajuda de l'ordre següent a la vostra distribució Linux.

$ sudo apt-get install rsync   [On Debian/Ubuntu & Mint] 
$ pacman -S rsync              [On Arch Linux]
$ emerge sys-apps/rsync        [On Gentoo]
$ sudo yum install rsync       [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux]
$ sudo zypper install rsync    [On openSUSE]

1. Copieu/sincronitzeu fitxers i directoris localment

L'ordre següent sincronitzarà un sol fitxer en una màquina local d'una ubicació a una altra. Aquí, en aquest exemple, cal copiar o sincronitzar un nom de fitxer backup.tar a la carpeta /tmp/backups/.

 rsync -zvh backup.tar.gz /tmp/backups/

created directory /tmp/backups
backup.tar.gz

sent 224.54K bytes  received 70 bytes  449.21K bytes/sec
total size is 224.40K  speedup is 1.00

A l'exemple anterior, podeu veure que si la destinació encara no existeix, rsync crearà un directori automàticament per a la destinació.

L'ordre següent transferirà o sincronitzarà tots els fitxers d'un directori a un directori diferent de la mateixa màquina. Aquí, en aquest exemple, /root/rpmpkgs conté alguns fitxers de paquets rpm i voleu que aquest directori es copiï a la carpeta /tmp/backups/.

 rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08

2. Copieu/sincronitzeu fitxers i directoris a o des d'un servidor

Aquesta ordre sincronitzarà un directori d'una màquina local a una màquina remota. Per exemple, hi ha una carpeta al vostre ordinador local \rpmpkgs que conté alguns paquets RPM i voleu que el contingut del directori local s'enviï a un servidor remot, podeu utilitzar l'ordre següent.

 rsync -avzh /root/rpmpkgs [email :/root/

The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00

Aquesta ordre us ajudarà a sincronitzar un directori remot amb un directori local. En aquest exemple, un directori /root/rpmpkgs que es troba en un servidor remot s'està copiant al vostre ordinador local a /tmp/myrpms.

 rsync -avzh [email :/root/rpmpkgs /tmp/myrpms

[email 's password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07

3. Rsync per SSH

Amb rsync, podem utilitzar SSH (Secure Shell) per a la transferència de dades, utilitzant el protocol SSH mentre transferim les nostres dades, podeu assegurar-vos que les vostres dades es transfereixen en una connexió segura amb xifratge perquè ningú pugui llegir les vostres dades mentre es transfereixen per cable a Internet.

[ També us pot agradar: Com protegir i endurir el servidor OpenSSH ]

A més, quan fem servir rsync, hem de proporcionar la contrasenya d'usuari/arrel per dur a terme aquesta tasca en particular, de manera que l'ús de l'opció SSH enviarà els vostres inicis de sessió de manera xifrada perquè la vostra contrasenya estigui segura.

Per especificar un protocol amb rsync, heu de donar l'opció \-e amb el nom del protocol que voleu utilitzar. En aquest exemple, farem servir \ssh amb l'opció \-e i realitzarem transferència de dades.

 rsync -avzhe ssh [email :/root/anaconda-ks.cfg /tmp

[email 's password: 
receiving incremental file list
anaconda-ks.cfg

sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67
 rsync -avzhe ssh backup.tar.gz [email :/backups/

[email 's password: 
sending incremental file list
created directory /backups
backup.tar.gz

sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00

[També us pot agradar: Com utilitzar Rsync per sincronitzar fitxers nous o modificats/modificats a Linux]

4. Mostra el progrés durant la transferència de dades amb rsync

Per mostrar el progrés mentre transferim les dades d'una màquina a una altra màquina, podem utilitzar l'opció -progrés. Mostra els fitxers i el temps restant per completar la transferència.

 rsync -avzhe ssh --progress /root/rpmpkgs [email :/root/rpmpkgs

[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
          1.47M 100%   31.80MB/s    0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
        138.01K 100%    2.69MB/s    0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
          2.01M 100%   18.45MB/s    0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120.48K 100%    1.04MB/s    0:00:00 (xfr#4, to-chk=0/5)

sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00

5. Ús de les opcions –inclou i –exclou

Aquestes dues opcions ens permeten incloure i excloure fitxers especificant paràmetres amb aquesta opció, ens ajuda a especificar aquells fitxers o directoris que voleu incloure a la vostra sincronització i excloure fitxers i carpetes amb els quals no voleu ser transferits.

En aquest exemple, l'ordre rsync inclourà només aquells fitxers i directoris que comencen per R i exclou tots els altres fitxers i directoris.

 rsync -avze ssh --include 'R*' --exclude '*' [email 141:/var/lib/rpm/ /root/rpm

[email 's password: 
receiving incremental file list
created directory /root/rpm
./
Requirename

sent 61 bytes  received 273,074 bytes  60,696.67 bytes/sec
total size is 761,856  speedup is 2.79

6. Ús de l'opció –eliminar

Si un fitxer o directori no existeix a la font, però ja existeix a la destinació, és possible que vulgueu suprimir aquest fitxer o directori existent a la destinació durant la sincronització.

Podem utilitzar l'opció -eliminar per eliminar fitxers que no hi són al directori font.

L'origen i l'objectiu estan sincronitzats. Ara creeu un nou fitxer test.txt a l'objectiu.

 cd /root/rpm/
 touch test.txt
 rsync -avz --delete [email :/var/lib/rpm/ /root/rpm/

[email 's password: 
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003

sent 445 bytes  received 18,543,954 bytes  2,472,586.53 bytes/sec
total size is 71,151,616  speedup is 3.84

Target té el nou fitxer anomenat test.txt, quan es sincronitzava amb l'origen amb l'opció '–suprimir', va eliminar el fitxer test.txt.

7. Definiu la mida màxima dels fitxers a transferir

Podeu especificar la mida màxima del fitxer que cal transferir o sincronitzar. Podeu fer-ho amb l'opció \–max-size. Aquí, en aquest exemple, la mida màxima del fitxer és de 200 k, de manera que aquesta ordre transferirà només aquells fitxers que siguin iguals o inferiors a 200 k.

 rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email :/root/tmprpm

[email 's password: 
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002

sent 129.52K bytes  received 396 bytes  28.87K bytes/sec
total size is 71.15M  speedup is 547.66

8. Suprimeix automàticament els fitxers d'origen després de la transferència correcta

Ara, suposem que teniu el servidor web principal i un servidor de còpia de seguretat de dades, heu creat una còpia de seguretat diària i l'heu sincronitzat amb el vostre servidor de còpia de seguretat, ara no voleu mantenir aquesta còpia local de còpia de seguretat al vostre servidor web.

Aleshores, esperareu que s'acabi la transferència i després suprimiu aquest fitxer de còpia de seguretat local manualment? Es clar que no. Aquesta supressió automàtica es pot fer mitjançant l'opció -remove-source-files.

 rsync --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 795 bytes  received 2.33K bytes  894.29 bytes/sec
total size is 267.30K  speedup is 85.40

 ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

9. Feu una carrera en sec amb rsync

Si sou un principiant que utilitzeu rsync i no sabeu exactament què farà la vostra comanda. Rsync realment podria desordenar les coses de la carpeta de destinació i després fer una desfer pot ser una feina tediosa.

[ També us pot agradar: Com sincronitzar dos servidors web/llocs web Apache mitjançant Rsync ]

L'ús d'aquesta opció no farà cap canvi als fitxers i mostra la sortida de l'ordre, si la sortida mostra exactament el mateix que voleu fer, podeu eliminar l'opció –dry-run de la vostra comanda i executar-la al terminal.

 rsync --dry-run --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 50 bytes  received 19 bytes  19.71 bytes/sec
total size is 267.30K  speedup is 3,873.97 (DRY RUN)

10. Rsync Estableix el límit d'amplada de banda i transfereix fitxers

Podeu establir el límit d'ample de banda mentre transferiu dades d'una màquina a una altra amb l'ajuda de l'opció –bwlimit. Aquesta opció ens ajuda a limitar l'amplada de banda d'E/S.

 rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  [email :/root/tmprpm/
[email 's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

A més, de manera predeterminada, rsync només sincronitza els blocs i bytes canviats, si voleu sincronitzar explícitament tot el fitxer, feu servir l'opció -W amb ell.

 rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10

Això és tot amb rsync ara, podeu veure les pàgines de manual per obtenir més opcions. Mantingueu-vos connectat amb Tecmint per obtenir tutorials més emocionants i interessants en el futur. Deixeu els vostres comentaris i suggeriments.