10 exemple utile ale comenzii Linux rsync
Publicat: 2022-10-28
 Comanda Linux rsync este un instrument puternic de copiere a fișierelor și de sincronizare a folderelor. Iată zece cazuri de utilizare obișnuite pe care le veți putea folosi pe propriile sisteme.
Instrumentul rsync
 Instrumentul rsync copiază fișierele și directoarele între două computere. Utilizează un algoritm sofisticat care scanează arbori de directoare pentru a găsi fișiere pe computerul sursă care nu există pe computerul de destinație. Aceste fișiere sunt transmise computerului de destinație. Ceea ce face ca rync să fie atât de inteligent este că își poate da seama ce bucăți de fișiere existente au fost modificate și trimite doar porțiunile modificate .
 Puteți utiliza rsync pentru a copia fișiere într-o locație diferită de pe hard disk, pe un alt hard disk din același computer, pe o unitate USB conectată extern sau în orice altă locație accesibilă în rețea. 
 În plus, rsync poate păstra opțional link-urile simbolice, link-urile hard și metadatele fișierelor, cum ar fi proprietatea fișierelor, permisiunile și timpii de acces. Pentru a susține toată această funcționalitate, rsync are multe opțiuni, iar rezolvarea lor necesită timp. Am adunat aceste 10 exemple pentru a vă ajuta să începeți. Am scris deja despre realizarea de copii de siguranță cu rsync , așa că ne concentrăm aici pe alte utilizări.
 Pentru toate opțiunile sale, structura unei comenzi rsync este simplă. Trebuie să furnizăm sursa, destinația și opțiunile pe care dorim să le folosim. Probabil veți descoperi că rsync este deja instalat pe computerul dvs. Linux - a fost, pe toate mașinile noastre de testare - dar dacă nu este, va fi cu siguranță în depozitele distribuției dvs.
1. Copiați fișierele într-un alt director
 Iată un exemplu simplu pentru a ne da drumul. Vom copia fișierele din directorul „fișiere-proiect” în directorul „Documente”. Folosim două opțiuni, opțiunea -a (arhivă) și opțiunea -v (verbosă). Opțiunea verbose îi spune lui rsync să explice ce face în timp ce o face. Opțiunea de archive păstrează proprietatea fișierului și alte câteva elemente pe care le vom analiza în curând.
 Formatul comenzii este options source-location destination-location .
rsync -av /home/dave/project-files/ /home/dave/Documents/

 Utilizarea ls în folderul „Documente” arată că fișierele au fost copiate. 

 În timp ce rsync funcționează, fișierele sunt listate pe măsură ce sunt copiate. Ni se spune:
- Numărul de octeți care sunt trimiși.
-  Numărul de octeți primiți. Înainte ca transferul de fișiere să aibă loc, rsynctrebuie să stabilească ce fișiere trebuie transferate. Pentru a face acest lucru, unele informații despre fișierele de pe destinație trebuie să fie preluate dersync. Aceste informații sunt conținute în octeții primiți.
- Viteza de transfer.
- Dimensiunea totală a fișierelor copiate.
- „Accelerarea”. Acesta este raportul dintre dimensiunea totală împărțită la suma octeților trimiși și primiți. Cu cât acest număr este mai mare, cu atât transferul este mai eficient.
 Am modificat fișierul text din directorul sursă și am repetat comanda rsync .
rsync -av /home/dave/project-files/ /home/dave/Documents/

De data aceasta, singurul fișier care trebuie actualizat este fișierul text pe care l-am modificat. Cifra de accelerare este acum 30.850. Acesta este cât de mult mai eficient este să copiați porțiunea modificată a acelui fișier unic decât să copiați toate fișierele.
 Opțiunea -a (arhivă) reprezintă de fapt o colecție de alte opțiuni. Este același lucru cu utilizarea tuturor acestor opțiuni:
- r : Lucrează recursiv prin arbori de directoare din directorul sursă și copiază-le în directorul de destinație, creându-le dacă nu există deja acolo.
- l : Copiați legăturile simbolice ca legături simbolice.
- p : Păstrează permisiunile pentru fișiere.
- t : Păstrați timpii de modificare a fișierelor.
- g : Păstrați permisiunile de grup.
- o : Păstrați proprietatea fișierului.
- D : Copiați fișierele speciale și fișierele dispozitivului. Fișierele speciale pot fi elemente centrate pe comunicare care sunt tratate ca fișiere, cum ar fi prize și conducte first-in, first-out (fifos). Fișierele dispozitivului sunt fișiere speciale care oferă acces la dispozitive și pseudo-dispozitive.
 Aceasta este o combinație atât de frecvent utilizată încât rsync oferă opțiunea -a (arhivă) ca o modalitate scurtă de a le invoca pe toate.
