rsync o la sincronització remota és una utilitat de programari per a sistemes similars a Unix que sincronitza de manera eficient fitxers i directoris entre dos amfitrions o màquines. Un és l'origen o l'amfitrió local des del qual es sincronitzaran els fitxers, l'altre és l'amfitrió remot, on es farà la sincronització. Bàsicament hi ha dues maneres de fer-ho rsync pot copiar/sincronitzar dades:
- Còpia/sincronització cap a/des d'un altre host a través de qualsevol intèrpret d'ordres remot com ssh , rsh .
- Còpia/sincronització mitjançant el dimoni rsync mitjançant TCP.
Rsync és famós pel seu algorisme de transferència delta , en què només copia les diferències entre els fitxers font presents a l'amfitrió local i els fitxers existents a la destinació o l'amfitrió remot.
Exemple:
rsync local-file user@remote-host:remote-file>
Què passa aquí:
Rsync utilitzarà primer SSH per connectar-se com auser>a host remot i demanaràuser's>contrasenya. Un cop connectat, invocarà el rsync de l'amfitrió remot i, a continuació, els dos programes determinaran quines parts del fitxer local s'han de copiar perquè el fitxer remot coincideixi amb el local. Tingueu en compte el següent comportament de rsync:
- Es copien els fitxers que no existeixen a l'amfitrió remot.
- Els fitxers que s'hagin actualitzat se sincronitzaran, rsync només copiarà les parts canviades dels fitxers a l'amfitrió remot.
- els fitxers que són exactament iguals no es copien a l'amfitrió remot.
Sintaxi de l'ordre `rsync` a Linux
rsync [options] source [destination]>
Opció disponible a l'ordre `rsync` a Linux
| Opcions | Descripció |
|---|---|
| a, –arxiu | Això equival a utilitzar -rlptgoD . El mode d'arxiu inclou totes les opcions necessàries, com ara copiar fitxers de forma recursiva, preservant-ho gairebé tot (com ara enllaços simbòlics, permisos de fitxers, propietat d'usuaris i grups i marques de temps). |
| -v, -verbosa | Per defecte, rsync funciona en silenci. L'ús d'una única opció -v proporciona informació sobre els fitxers transferits i un resum al final. L'addició de dues opcions -v ofereix actualitzacions d'estat sobre la transmissió delta i els fitxers saltats, juntament amb més informació al final. Normalment s'utilitzen diverses opcions -v per depurar rsync. |
| -h, –format llegible pels humans | Sortides en un format llegible per l'home. |
| -z, –comprimir | Comprimiu les dades del fitxer durant la transferència data java actual |
Exemples
Utilitzant `rsync` com a comanda de llista
Si només s'especifica la ruta d'origen, el contingut de la font es mostra en un format de sortida similar als -l>.
rsync foo/>
L'ordre anterior enumerarà els fitxers i directoris presents al directori foo .
Sortida:
Copieu/sincronitzeu fitxers i directoris localment
Si ni la ruta d'origen ni la de destinació especifica un host remot, les ordres rsync es comporten com una ordre de còpia.
rsync -avh foo/ bar/>
L'ordre anterior copiarà/sincronitzarà tots els fitxers i directoris presents al directorifoo>al directori bar . Si el directori de destinació no està present (aquíbar>), rsync en crea un automàticament i copia totes les dades que hi ha.
Sortida:
Rsync utilitzant ssh
Hi ha dues maneres diferents perquè rsync contacti un sistema remot:
- Utilitzant un programa de shell remot com a transport (com ara
ssh>(Secure Shell) orsh>(Remote Shell)). - Contactar amb un dimoni rsync directament mitjançant TCP.
Aquí parlarem de rsync sobre ssh.
rsync -avhze ssh /foo user@remote-host:/tmp/>
Per especificar el tipus de protocol a utilitzar,-e>s'utilitza l'opció.
Sortida:
Rsync amb permisos de fitxers concrets
Si volem sincronitzar fitxers amb l'amfitrió local o remot amb els permisos dels fitxers que s'estan canviant. S'ha d'utilitzar l'ordre següent.
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>
L'ordre anterior sincronitzarà tots els fitxers presents al directori /foo amb els fitxers presents al directori /tmp en elremote-host>amb tots els fitxers propietat de USUARI amb el grup GRUP.
Sortida:
Nota: Eluser>igroup>ja s'ha de crear a l'amfitrió remot.
Rsync amb --ignore-existing-files>
També podem saltar els fitxers ja existents a la destinació. Això es pot utilitzar generalment quan estem realitzant còpies de seguretat mitjançant el –enllaç-dest opció, mentre continuava amb una còpia de seguretat que es va interrompre.
rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>
Així, tots els fitxers que no existeixin a la destinació es copiaran. Aquí he suprimit elgeeksforgeeks>carpeta del directorifoo>, de manera que només hauria de copiar elgeeksforgeeks>directori.
Nota: Això no ignora els directoris existents o no es farà res. Fins i tot si hi ha alguns canvis en un fitxer a l'amfitrió local, encara no es sincronitzarà si està present a l'amfitrió remot.
Sortida:
Mostra el progrés durant la transferència
Per mostrar el progrés mentre transferim les dades de l'amfitrió local a l'amfitrió remot, podem utilitzar-–progress>opció.
rsync -avhe ssh --progress /foo user@remote-host:/tmp/>
Quan es completa la transferència d'un fitxer concret, rsync genera una línia de resum com es mostra a continuació.
Sortida:
A la imatge de dalt, si mirem el fitxer/foo/file2>, ens ho diu
- El fitxer tenia una longitud total de 44 bytes.
- La velocitat mitjana de transferència per a tot el fitxer va ser de 42,97 kilobytes per segon durant els 0:00:00 segons que va trigar a completar-se.
- Va ser el segon trasllat durant el corrent rsync sessió.
- Hi ha 10 fitxers més per a l'amfitrió remot per comprovar (per veure si estan actualitzats o no) dels 13 fitxers totals de la llista de fitxers.
Si volem copiar fitxers a l'amfitrió remot que s'han actualitzat més recentment al sistema de fitxers local. Es fa amb – actualització bandera. El comportament ara és així:
- Es copien els fitxers que no existeixen a l'amfitrió remot.
- Els fitxers que existeixen tant al local com al remot però que tenen una marca de temps més recent a l'amfitrió local es copien a l'amfitrió remot. (Per contra, els fitxers que tenen una marca de temps més antiga no es copien).
Aquí he fet alguns canvis fitxer 1 i fitxer 2 , però els canvis en fitxer 2 es van fer recentment. Així només fitxer 2 es sincronitzarà.
rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>
Sortida: 
Suprimeix automàticament els fitxers de l'amfitrió local després de la transferència correcta
Ara, suposem que tenim un servidor web i un servidor de còpia de seguretat i hem creat una còpia de seguretat diària i l'hem sincronitzada amb el nostre servidor de còpia de seguretat i després no volem mantenir la còpia local de la còpia de seguretat al nostre servidor web. Per tant, en comptes d'eliminar-lo manualment després de la transferència correcta, podem utilitzar el--remove-source-files>marca per eliminar automàticament els fitxers del servidor web.
rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>
Sortida:
Nota: Això suprimirà només els fitxers i no els directoris.
Suprimeix els fitxers que s'han suprimit a l'amfitrió local
Si hi ha alguns fitxers que s'esborren a l'amfitrió local i volem que s'actualitzin també a l'amfitrió remot, hem d'utilitzar el--delete>opció.
rsync -avhe ssh /foo --delete user@remote-host:/tmp/>
Sortida:

eliminació de la llista de matrius
Així doncs, aquí fitxer 1 , fitxer 2 , fitxer 3 es van suprimir a l'amfitrió local i, com es pot veure, també s'actualitzen a l'amfitrió remot.
Nota: ` rsync` no elimina els fitxers automàticament per sincronitzar els directoris presents a ambdós costats.
Realitzant una carrera en sec amb `rsync`
Una execució en sec fa que `rsync' realitzi una execució de prova que no fa cap canvi i mostra gairebé la mateixa sortida que una execució real. Generalment s'utilitza amb les opcions -v, –verbose i/o -i, –itemize-changes per veure què faria una ordre `rsync` abans que l'executi realment.
rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>
Sortida:
Conclusió
En aquest article hem parlat de l'ordre rsync a Linux, que és una eina versàtil i potent per sincronitzar fitxers i directoris entre amfitrions o màquines. Amb el seu algorisme de transferència delta i diverses opcions, ofereix una sincronització de dades eficient, capacitats de còpia de seguretat i gestió de transferència de fitxers. En dominar l'ordre rsync, els usuaris de Linux poden garantir la coherència dels fitxers, optimitzar la transmissió de dades i racionalitzar els seus fluxos de treball de gestió de dades.