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,
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 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