2. Copiați un director într-un alt director
 Dacă vă uitați la comanda anterioară rsync , veți vedea o bară oblică „/” pe calea fișierului din directorul sursă. Acest lucru este semnificativ. Îi spune lui rsync să copieze conținutul directorului. Dacă nu furnizați bara oblică, rsync va copia directorul și conținutul acestuia.
rsync -av /home/dave/project-files /home/dave/Documents/

De data aceasta, numele directorului este adăugat la numele fișierului, așa cum sunt listate. Dacă ne uităm în directorul de destinație, vom vedea că folderul sursă a fost copiat cu fișierele din interior.
ls documente/
ls Documente/fișiere-proiect/

3. Copiați un director pe o altă unitate
Copierea fișierelor în altă locație de pe același hard disk nu vă oferă protecție împotriva defecțiunii unității. Dacă acea unitate renunță la fantoma, ați pierdut copiile sursă și destinație ale acelor fișiere. Copierea acestora pe un alt hard disk este o modalitate mult mai robustă de a vă proteja datele. Tot ce trebuie să facem este să furnizăm calea corectă către unitatea de destinație.
rsync -av /home/dave/project-files /run/mount/drive2

Privind pe celălalt hard disk ne arată că directorul și fișierele au fost copiate pe acesta.
ls run/mount/drive2/project-files/

RELATE: Ce trebuie să faceți când hard diskul se defectează
4. Faceți mai întâi o alergare uscată
 Înainte de a ne uita la modul în care rsync poate șterge în mod util fișierele pentru noi, haideți să vedem cum putem face rsync să efectueze o funcționare uscată.
 Într-o funcționare uscată, rsync trece prin mișcările de a efectua acțiunile pe care le-am cerut, dar de fapt nu le face. Raportează ce s-ar fi întâmplat dacă comanda ar fi fost executată. În acest fel, ne putem asigura că comanda face exact ceea ce ne așteptăm.
 Pentru a forța o rulare uscată folosim opțiunea --dry-run .
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2


 Fișierele care ar fi fost copiate sunt listate pentru noi și primim statisticile obișnuite, urmate de mesajul (DRY RUN) ca să știm că nimic nu a avut loc.
5. Ștergerea fișierelor din directorul de destinație
 Opțiunea --delete îi spune lui rsync să ștergă fișierele și directoarele din directorul de destinație care nu sunt în directorul sursă. Aceasta înseamnă că directorul de destinație va fi o copie exactă a directorului sursă. Vom fi prudenți și vom folosi mai întâi opțiunea --dry-run .
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2

 Suntem informați că două fișiere vor fi șterse. Dacă suntem siguri că nu ne pasă că vor fi șterse, putem elimina opțiunea --dry-run și putem executa comanda pe bune.
rsync -av --delete /home/dave/geocoder /run/mount/drive2

De data aceasta, conținutul directoarelor este sincronizat și cele două fișiere suplimentare sunt șterse.
6. Ștergerea fișierelor sursă
 Puteți alege să ștergeți fișierele sursă după un transfer cu succes , făcând rsync să funcționeze mai mult ca o mișcare decât o copie. Dacă transferul nu a avut succes, fișierele sursă nu sunt șterse. Opțiunea pe care trebuie să o folosim este --remove-source-files .
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2

 Rețineți că fișierele pot fi șterse chiar dacă nu sunt transferate fișiere. Asta pentru că dacă rsync verifică și toate fișierele sunt deja în directorul de destinație și nu are nimic de făcut pentru rsync , rsync consideră că este un transfer de succes.
 De asemenea, rsync șterge doar fișierele din directorul sursă. Nu șterge directorul sursă și nici subdirectoarele, ci doar fișierele din ele. Putem vedea acest lucru folosind opțiunea -R (recursivă) cu ls , în directorul sursă.
ls -R geocoder

