Sincronizarea folderelor cu RSYNC

În această publicație acoperim elementele de bază ale rsync, în pregătirea pentru o publicație viitoare care va acoperi backup-urile și utilizarea utilizării din rsync împreună cu Cronjobs pentru a automatiza procesul de rezervă. Din copia și sincronizarea fișierelor și a dosarelor locale, la utilizarea sa pentru a transfera informații între computere. Utilizarea sa ca serviciu atunci când SSH nu este disponibil a fost mutat în propria sa secțiune.

Teme
Principiile de bază ale RSYNC
Coping Fișiere și foldere locale – Liding cu spații în alb și Alte caractere rare
Actualizați conținutul unui dosar
Sincronizarea a două foldere cu RSYNC
Comprimarea fișierelor înainte de a le transfera fișiere între două sisteme la distanță
Excluderea fișierelor și a directoarelor
utilizând RSYNC Ca serviciu (mutat în propria secțiune)
unele parametri suplimentari RSYNC
Note de subsol

Principiile de bază ale RSYNC

rsync este un instrument de copiere foarte versatil care este inclus în aproape toate versiunile Linux. Acesta poate fi folosit ca un instrument de copiere avansat, permițându-ne să copiem fișiere la nivel local sau de la distanță. În plus, poate fi folosit ca instrument de backup, suportă crearea de backup-uri incrementale.

rsync are un faimos algoritm de delta-transfer care ne permite Pentru a transfera fișierele noi, precum și modificările recente ale fișierelor existente, ignorând fișierele care nu au fost modificate. În plus față de aceasta, comportamentul rsync poate fi personalizat, ajutându-ne automatizarea copiilor de rezervă, poate fi folosit și ca serviciu pentru a converti computerul pe un server și permiteți altor clienți rsync Conectați-vă la acesta.

În plus față de copierea fișierelor și a dosarelor locale, rsync ne permite să copiem Folosind ca SSH mediu (shell Secure), RSH (Shell de la distanță) și poate rula ca un serviciu pe un computer și permiteți alte computere să se conecteze, când rsync este folosit ca un serviciu Ascultați Portul 873.

Când folosim rsync ca un serviciu sau atunci când folosim RSH, datele trimise între computere nu călătorește criptate, prin urmare, dacă transferați Fișiere între două computere din aceeași rețea locală, acest lucru este util, dar acest lucru nu ar trebui să fie utilizat pentru a transfera fișiere în rețele nesigure, așa cum este Internet. În acest scop, SSH este cel mai bun de utilizat.

Acesta este motivul principal pentru care favor folosesc ssh pentru transferurile mele, în plus, datorită faptului că este sigur, multe servere au serviciul ssh disponibil . Dar utilizarea rsync ca serviciu pentru transferuri în conexiuni rapide, așa cum este de obicei cazul rețelelor locale, este util. Nu am serviciul RSH care rulează pe computerele mele, astfel încât să puteți găsi că eu favor ssh în exemple. Exemple utilizează SSH ca mijloc de transport pentru transferuri între computerele la distanță, dar într-o publicație separată acoperă utilizarea RSYNC ca serviciu.

Copierea fișierelor și a dosarelor locale

pentru a copia Conținutul unui dosar în altul, înlocuind fișierele din dosarul țintă, putem folosi:

iv id = „b6b7ea3a3ca”

notă că în Folder_origen Am adăugat o diagonală în cele din urmă, făcând acest lucru împiedică crearea unui dosar nou, dacă nu adăugăm diagonalul, atunci un folder nou numit_origen va fi creat în folder_destin. Prin urmare, dacă doriți să copiați conținutul unui dosar numit imagini dintr-un dosar numit imagini care există deja, trebuie să adăugați diagonală la sfârșit, altfel, va fi creat un dosar numit imagini în interiorul dosarului numit imagini pe care le specificăm ca destinație.

div>rsync -rtv origen/ destino/

Folder.

rsync -rtv origen destino/

