Cum să utilizați rsync pentru a crea copii de rezervă ale datelor pe Linux
rsync este un protocol construit pentru sistemele de tip Unix care oferă versatilitate incredibilă pentru backup și sincronizarea datelor. Poate fi folosit local pentru a face copii de siguranță ale fișierelor în directoare diferite sau poate fi configurat să se sincronizeze pe Internet cu alte gazde.
Poate fi folosit pe sistemele Windows, dar este disponibil numai prin intermediul unor porturi diferite (cum ar fi Cygwin), deci în acest mod vom vorbi despre instalarea pe Linux. În primul rând, trebuie să instalați / actualizați clientul rsync. Pe distribuțiile Red Hat, comanda este "yum install rsync", iar pe Debian este "sudo apt-get install rsync".
Comanda pe Red Hat / CentOS, după ce vă conectați ca root (rețineți că unele distribuții recente ale Red Hat suportă metoda sudo).
Comanda pe Debian / Ubuntu.
Folosind rsync pentru backup local
În prima parte a acestui tutorial, vom face copii de rezervă ale fișierelor de la Director1 la Director2. Ambele directoare se află pe același hard disk, dar acest lucru ar funcționa exact la fel în cazul în care directoarele au existat pe două unități diferite. Există mai multe moduri diferite prin care putem aborda acest lucru, în funcție de tipul de copii de rezervă pe care doriți să le configurați. În majoritatea scopurilor, este suficientă următoarea linie de cod:
$ rsync -av --delete / director1 / / director2 /
Codul de mai sus va sincroniza conținutul directorului 1 cu directorul 2 și nu va lăsa diferențe între cele două. Dacă rsync constată că directorul 2 are un fișier pe care directorul 1 nu îl va șterge. Dacă rsync găsește un fișier care a fost modificat, creat sau șters în Director1, acesta va reflecta aceleași modificări în Directory2.
Există o mulțime de switch-uri diferite pe care le puteți utiliza pentru rsync pentru ao personaliza în funcție de nevoile dvs. specifice. Iată ce codul menționat mai sus spune rsync de a face cu backup-uri:
1. -a = recursive (recuperare în directoare), link-uri (copierea simbolurilor ca simbolinks), permisiuni (conservați permisiunile), timpi (păstrarea timpilor de modificare), grup (conservare grup), proprietar păstrarea fișierelor speciale.
2. -v = verbose. Motivul pentru care cred că este mai important este așa încât să puteți vedea exact ceea ce rsync face backup. Gândiți-vă la acest lucru: Ce se întâmplă dacă unitatea dvs. de disc merge prost și începe să ștergeți fișierele fără cunoștințele dvs., apoi rulați scriptul rsync și împinge aceste modificări în copiile de rezervă, eliminând astfel toate instanțele unui fișier pe care nu ați dori să-l primiți scapa de?
3. -delete = Acest lucru îi spune lui rsync să ștergă orice fișiere care sunt în Director2 care nu sunt în Director1. Dacă alegeți să utilizați această opțiune, vă recomand să utilizați și opțiunile detaliate, din motivele menționate mai sus.
Folosind scriptul de mai sus, iată rezultatul generat prin utilizarea rsync pentru a copia directorul Directory1 în directorul 2. Rețineți că fără comutatorul verbose nu veți primi astfel de informații detaliate.
Imaginea de mai sus ne arată că fișierele File1.txt și File2.jpg au fost detectate fie ca fiind noi, fie că s-au schimbat în alt mod față de copiile existente în Directorul 2, și astfel au fost create copii de rezervă. Sfat tip Noob: Observați șuvițele de la capăt de la capătul directoarelor din comanda mea rsync - acestea sunt necesare, asigurați-vă că le rețineți.
Vom trece peste câteva comutatoare mai ușor spre sfârșitul acestui tutorial, dar amintiți-vă că pentru a vedea o listă completă puteți scrie "man rsync" și puteți vedea o listă completă de comutatoare de utilizat.
Acest lucru o acoperă în ceea ce privește copiile de rezervă locale. După cum puteți spune, rsync este foarte ușor de utilizat. Ea devine ceva mai complexă atunci când se utilizează pentru a sincroniza datele cu o gazdă externă pe Internet, dar vă vom arăta o modalitate simplă, rapidă și sigură de a face acest lucru.
Utilizarea rsync pentru backup-uri externe
rsync poate fi configurat în mai multe moduri pentru backup-uri externe, însă vom trece peste metoda cea mai practică (cea mai ușoară și cea mai sigură) de tunneling rsync prin SSH. Cele mai multe servere și chiar mulți clienți au deja SSH și pot fi utilizați pentru backup-urile dvs. rsync. Vă vom arăta procesul de a face ca o mașină Linux să facă backup la o altă rețea într-o rețea locală. Procesul ar fi exact același lucru dacă o gazdă ar fi ieșit pe Internet undeva, doar rețineți că portul 22 (sau orice port pe care îl configurați SSH) ar trebui să fie transmis pe orice echipament de rețea de pe partea serverului.
Pe server (computerul care va primi copiile de rezervă), asigurați-vă că sunt instalate SSH și rsync.
# yum -y instalați ssh rsync
# sudo apt-get instala ssh rsync
În afară de instalarea SSH și rsync pe server, tot ce trebuie într-adevăr să faceți este să configurați depozitele de pe server unde doriți ca fișierele să fie susținute și asigurați-vă că SSH este blocat. Asigurați-vă că utilizatorul pe care intenționați să îl utilizați are o parolă complexă și poate fi de asemenea o idee bună să comutați portul pe care îl ascultă SSH (implicit este 22).
Vom executa aceeași comandă pe care am făcut-o pentru a folosi rsync pe un computer local, dar vom include și adăugările necesare pentru tunneling rsync prin SSH către un server din rețeaua locală. Pentru ca utilizatorul "geek" sa se conecteze la "192.168.235.137" si folosind aceleasi switch-uri ca mai sus (-av -delete) vom rula urmatoarele:
$ rsync -a -delete -e ssh / director1 / [email protected]: / Directory2 /
Dacă aveți SSH de ascultare pe un alt port decât 22, va trebui să specificați numărul portului, cum ar fi în acest exemplu unde utilizez portul 12345:
$ rsync -a -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /
După cum puteți vedea din captura de ecran de mai sus, ieșirea dată atunci când se face backup în rețea este aproape la fel ca atunci când se face copia de rezervă la nivel local, singurul lucru care se schimbă este comanda pe care o utilizați. Observați, de asemenea, că a solicitat o parolă. Aceasta este pentru autentificare cu SSH. Puteți configura chei RSA pentru a sări peste acest proces, ceea ce va simplifica, de asemenea, automatizarea rsync.
Automatizarea copiilor de siguranță rsync
Cron poate fi folosit pe Linux pentru a automatiza executarea comenzilor, cum ar fi rsync. Folosind Cron, putem avea sistem de operare Linux care rulează backup-uri pe timp de noapte, ori de multe ori doriți ca acestea să ruleze.
Pentru a edita fișierul tabelului cron pentru utilizatorul în care sunteți conectat ca, rulați:
$ crontab -e
Va trebui să fiți familiarizați cu vi pentru a edita acest fișier. Introduceți "I" pentru inserare și apoi începeți să editați fișierul tabelului cron.
Cron utilizează următoarea sintaxă: minutul din oră, ora din zi, ziua lunii, luna anului, ziua săptămânii, comanda.
Ar putea fi puțin confuză la început, așa că lasă-mă să vă dau un exemplu. Următoarea comandă va executa comanda rsync în fiecare seară la ora 22:00:
0 22 * * * rsync -av --delete / director1 / / director2 /
Primul "0" specifică minutul de oră, iar "22" specifică ora 10 PM. Deoarece vrem ca această comandă să ruleze zilnic, vom lăsa restul câmpurilor cu asteriscuri și apoi vom lipi comanda rsync.
După ce ați terminat configurarea Cron, apăsați tasta de evacuare, apoi tastați ": wq" (fără ghilimele) și apăsați enter. Astfel veți salva modificările în vi.
Cron poate obține mai mult în profunzime decât acest lucru, dar pentru a continua, ar fi dincolo de sfera acestui tutorial. Majoritatea oamenilor vor doar o copie de rezervă săptămânală sau zilnică simplă, iar ceea ce am arătat că puteți realiza cu ușurință acest lucru. Pentru mai multe informații despre Cron, consultați paginile manuale.
Alte caracteristici utile
Un alt lucru util pe care îl puteți face este să puneți copii de rezervă într-un fișier zip. Va trebui să specificați unde doriți să fie plasat fișierul zip și apoi să rsync acel director în directorul de backup. De exemplu:
$ zip /ZipFiles/archive.zip / director1 / && rsync -av --delete / zipfiles / / director2 /
Comanda de mai sus ia fișierele din Director1, le pune în /Zipfilfiles/archive.zip și apoi rsyncs acel director în Directory2. Inițial, s-ar putea să credeți că această metodă s-ar dovedi ineficientă pentru backup-urile mari, având în vedere că fișierul zip se va schimba de fiecare dată când se face o modificare cea mai mică la un fișier. Cu toate acestea, rsync transferă numai datele modificate, deci dacă fișierul zip este de 10 GB și apoi adăugați un fișier text în directorul 1, rsync va ști că tot ce ați adăugat (chiar dacă este în zip) și transferați doar câteva kilobyte de date modificate.
Există câteva moduri diferite în care puteți cripta backupurile dvs. rsync. Cea mai ușoară metodă este să instalați criptarea pe hard disk-ul însuși (cu cel în care sunt salvate fișierele). O altă modalitate este de a cripta fișierele înainte de a le trimite la un server de la distanță (sau alt hard disk, indiferent de ce se întâmplă să copiați). Vom acoperi aceste metode în articolele ulterioare.
Indiferent de opțiunile și caracteristicile pe care le alegeți, rsync se dovedește a fi unul dintre cele mai eficiente și versatile instrumente de backup de până acum și chiar și un simplu script rsync vă poate ajuta să vă pierdeți datele.