7. Copiați fișierele pe un computer la distanță
 Pentru a sincroniza folderele cu un computer la distanță, rsync trebuie să fie instalat pe ambele computere. Configurați comunicarea SSH între cele două computere înainte de a încerca să utilizați rsync la computerul de la distanță. 
 Pentru ca rsync să funcționeze, trebuie să vă puteți conecta de la distanță ca utilizator obișnuit pe computerul de la distanță. Nu contează dacă utilizați un ID și o parolă pentru a vă conecta sau dacă ați configurat chei SSH pentru acces sigur fără parolă, dar dacă nu vă puteți conecta ca utilizator, atunci rsync nu va funcționa fie.
 Dacă vă conectați cu o parolă, rsync vă va solicita parola. Dacă utilizați chei SSH pentru a vă conecta, procesul este fără probleme.
 Singurul lucru suplimentar pe care trebuie să-l faceți este să adăugați numele contului de utilizator și adresa IP a computerului de la distanță la începutul căii fișierului de destinație. Utilizați semnul „ @ ” pentru a separa numele de utilizator de numele computerului sau adresa IP și două puncte „ : ” pentru a separa numele computerului sau adresa IP de calea directorului.
În rețeaua noastră de testare, aceste două comenzi sunt echivalente.
rsync -av /home/dave/geocoder [email protected]:/home/dave/Descărcări
rsync -av /home/dave/geocoder [email protected]:/home/dave/Descărcări

Primim aceleași informații raportate la noi ca și când copiam fișiere local.
8. Includeți sau excludeți fișiere sau directoare
 Este posibil să aveți fișiere și directoare în directorul sursă pe care nu doriți să le copiați pe computerul de destinație. Le puteți exclude folosind opțiunea --exclude . Într-un mod similar, puteți alege să includeți anumite fișiere și directoare cu opțiunea --include .
 Particularitatea este că, dacă utilizați opțiunea --include pe cont propriu, toate fișierele sunt copiate, în mod normal, inclusiv fișierele incluse în mod specific. Pentru a copia numai fișierele incluse, trebuie să --exclude orice altceva.
 Puteți folosi câte opțiuni --include și --exclude în comandă doriți, dar asigurați-vă că puneți opțiunile --include înaintea opțiunilor --exclude . De asemenea, asigurați-vă că aveți o bară oblică pe calea fișierului sursă.
Această comandă copiază numai fișierele de cod sursă C și fișierele de date CSV pe computerul de destinație.
 rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder 
Singurele fișiere copiate sunt cele pe care le-am inclus în mod special.
9. Comprimați fișierele în transfer
 Opțiunea -z (comprimare) face ca rsync să comprima fișierele transferate. Totuși, nu sunt stocate ca fișiere comprimate pe computerul de destinație, sunt comprimate doar în timpul transferului în sine. Acest lucru poate accelera transferurile îndelungate.
rsync -avz /home/dave/geocoder /run/mount/drive2

10. Monitorizarea progresului
Apropo de transferuri îndelungate, putem adăuga câteva statistici pentru a putea vedea progresul transferului.
 Opțiunea -P (parțial, progres) adaugă de fapt două opțiuni, --partial și --progress . Opțiunea --partial îi spune lui rsync să păstreze fișierele parțial transferate dacă transferul eșuează. Acest lucru economisește timp atunci când transferul este repornit.
 Opțiunea --progress tipărește, pentru fiecare fișier, datele transferate în octeți și ca procent, viteza de transfer, timpul necesar, numărul fișierului transferat și numărul fișierelor rămase.
rsync -aP /home/dave/geocoder /run/mount/drive2

 Ieșirea defilează destul de repede și este dificil de citit. Puteți îmbunătăți ușor lucrurile eliminând opțiunea -v (verboză) din comandă. Chiar și atunci, este încă greu de citit pe măsură ce trece. 

Este adesea mai util să monitorizați progresul transferului general. Puteți face acest lucru cu opțiunea –info și trecându-i „progress2” ca parametru.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2

Acest lucru oferă un raport de progres care este de fapt util.
Ca cp pe steroizi
 Comanda rsync este rapidă, flexibilă și merită timpul necesar pentru a vă familiariza cu ea. Forma de bază a unei comenzi rsync cu opțiunile -av , directorul sursă și directorul destinație nu este deloc greu de reținut.
Pentru multe cazuri de utilizare, asta este tot ce ai nevoie. Fii confortabil cu asta și restul va veni ușor.
LEGATE: Ghidul pentru non-începători pentru sincronizarea datelor cu Rsync


