Početna » kako da » Vodič za početnike za sinkronizaciju podataka s Rsync

    Vodič za početnike za sinkronizaciju podataka s Rsync

    Rsync protokol može biti prilično jednostavan za korištenje za obične poslove sigurnosnog kopiranja / sinkronizacije, ali neke od naprednijih značajki mogu vas iznenaditi. U ovom članku pokazat ćemo kako čak i najveći skupljači podataka i entuzijasti za backup mogu koristiti rsync kao jedinstveno rješenje za sve njihove potrebe za zalihama podataka.

    Upozorenje: Advanced Geeks Only

    Ako sjedite i razmišljate: "Što je to rsync?" Ili "Koristim samo rsync za stvarno jednostavne zadatke", možda ćete htjeti provjeriti naš prethodni članak o tome kako koristiti rsync za izradu sigurnosnih kopija podataka na Linuxu, što daje uvod u rsync, vodi vas kroz instalaciju i prikazuje njegove osnovne funkcije. Nakon što ste čvrsto shvatili kako koristiti rsync (iskreno, to nije tako složeno) i zadovoljni su Linux terminalom, spremni ste za prelazak na ovaj napredni vodič.

    Pokretanje rsync u sustavu Windows

    Prvo, pripremimo čitače za Windows na istu stranicu kao i naši Linux gurui. Iako je rsync izgrađen za rad na sustavima sličnim Unixu, nema razloga da ga ne biste mogli koristiti jednako lako u sustavu Windows. Cygwin proizvodi divan Linux API koji možemo koristiti za pokretanje rsync-a, stoga idite na njihovu web-lokaciju i preuzmite 32-bitnu ili 64-bitnu verziju, ovisno o računalu.

    Instalacija je jednostavna; sve opcije možete zadržati na njihovim zadanim vrijednostima dok ne dođete do zaslona "Odaberi pakete".

    Sada trebate napraviti iste korake za Vim i SSH, ali paketi će izgledati malo drugačije kada ih odaberete, pa evo nekoliko screenshotova:

    Instaliranje Vim-a:

    Instaliranje SSH-a:

    Nakon što odaberete ta tri paketa, nastavite klikati sljedeći dok ne završite instalaciju. Zatim možete otvoriti Cygwin klikom na ikonu koju je instalacijski program postavio na radnu površinu.

    rsync Naredbe: Jednostavne do napredne

    Sada kada su korisnici Windowsa na istoj stranici, pogledajmo jednostavnu rsync naredbu i pokažimo kako korištenje nekih naprednih preklopnika može brzo učiniti složenim.

    Recimo da imate hrpu datoteka koje je potrebno sigurnosno kopirati - tko ne ovih dana? Priključite prijenosni tvrdi disk tako da možete sigurnosno kopirati datoteke računala i izdati sljedeću naredbu:

    rsync -a / home / geek / datoteke / / mnt / usb / datoteke /

    Ili, na način na koji će izgledati na Windows računalu s Cygwin-om:

    rsync -a / cygdrive / c / datoteke / / cygdrive / e / datoteke /

    Prilično jednostavno, i tada uistinu nema potrebe za korištenjem rsync-a, jer možete jednostavno povući i ispustiti datoteke. Međutim, ako vaš drugi tvrdi disk već ima neke datoteke i samo trebaju ažurirane verzije plus datoteke koje su stvorene od posljednje sinkronizacije, ova naredba je zgodna jer šalje nove podatke samo na tvrdi disk. S velikim datotekama, a posebno prijenosom datoteka preko interneta, to je velika stvar.

    Stvaranje sigurnosnih kopija datoteka na vanjskom tvrdom disku, a zatim držanje tvrdog diska na istom mjestu na kojem se nalazi vaše računalo, vrlo je loša zamisao, pa pogledajmo što je potrebno za početak slanja datoteka putem interneta na drugo računalo ( jedan koji ste iznajmili, član obitelji itd.).

    rsync -av - obriši -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

    Gornja naredba šalje vaše datoteke na drugo računalo s IP adresom 10.1.1.1. To bi izbrisalo nepotrebne datoteke s odredišta koje više ne postoji u izvornom direktoriju, izlazne datoteke koje se prenose tako da imate ideju o tome što se događa, a tunel rsync kroz SSH na portu 12345.

    -a -v -e - brisanje prekidači su neke od najosnovnijih i najčešće korištenih; već biste trebali dobro znati o njima ako čitate ovaj vodič. Idemo preko nekih drugih prekidača koji se ponekad ignoriraju, ali nevjerojatno korisno:

    --napredak - Ovaj prekidač omogućuje nam da vidimo napredak prijenosa svake datoteke. To je osobito korisno kod prijenosa velikih datoteka putem interneta, ali može proizvesti besmislenu količinu informacija kada se samo prenose male datoteke preko brze mreže.

    Naredba rsync s oznakom --napredak prekidač kao sigurnosna kopija je u tijeku:

    --parcijalan - Ovo je još jedan prekidač koji je osobito koristan pri prijenosu velikih datoteka putem interneta. Ako se rsync prekine iz bilo kojeg razloga usred prijenosa datoteka, djelomično prenesena datoteka se čuva u odredišnom direktoriju i prijenos se nastavlja tamo gdje je stao nakon ponovnog izvršavanja rsync naredbe. Prilikom prijenosa velikih datoteka putem interneta (recimo, nekoliko gigabajta), nema ništa gore od toga da imate nekoliko sekundi ispada s interneta, plavi ekran ili ljudsku grešku da biste prebacili prijenos datoteka i počeli ispočetka.

    -P - ovaj prekidač kombinira --napredak i --parcijalan, zato ga upotrijebite i to će učiniti vašu naredbu rsync malo urednijom.

    -z ili --oblog - Ovim preklopom rsync će komprimirati podatke o datotekama dok se prenosi, čime se smanjuje količina podataka koje treba poslati na odredište. To je zapravo prilično uobičajen prekidač, ali je daleko od bitnog, samo vam stvarno donosi korist od prijenosa između sporih veza, i ne čini ništa za sljedeće vrste datoteka: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h ili --svima čitljiv - Ako koristite --napredak prekidač, svakako ćete htjeti koristiti i ovu. To jest, osim ako ne želite pretvoriti bajtove u megabajte u letu. -h prekidač pretvara sve izlazne brojeve u ljudski čitljiv format, tako da zapravo možete smisliti količinu podataka koji se prenose.

    -n ili --testno pokretanje - Ovaj prekidač je neophodan da biste znali kada prvi put pišete rsync skriptu i testirate je. Provodi probnu vožnju, ali zapravo ne pravi nikakve promjene - potencijalne promjene se i dalje prikazuju kao normalne, tako da možete čitati sve i provjeriti izgleda li dobro prije nego što skriptu pretvorite u proizvodnju.

    -R ili --rođak - Ovaj se ključ mora koristiti ako odredišni direktorij već ne postoji. Ovu opciju koristit ćemo kasnije u ovom vodiču, tako da možemo napraviti direktorije na ciljnom stroju s vremenskim oznakama u imenima mapa.

    --isključuje-s - Ovaj se prekidač koristi za povezivanje na popis izuzetaka koji sadrži staze direktorija koje ne želite sigurnosno kopirati. Potrebna je obična tekstualna datoteka s mapom ili putem datoteke na svakoj liniji.

    --obuhvaćaju-iz - Slično --isključuje-s, ali povezuje se s datotekom koja sadrži direktorije i putanje datoteka koje želite pohraniti.

    --statistika - Zapravo nije važan prekidač na bilo koji način, ali ako ste administrator sustava, može vam biti dobro znati detaljne statistike svake sigurnosne kopije, samo da biste mogli pratiti količinu prometa koji se šalje putem mreže i takvih.

    --log-datoteku - To vam omogućuje slanje rsync izlaza u datoteku dnevnika. Mi to svakako preporučujemo za automatizirane sigurnosne kopije u kojima niste sami da biste čitali izlaz. U slobodno vrijeme uvijek prijavite datoteke dnevnika kako biste bili sigurni da sve radi ispravno. Također, to je ključni prekidač za korištenje sysadmina, tako da se ne pitate kako su vaše sigurnosne kopije propale dok ste napustili pripravnika.

    Pogledajmo našu naredbu rsync sada kada smo dodali još nekoliko prekidača:

    rsync -avzhP --obriši --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / početna / geek / files / [email protected]: / home / geek2 / datoteke /

    Naredba je još uvijek prilično jednostavna, ali još nismo stvorili pristojno rješenje za sigurnosno kopiranje. Iako su naše datoteke sada na dvije različite fizičke lokacije, ova sigurnosna kopija ne štiti nas od jednog od glavnih uzroka gubitka podataka: ljudska pogreška.

    Sigurnosne kopije snimaka

    Ako slučajno izbrišete datoteku, virus pokvari bilo koju od vaših datoteka, ili se nešto drugo dogodi pri čemu su vaše datoteke nepoželjno izmijenjene, a zatim pokrenete rsync skriptu za sigurnosno kopiranje, a vaše sigurnosne kopije podataka prepisuju se nepoželjnim promjenama. Kada se takva stvar dogodi (ne ako, ali kada), vaše rješenje za sigurnosno kopiranje nije učinilo ništa kako bi vas zaštitilo od gubitka podataka.

    Tvorac rsync je to shvatio i dodao --rezerva i --backup-dir da bi korisnici mogli izvoditi diferencijalne sigurnosne kopije. Prvi primjer na web stranici rsync prikazuje skriptu gdje se puna sigurnosna kopija izvodi svakih sedam dana, a zatim se promjene u tim datotekama svakodnevno čuvaju u zasebnim direktorijima. Problem s ovom metodom je u tome što ih morate oporaviti sedam puta. Štoviše, većina geekova izvodi svoje sigurnosne kopije nekoliko puta dnevno, tako da možete lako imati 20 + različitih backup direktorije u bilo kojem trenutku. Ne samo da oporavlja vaše datoteke sada bol, ali čak i samo gleda kroz vaše sigurnosne kopije podataka može biti vrlo dugotrajan - da bi morali znati posljednji put datoteku je promijenjen kako bi pronašli svoje najnovije kopije kopije. Povrh svega toga, neučinkovito je pokretati samo tjedne (ili čak rjeđe u nekim slučajevima) inkrementalne sigurnosne kopije.

    Sigurnosne kopije snimaka za spašavanje! Snapshot sigurnosne kopije nisu ništa više od inkrementalnih sigurnosnih kopija, ali koriste hardlinks da zadrže strukturu datoteke izvornog izvora. To vam može biti teško preokrenuti glavu, pa pogledajte na primjer.

    Pretvarajte se da imamo pokrenuta rezervna skripta koja automatski pohranjuje naše podatke svaka dva sata. Kad god rsync to učini, svaki backup imenuje u obliku: Backup-month-day-year-time.

    Tako ćemo na kraju tipičnog dana imati popis mapa u odredišnom direktoriju ovako:

    Kada prelazite bilo koji od tih direktorija, vidjeli biste svaku datoteku iz direktorija izvora točno onako kako je bila u to vrijeme. Ipak, ne bi bilo duplikata u bilo kojem od dva direktorija. rsync to postiže korištenjem hardlinking kroz --Veza-dest = DIR argument.

    Naravno, kako bismo imali ove lijepo i uredno imenovane imenike, morat ćemo malo poboljšati rsync skriptu. Pogledajmo što bi bilo potrebno da bi se postiglo rješenje za sigurnosno kopiranje kao što je ovaj, a zatim ćemo detaljnije objasniti skriptu:

    #! / Bin / bash

    #copy old time.txt u time2.txt

    da | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite old time.txt datoteku s novim vremenom

    echo 'date +'% F-% I% p ”'> ~ / backup / time.txt

    #make log datoteku

    echo “”> ~ / backup / rsync-'date + '% F-% I% p' '.

    #rsync naredba

    rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - brisanje - stati --log-datoteka = ~ / backup / rsync-'date + '% F-% I% p ”'. log - izuzmi-iz' ~ / exclude.txt '--link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ početna / geek / files / [email protected]: / home / geek2 / files / 'date +'% F-% I% p '/ /

    # ne zaboravite scp datoteku dnevnika i staviti je sa sigurnosnom kopijom

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log geek2 @ 10.1.1.1: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / kopija / time.txt'.log

    To bi bio tipičan snimak rsync skripte. U slučaju da vas negdje izgubimo, hajde da ga seciramo po dio:

    Prvi redak naše skripte kopira sadržaj time.txt u time2.txt. Da cijev potvrđuje da želimo prepisati datoteku. Zatim uzmemo trenutno vrijeme i stavimo ga u time.txt. Ove će datoteke kasnije biti korisne.

    Sljedeći redak čini datoteku dnevnika rsync, nazivajući je rsync-date.log (gdje je datum stvarni datum i vrijeme).

    Sada, složena rsync naredba koju smo upozorili na:

    -avzhPR, -e, --obriši, --stats, --log-file, --exclude-from, --link-dest - Samo prekidači o kojima smo ranije razgovarali; pomaknite se prema gore ako vam treba osvježenje.

    --chmod = Du = rwx, Dgo = rx, Fu = RW Fgo = r - To su dozvole za odredišni direktorij. Budući da ovaj direktorij činimo u sredini naše rsync skripte, moramo odrediti dozvole kako bi naš korisnik mogao pisati datoteke.

    Upotreba naredbi za datum i mačka

    Prelazimo preko svake upotrebe naredbi za datum i mačka unutar rsync naredbe, redoslijedom kojim se pojavljuju. Napomena: svjesni smo da postoje i drugi načini za postizanje ove funkcionalnosti, posebno uz korištenje deklariranja varijabli, ali za potrebe ovog vodiča odlučili smo koristiti ovu metodu.

    Datoteka dnevnika je navedena kao:

    ~ / backup / rsync-'date + '% F-% I% p' '

    Alternativno, mogli smo ga navesti kao:

    ~ / backup / rsync-'cat ~ / backup / time.txt'.log

    U svakom slučaju --log-datoteku naredba trebala bi biti u mogućnosti pronaći prethodno kreiranu datoteku dnevnika i pisati joj.

    Odredišna datoteka veze navedena je kao:

    --link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'

    To znači da --link-dest naredbi je dat direktorij prethodne sigurnosne kopije. Ako izvodimo sigurnosne kopije svaka dva sata, a to je 16:00 u vrijeme kada smo pokrenuli ovu skriptu, onda --link-dest naredba traži direktorij stvoren u 14:00 i prenosi samo podatke koji su se od tada promijenili (ako ih ima).

    Da ponovimo, time.txt se kopira u time2.txt na početku skripte, dakle --link-dest naredba može referencirati to vrijeme kasnije.

    Odredišni direktorij je naveden kao:

    [email protected]: / home / geek2 / files / 'date +'% F-% I% p ''

    Ova naredba jednostavno stavlja izvorne datoteke u direktorij koji ima naslov trenutnog datuma i vremena.

    Naposljetku, osiguravamo da se kopija zapisničke datoteke smjesti unutar sigurnosne kopije.

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log geek2 @ 10.1.1.1: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / kopija / time.txt'.log

    Koristimo sigurnu kopiju na portu 12345 da uzmemo rsync dnevnik i smjestimo ga u odgovarajući direktorij. Da biste odabrali ispravnu datoteku dnevnika i provjerili je li završena na pravom mjestu, datoteka time.txt mora biti upućena putem naredbe cat. Ako se pitate zašto smo se odlučili za cat.txt umjesto da koristimo samo naredbu date, to je zato što se puno vremena moglo dogoditi dok je rsync naredba bila pokrenuta, kako bismo bili sigurni da imamo pravo vrijeme, samo mačku tekst dokumenta koji smo ranije stvorili.

    Automatizacija

    Koristite Cron na Linuxu ili Task Scheduleru na Windowsu za automatizaciju rsync skripte. Jedna stvar koju morate paziti je da provjerite jeste li prekinuli sve trenutno pokrenute rsync procese prije nastavka novog. Čini se da planer zadataka automatski zatvara sve već pokrenute instance, ali za Linux morate biti malo kreativniji.

    Većina distribucija Linuxa može koristiti naredbu pkill, tako da na početak rsync skripte dodajte sljedeće:

    pkill -9 rsync

    Šifriranje

    Ne, još nismo završili. Napokon imamo fantastično (i besplatno!) Rješenje za izradu sigurnosnih kopija, ali sve naše datoteke još uvijek su podložne krađi. Nadam se da kopirate svoje datoteke na neko mjesto udaljeno stotinama milja. Bez obzira na to koliko je sigurno udaljeno mjesto, krađa i sjeckanje uvijek mogu biti problemi.

    U našim primjerima, tunelirali smo sav naš rsync promet putem SSH-a, što znači da su sve naše datoteke šifrirane dok su u tranzitu na svoje odredište. Međutim, moramo biti sigurni da je odredište jednako sigurno. Imajte na umu da rsync vaše podatke šifrira samo tijekom prijenosa, ali datoteke su širom otvorene kada dođu na odredište.

    Jedna od najboljih osobina rsync-a je da samo prenosi promjene u svakoj datoteci. Ako su sve vaše datoteke šifrirane i napravite jednu manju promjenu, cijela će se datoteka morati ponovno prenijeti kao rezultat enkripcije koja potpuno nasumice sve podatke nakon bilo kakve promjene.

    Zbog toga je najbolje / najlakše koristiti neku vrstu šifriranja diska, kao što je BitLocker za Windows ili dm-crypt za Linux. Na taj način, vaši podaci su zaštićeni u slučaju krađe, ali datoteke se mogu prenijeti pomoću rsync-a i vaše šifriranje neće ometati njegovu izvedbu. Postoje i druge opcije koje rade slično rsync-u ili čak implementiraju neki njegov oblik, kao što je Duplicity, ali im nedostaju neke od značajki koje rsync može ponuditi.

    Nakon što postavite sigurnosne kopije snimljenih fotografija na nekoj drugoj lokaciji i kriptirate izvorne i odredišne ​​tvrde diskove, prepustite se da savladate rsync i implementirate najsigurnije rješenje za backup podataka.