10 exemple utile ale comenzii Linux rsync

Publicat: 2022-10-28
Laptop Linux afișează un prompt bash
fatmawati achmad zaenuri/Shutterstock.com

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.

Cuprins

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.

Cum să faceți backup pentru sistemul dvs. Linux cu rsync
LEGATE Cum să faci o copie de rezervă a sistemului tău Linux cu rsync

Î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/ 

Copierea fișierelor în director diferit de pe același computer cu rsync

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

Listarea fișierelor din directorul de documente

Î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, rsync trebuie 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 de rsync . 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/ 

Copierea fișierelor în director diferit de pe același computer cu rsync

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/ 

Copierea directorului și a conținutului acestuia în director diferit de pe același computer cu rsync

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/ 

Listarea fișierelor copiate în directorul transferat

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 

Copierea fișierelor pe un alt hard disk din același computer

Privind pe celălalt hard disk ne arată că directorul și fișierele au fost copiate pe acesta.

 ls run/mount/drive2/project-files/ 

Listarea fișierelor care au fost copiate pe un alt hard disk din același computer

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 

Efectuarea unei rulări uscate a unei comenzi rsync

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 

Efectuarea unei rulări uscate a unei comenzi rsync care ar putea șterge fișiere

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 

Copierea fișierelor și eliminarea fișierelor din directorul de destinație care nu se află în directorul sursă

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 

Forțați rsync să șterge fișierele sursă după un transfer cu succes

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 

Un arbore de directoare gol după ce rsync a șters fișierele sursă

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ță.

Cum se creează și se instalează chei SSH din Shell Linux
LEGATE Cum să creați și să instalați chei SSH din Shell Linux

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 

Copierea fișierelor pe un computer la distanță prin SSH cu rsync

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

Folosind rsync pentru a copia fișierele selectate pe un alt hard disk de pe același computer

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 

Comprimarea fișierelor pe măsură ce sunt transferate cu opțiunea -z rsync

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 

Folosind opțiunea -P pentru a oferi statistici pentru transmiterea fiecărui fișier

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.

Transfer statistici pentru fiecare fișier transferat

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 

Statistici pentru transferul general rsync

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