rsync sau sincronizarea la distanță este un utilitar software pentru sisteme Unix-Like care sincronizează eficient fișierele și directoarele între două gazde sau mașini. Una este sursa sau local-host de la care fișierele vor fi sincronizate, cealaltă este remote-host, pe care va avea loc sincronizarea. Există, practic, două moduri în care rsync poate copia/sincroniza datele:
- Copierea/sincronizarea către/de la o altă gazdă prin orice shell la distanță, cum ar fi ssh , rsh .
- Copiere/Sincronizare prin demonul rsync folosind TCP.
Rsync este renumit pentru el algoritm de transfer delta , în care copiază doar diferențele dintre fișierele sursă prezente în local-host și fișierele existente în destinație sau gazda la distanță.
Exemplu:
rsync local-file user@remote-host:remote-file>
Ce se intampla aici:
Rsync va folosi mai întâi SSH pentru a se conecta causer>la remote-host și va cereuser's>parola. Odată conectat, va invoca rsync-ul gazdei de la distanță, iar apoi cele două programe vor determina ce părți ale fișierului local trebuie copiate, astfel încât fișierul de la distanță să se potrivească cu cel local. Vă rugăm să rețineți următorul comportament al rsync:
- Fișierele care nu există pe gazda la distanță sunt copiate.
- Fișierele care au fost actualizate vor fi sincronizate, rsync va copia numai părțile modificate ale fișierelor pe gazda de la distanță.
- fișierele care sunt exact aceleași nu sunt copiate pe gazda la distanță.
Sintaxa comenzii `rsync` în Linux
rsync [options] source [destination]>
Opțiune disponibil în comanda `rsync` în Linux
| Opțiuni | Descriere |
|---|---|
| a, –arhivă | Acest lucru este echivalent cu utilizarea -rlptgoD . Modul arhivare include toate opțiunile necesare, cum ar fi copierea fișierelor în mod recursiv, păstrarea aproape totul (cum ar fi link-uri simbolice, permisiuni pentru fișiere, proprietatea utilizatorului și grupului și marcajele de timp). |
| -v, –verbos | În mod implicit, rsync funcționează silențios. Utilizarea unei singure opțiuni -v oferă informații despre fișierele transferate și un rezumat la sfârșit. Adăugarea a două opțiuni -v oferă actualizări de stare privind transmisia delta și fișierele omise, împreună cu mai multe informații la sfârșit. Opțiuni multiple -v sunt de obicei utilizate pentru depanarea rsync. |
| -h, –format care poate fi citit de om | Ieșiri într-un format care poate fi citit de om. |
| -z, –comprimați | Comprimați datele fișierului în timpul transferului |
Exemple
Folosind `rsync` ca o comandă de listă
Dacă este specificată numai calea sursei, conținutul sursei este listat într-un format de ieșire similar culs -l>.
rsync foo/>
Comanda de mai sus va lista fișierele și directoarele prezente în director foo .
Ieșire:
profunzimea algoritmului prima căutare
Copiați/Sincronizați fișierele și directorul local
Dacă nici calea sursă, nici calea destinației nu specifică o gazdă la distanță, comenzile rsync se comportă ca o comandă de copiere.
rsync -avh foo/ bar/>
Comanda de mai sus va copia/sincroniza toate fișierele și directoarele prezente în directorfoo>la director bar . Dacă directorul de destinație nu este prezent (aicibar>), rsync creează automat unul și copiază toate datele din acesta.
Ieșire:
Rsync folosind ssh
Există două moduri diferite prin care rsync poate contacta un sistem de la distanță:
- Folosind un program remote-shell ca transport (cum ar fi
ssh>(Secure Shell) saursh>(Remote Shell)). - Contactarea unui demon rsync direct prin TCP.
Aici vom discuta despre rsync peste ssh.
rsync -avhze ssh /foo user@remote-host:/tmp/>
Pentru a specifica tipul de protocol care trebuie utilizat,-e>este folosită opțiunea.
Ieșire:
Rsync cu anumite permisiuni pentru fișiere
Dacă dorim să sincronizăm fișierele cu gazda locală sau la distanță cu permisiunile fișierelor în curs de modificare. Trebuie folosită următoarea comandă.
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>
Comanda de mai sus va sincroniza toate fișierele prezente în director /foo cu fișierele prezente în director /tmp înremote-host>cu toate fișierele deținute de USER cu grupul GROUP.
Ieșire:
saira banu actor
Notă: Theuser>șigroup>trebuie deja creat în gazdă la distanță.
Rsync cu --ignore-existing-files>
De asemenea, putem sări peste fișierele deja existente la destinație. Acest lucru poate fi folosit în general atunci când efectuăm copii de rezervă folosind –link-dest opțiunea, în timp ce continuați o rulare de rezervă care a fost întreruptă.
rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>
Deci, orice fișiere care nu există pe destinație vor fi copiate. Aici am ștersgeeksforgeeks>folder din directorfoo>, deci ar trebui să copieze numaigeeksforgeeks>director.
Notă: Acest lucru nu ignoră directoarele existente sau nu se va face nimic. Chiar dacă există unele modificări într-un fișier în gazda locală, acesta tot nu ar fi sincronizat dacă este prezent pe gazda la distanță.
Ieșire:
Afișați progresul în timpul transferului
Pentru a arăta progresul în timp ce transferăm datele de la gazdă locală la gazdă la distanță, putem folosi-–progress>opțiune.
rsync -avhe ssh --progress /foo user@remote-host:/tmp/>
Când transferul se termină pentru un anumit fișier, rsync scoate o linie de rezumat, așa cum se arată mai jos.
Ieșire:
În imaginea de mai sus, dacă ne uităm la fișier/foo/file2>, ne spune că
- Fișierul avea o lungime totală de 44 de octeți.
- Rata medie de transfer pentru întregul fișier a fost de 42,97 kiloocteți pe secundă în timpul celor 0:00:00 de secunde necesare pentru finalizare.
- A fost al doilea transfer din timpul curentului rsync sesiune.
- Mai sunt încă 10 fișiere de verificat de către gazda la distanță (pentru a vedea dacă sunt actualizate sau nu) din cele 13 fișiere totale din lista de fișiere.
Dacă vrem să copiem fișiere pe gazda la distanță care au fost actualizate mai recent pe sistemul de fișiere local. Se termina cu -Actualizați steag. Comportamentul este acum astfel:
- Fișierele care nu există pe gazda la distanță sunt copiate.
- Fișierele care există atât la nivel local, cât și la distanță, dar care au un marcaj de timp mai nou pe gazda locală sunt copiate în gazdă la distanță. (Dimpotrivă, fișierele care au un marcaj de timp mai vechi nu sunt copiate).
Aici, am făcut câteva modificări în fisier1 și fisierul2 , dar schimbările în fisierul2 au fost realizate recent. Deci numai fisierul2 va fi sincronizat.
rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>
Ieșire: 
Ștergeți automat fișierele de pe gazda locală după transferul cu succes
Acum, să presupunem că avem un server web și un server de rezervă și am creat o copie de rezervă zilnică și am sincronizat-o cu serverul nostru de rezervă și apoi nu dorim să păstrăm copia locală a copiei de rezervă pe serverul nostru web. Deci, în loc să-l ștergem manual după transferul cu succes, putem folosi--remove-source-files>flag pentru a șterge automat fișierele de pe serverul web.
rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>
Ieșire:
Notă: Aceasta va șterge numai fișierele și nu directoarele.
Ștergeți fișierele care au fost șterse de pe gazda locală
Dacă există unele fișiere care sunt șterse pe gazda locală și dorim ca acestea să fie actualizate și pe gazda la distanță, atunci trebuie să folosim--delete>opțiune.
c# conține șir
rsync -avhe ssh /foo --delete user@remote-host:/tmp/>
Ieșire:
Deci aici fisier1 , fisierul2 , fisierul3 au fost șterse pe gazda locală și, după cum se poate vedea, sunt actualizate și în gazda la distanță.
Notă: ` rsync` nu șterge automat fișierele pentru a sincroniza directoarele prezente pe ambele părți.
Efectuarea unei rulări uscate cu `rsync`
O rulare uscată face ca `rsync` să efectueze o rulare de probă care nu face nicio modificare și afișează aproape aceeași ieșire ca o rulare reală. Este folosit în general cu opțiunile -v, –verbose și/sau -i, –itemize-changes pentru a vedea ce ar face o comandă `rsync` înainte de a o rula efectiv.
rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>
Ieșire:
Concluzie
În acest articol am discutat despre comanda rsync în Linux, care este un instrument versatil și puternic pentru sincronizarea fișierelor și directoarelor între gazde sau mașini. Cu algoritmul său de transfer delta și diverse opțiuni, oferă sincronizare eficientă a datelor, capabilități de backup și gestionarea transferului de fișiere. Prin stăpânirea comenzii rsync, utilizatorii Linux pot asigura consistența fișierelor, pot optimiza transmisia datelor și își pot eficientiza fluxurile de lucru de gestionare a datelor.