parametrul înseamnă că veți face copia recursivă a dosarelor, adică va crea întreaga structură a dosarelor din interior Dosarul The_origen și va copia toate fișierele care sunt găsite în acestea.

parametrul -t face rsync Păstrați timpul de modificare a fișierelor care copiază din dosarul sursă.

Parametrul -v înseamnă că informațiile tipărite în timpul executării programului vor fi mult mai detaliate, putem folosi acest lucru pentru a vedea progresul comenzii.

Aceștia sunt parametrii pe care îi folosesc frecvent, deoarece, de obicei, susțin fișierele personale și acestea nu conțin lucruri cum ar fi legături simbolice, dar un alt parametru foarte util care poate fi utilizat cu rsync este parametrul –

rsync -av origen/ destino/

parametrul-aface, de asemenea, copia recursivă și păstrează timpul de modificare, dar, în plus, copiază legăturile simbolice pe care le găsiți ca link-uri simbolice, păstrați permisiunile, păstrați informațiile proprietarului și grupul de fișiere și păstrați fișierele de dispozitiv și fișierele speciale. Acest lucru este util dacă copiați directorul personal al unui utilizator sau dacă sunteți copierea dosarelor de sistem într-un alt loc.

Lediding cu spații goale și alte caractere rare

Putem scăpa de spațiu și personaje rare, precum și în bash, folosind \ înainte de orice spațiu gol și un caracter rar. În plus, putem folosi citate unice pentru a închide șirul de text:

rsync -rtv or\{ig\ en/ des\ ti\{no/
rsync -rtv 'or{ig en/' 'des ti{no/'

Actualizați conținutul unui dosar

Pentru a salva lățimea de bandă și timpul, putem evita copierea fișierelor pe care le avem deja în dosarul de destinație pe care nu l-ați modificat în dosarul sursă. Pentru a face acest lucru, adăugăm parametrul -u la rsync, aceasta va actualiza conținutul folderului de destinație pe baza dosarului sursă, acesta este locul în care intră algoritmul de transfer delta. Pentru a actualiza conținutul unui folder bazat pe conținutul unei alte utilizări:

Implicit, rsync să ia data ultimei modificări a fișierului și dimensiunea acestui lucru pentru a decide ce fișiere trebuie transferate și că fișierele pot fi ignorate, dar putem folosi în loc de această metodă un hash pentru a decide dacă Fișierul este diferit sau nu.

Pentru a face acest lucru trebuie să folosim parametrul -c, care va efectua un control în fișierele care urmează să fie transferate. Acest lucru va ignora orice fișier în care meciurile de control.

Dosarele de sincronizare, nu numai că trebuie să adăugăm fișierele noi în folderul sursă în dosarul de destinație, trebuie, de asemenea, să eliminați fișierele șterse din folderul sursă din dosarul de destinație. rsync ne permite să facem acest lucru cu parametrul dedelete, acest lucru utilizat împreună cu parametrul anterior -U care actualizează fișierele modificate ne permit să menținem două foldere în lățimea de bandă de economisire a sincroniei.

rsync -rtvu --delete carpeta_origen/ carpeta_destino/

Procesul de ștergere poate fi preluat înainte, în timpul și după transfer, putem controla la ce oră se întâmplă folosind oricare dintre acestea următorii parametri:

  • rsync Puteți căuta fișiere lipsă și le puteți șterge înainte de procesul de transfer, acesta este comportamentul implicit și poate fi ajustat cu --delete-before
  • iv id = ” Puteți căuta fișiere lipsă și le puteți șterge după ce transferul a fost finalizat, cu parametrul
  • poate șterge fișierele în timpul transferului, când se găsește un fișier lipsă, acesta este șters În acel moment, activăm acest comportament cu --delete-during
  • iv id = ” poate face transferul și găsirea fișierelor lipsă în timpul acestei Procesați, așteptați până când este terminat și a șters fișierele pe care le-ați găsit mai târziu, acest lucru poate fi realizat cu --delete-delay

De exemplu:

rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

comprimarea fișierelor înainte de a le transfera

pentru a salva o lățime de bandă și, de obicei, salvați ceva timp, putem Comprimați informațiile care sunt transferate, putem adăuga parametrul -z la rsync pentru a realiza acest lucru.

DIV>rsync -rvz carpeta_origen/ carpeta_destino/

Dacă transferăm un număr mare de fișiere despre o conexiune rapidă, rsync poate fi mai lent cu parametrul -z că, fără ea, deoarece va dura mai mult timp pentru a comprima fiecare fișier ca Timpul care ar fi luat pur și simplu pentru a transfera fișierele în dosarul The_Destino. Utilizați acest parametru dacă aveți o conexiune cu o viteză limitată între două computere sau dacă aveți nevoie pentru a salva lățimea de bandă.

Transferarea fișierelor între două sisteme la distanță

rsync Puteți copia fișiere și sincronizați un folder local cu un dosar de la distanță pe un sistem care are Un sistem care are un sistem de acces prin SSH, prin intermediul RSH sau care rulează rsync ca serviciu. Exemple aici utilizează SSH pentru transferul de fișiere, dar aceleași principii se aplică dacă doriți să faceți acest lucru cu rsync care rulează ca serviciu pe computerul la distanță, citiți prin rularea RSYnc ca serviciu atunci când ssh este Nu este disponibil mai jos pentru mai multe informații despre acest lucru.

Pentru a transfera fișiere între computerul local și un computer la distanță, trebuie să specificăm adresa computerului la distanță, poate fi un nume de domeniu, o adresă IP, Sau numele unui server pe care l-am salvat anterior în fișierul de configurare SSH (informații despre cum să faceți acest lucru poate fi văzut în definirea serverelor SSH), urmate de două puncte și dosarul pe care vrem să îl folosim pentru transfer. Rețineți că rsync Nu se poate transfera fișiere între două sisteme la distanță, doar un dosar local sau un folder de la distanță pot fi utilizate împreună cu un dosar local. Pentru a face acest lucru pe care îl folosim:

folder local în dosarul de la distanță, folosind un domeniu, o adresă IP sau un server definit în fișierul de configurare SSH:
rsync -rtvz carpeta_origen/ [email protected]:/ruta/a/carpeta_destino/
RSYNC -RTVZ Folder_origen / [email protected]/ruta/a/carpet_Destino/NSYNC -RRTVZ_ORIGEN_NAME / SERVERNAME_NAME: / ROUTE / A / FOLDER_DESTINE /

Folder de la distanță la dosarul local , folosind un domeniu, o adresă IP sau un server definit în fișierul de configurare SSH:
rsync -rtvz [email protected]:/ruta/a/carpeta_origen/ carpeta_destino/
RSYnc -rtvz utilizator @ xxx.xxx.xxx.xxx :/ Ruta / A / Carpet_origen / Folder_Destino /
RSYNC -RTVZ ServerName: / trasee / a / folder_origen / folder_destin /

Excluderea fișierelor și a directoarelor

Există multe cazuri în care avem nevoie Pentru a exclude anumite fișiere și directoare de la rsync, un caz comun este atunci când sincronizăm un proiect local cu un depozit la distanță sau chiar cu un loc de locuit, în acest caz am putea dori să excludem unele Directoare de dezvoltare și unele fișiere ascunse care vor fi transferate pe locul de trai. Excludeți fișierele se pot face cu --exclude urmat din directorul sau fișierul pe care vrem să îl excludem. Dosarul sursă sau folderul de destinație poate fi un director local sau un director de la distanță, așa cum este explicat în secțiunea anterioară.

rsync -rtv --exclude 'directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'archivo.txt' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/archivo.txt' carpeta_origen/ carpeta_destino/

Traseele sunt relative la dosarul din care numim rsync, cu excepția cazului în care începe cu o diagonală, caz în care traseul ar fi absolut.

alt mod Pentru a face acest lucru este de a crea un fișier cu lista de fișiere și de directoare pentru a exclude de la rsync, precum și modele (toate fișierele care se încadrează în modelul dat ar fi excluse, *. Txt ar exclude orice fișier cu această extensie), unul pe linie și să sunați la acest fișier cu --exclude-from urmat de fișierul pe care dorim să îl folosim pentru excluderea fișierelor. În primul rând, creăm și editați acest fișier în editorul nostru de text preferat, în acest exemplu folosesc Gedit, dar puteți utiliza Kate, Vim, Nano sau orice alt editor de text:

touch excluidos.txt
gedit excluidos.txt

În acest fișier putem adăuga următoarele:

directorio
direccion/relativa/a/directorio
archivo.txt
direccion/relativa/a/archivo.txt
/home/juan/directorio
/home/juan/archivo.txt
*.swp

și apoi apel

Pentru a șterge fișierele care au fost șterse din dosar de origine, așa cum a fost explicat în sincronizarea a două foldere cu RSYNC, rsync pot șterge fișierele care sunt excluse de la transfer, putem face acest lucru cu parametrul --delete-excluded, de exemplu:

rsync -rtv --exclude-from 'excluidos.txt' --delete-excluded carpeta_origen/ carpeta_destino/

Această comandă va face rsync recursive , va păstra timpul de modificare a dosarului sursă, crește verbalizarea, excludeți toate fișierele care se încadrează în modelele din fișierul ex Cluidos.txt, și ștergeți toate fișierele excluse dacă există în folderul de destinație.

Folosind RSYNC ca serviciu atunci când ssh nu este disponibil

acest lucru a fost mutat pe propria secțiune, folosind RSYNC ca serviciu

Unii parametri suplimentari ai RSYNC

-t Păstrează timpi de modificare a fișierelor care sunt transferate.
-q Șterge toate mesajele care nu sunt greșite, acest parametru este contrar parametrului -V care arată mult mai multe informații de transfer.
-d Copiați fișierele dintr-un director fără a utiliza recursion pentru a copia directoarele interne, spunând numai fișierele sunt transferate.
-l Copiați symlink-urile ca Symlinks
-L Copiați fișierele la care o indicație SymLink când găsiți o symlink.
-W Copiați fișierele întregi, deoarece atunci când vom folosi algoritmul de transfer delta, doar partea unui fișier actualizat este copiat, uneori acest lucru nu este dorit.
prezintă progresul fișierelor care sunt transferate.
-h Afișează informațiile care oferă rsync într-un format mai lizibil, Cantitățile sunt date în K’s, M, G și așa mai departe.

Note de picior

Numărul de opțiuni pe care rsync ne imense, putem defini exact ce fișiere vrem Transfer, care fișiere specifice dorim să comprimați, ce fișiere doriți să ștergeți în dosarul de destinație Dacă aceste fișiere există și ne putem ocupa de fișierele de sistem, pentru mai multe informații pe care le putem folosi man rsync și man rsyncd.conf

Lăsați informațiile care se referă la rezervă în afara acestei publicații, deoarece acest lucru va fi acoperit, împreună cu automatizarea procesului de backup, într-o Publicația viitoare.

Este posibil să se folosească rsync în ferestre prin utilizarea Cygwin, cu toate acestea nu am un computer Windows disponibil în acest moment (sau plan să o aibă în viitorul apropiat), deci, deși am făcut acest lucru, nu pot să-l public. Cu toate acestea, dacă utilizați rsync ca un serviciu Windows, trebuie să adăugați „scrict mode = false” la rsyncd.conf în module, acest Va face rsync Nu revizuiți permisiunile din dosarul secret, deoarece dacă ar fi făcut-o, aceasta ar eșua, deoarece nu ar fi configurat corespunzător (deoarece nu funcționează ca în Linux )

Această publicație ar putea fi actualizată dacă există ceva care trebuie corectat sau adăugat mai multe informații dacă văd necesar.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *