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.