logo

Ordre rsync a Linux amb exemples

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 arassh>(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.
  • Actualitzeu el comandament només si hi ha una versió més recent al sistema de fitxers local:
    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: actualització de rsync

    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.