17Aug

Vodič za nepristupnik za sinkronizaciju podataka s Rsyncom

click fraud protection

Rsync protokol može biti prilično jednostavan za korištenje za obične backup / sinkronizacijske poslove, no neke od njegovih naprednijih značajki mogu vas iznenaditi. U ovom ćemo članku pokazati kako čak i najveći korisnici podataka i rezervni entuzijasti mogu koristiti rsync kao jedno rješenje za sve svoje potrebe za redundantnim podacima.

Upozorenje: Napredni Geeks samo

Ako sjedite tamo razmišljajući "Što je pakao rsync?" Ili "Koristim samo rsync za vrlo jednostavne zadatke", možda biste željeli pogledati naš prethodni članak o tome kako koristiti rsync za backupvaši podaci o Linuxu, koji daju uvod u rsync, vode vas kroz instalaciju i prikazuju njegove osnovne funkcije. Nakon što čvrsto shvatite kako koristiti rsync( iskreno, to nije tako složeno) i udobni su s Linux terminalom, spremni ste se prebaciti na ovaj napredni vodič.

Pokretanje rsynca na sustavu Windows

Prvo, neka se naši čitači sustava Windows na istoj stranici kao i naš Linux gurue. Iako je rsync izgrađen za rad na Unix-sličnim sustavima, nema razloga da ga ne biste trebali koristiti jednako lako na Windowsu. Cygwin proizvodi divan Linux API koji možemo koristiti za pokretanje rsync-a, pa prijeđite na njihovu web stranicu i preuzmite 32-bitnu ili 64-bitnu verziju, ovisno o računalu.

instagram viewer

Instalacija je jednostavna;sve opcije možete zadržati prema zadanim vrijednostima sve dok ne dođete do zaslona "Odabir paketa".

Sada morate učiniti iste korake za Vim i SSH, ali paketi će izgledati malo drugačije kada idete da ih odaberete, pa evo nekoliko screenshotova:

Instaliranje Vim:

Instaliranje SSH:

Nakon što steodabrali ta tri paketa, nastavite kliknuti sve dok ne dovršite instalaciju. Zatim možete otvoriti Cygwin klikom na ikonu koju instalacijski program stavlja na radnu površinu.

naredbe rsync: Jednostavno i napredno

Sada kada su korisnici sustava Windows na istoj stranici, pogledajmo jednostavnu naredbu rsync i pokažimo kako korištenje nekih naprednih preklopnika brzo može učiniti složenima. Pretpostavimo da imate hrpu datoteka koje treba 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/files/ /mnt/usb/files/

Ili način na koji će izgledati na Windows računalu s Cygwinom:

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Prilično jednostavan iu toj točki nema potrebe za korištenjem rsynca, budući da jednostavno možete povući i ispustiti datoteke. Međutim, ako vaš drugi tvrdi disk već ima neke datoteke i samo treba ažurirane verzije i datoteke stvorene od zadnje sinkronizacije, ta naredba je praktična jer samo šalje nove podatke na tvrdi disk. S velikim datotekama, a posebno prijenosom datoteka preko interneta, to je velika stvar.

Sigurnosno kopiranje datoteka na vanjski tvrdi disk, a zatim čuvanje tvrdog diska na istom mjestu kao i vaše računalo je vrlo loša ideja, pa pogledajte što će zahtijevati početak slanja vaših datoteka preko interneta na drugo računalo(jednom koju ste unajmili, člana obitelji, itd.).

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

Gornja naredba poslati će vaše datoteke na drugo računalo s IP adresom 10.1.1.1.Izbrisat će izvanredne datoteke s odredišta koje više ne postoje u izvornom direktoriju, emitiranje naziva datoteka koje se prenose, tako da imate ideju o tome što se događa i tunel rsync putem SSH na priključku 12345.

A-v -e -- prekidači za otključavanje su neki od najosnovnijih i najčešće korištenih;već biste trebali znati mnogo o njima ako čitate ovaj vodič.Idemo preko nekih drugih prekidača koji se ponekad zanemaruju, ali nevjerojatno korisni:

- progres - ova namjena omogućuje nam da vidimo napredak prijenosa svake datoteke. To je osobito korisno prilikom prijenosa velikih datoteka preko interneta, ali može proizvesti besmislenu količinu informacija kada prenosi male datoteke na brzu mrežu.

U tijeku je naredba rsync s prekidačem --generator kao sigurnosna kopija:

- partial - Ovo je još jedan prekidač koji je posebno koristan prilikom prijenosa velikih datoteka preko interneta. Ako se rsync zbog bilo kojeg razloga prekine u sredini prijenosa datoteka, djelomično prenesena datoteka čuva se u odredišnom direktoriju i prijenos se nastavlja tamo gdje je prestala nakon ponovnog izvršavanja naredbe rsync. Pri prijenosu velikih datoteka preko interneta( recimo, nekoliko gigabajta), nema ničeg lošije od nekoliko sekundi prekida interneta, plavog zaslona ili ljudske pogreške u prebacivanju vašeg prijenosa datoteka i ponovnog pokretanja.

-P - ovaj prekidač kombinira - progresivno i - parcijalno, pa ga umjesto toga koristite i to će vašu rsync naredbu učiniti malo skromnijom.

-z ili --compress - Ovaj prekidač će podatke rsync komprimirati tijekom prijenosa, čime se smanjuje količina podataka koja se treba poslati na odredište. To je zapravo prilično uobičajeni prekidač, ali je daleko od bitne, samo vam doista korisno za prijenose između sporih veza i ne radi 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 - ljudski čitljivi - Ako koristite - prekidač za napredak, svakako biste htjeli upotrijebiti i ovaj. To jest, osim ako ne želite pretvoriti bajta do megabajta u letu. Prekidač -h pretvara sve isporučene brojeve u format čitljiv za ljude, tako da možete imati značenje količine podataka koji se prenose.

-n ili --dry-run - Ovaj prekidač je neophodan za znanje kada prvi put napišete rsync skriptu i isprobate ga. Provodi probnu vožnju, ali zapravo ne izvršava nikakve promjene - svejedno će se izmjene i dalje izdavati kao i obično, tako da možete čitati sve i uvjerite se da izgleda dobro prije nego što pomičete skriptu u produkciju.

-R ili - relative - Ova se sklopka mora koristiti ako odredišni direktorij već ne postoji. Kasnije ćemo koristiti ovu opciju u ovom vodiču kako bismo napravili direktorije na ciljnom stroju s vremenskim oznakama u nazivima mapa.

--exclude-from - Ova se sklopka koristi za povezivanje s popisom izuzetaka koji sadrži putove direktorija koji ne želite podupirati sigurnosnu kopiju. Samo treba običnu tekstualnu datoteku s direktorijem ili datotekom datoteke na svakoj liniji.

- include-from - Slično od --exclude-from, ali povezuje se s datotekom koja sadrži direktorije i datoteke staze podataka koje želite sigurnosno kopirati.

- stanja - Nije stvarno važno prekidač na bilo koji način, ali ako ste sysadmin, može biti korisno znati detaljne statistike svake sigurnosne kopije, samo tako da možete pratiti količinu prometa koji se šalje preko vaše mreže i takvih,

--log-datoteka - Ovo vam omogućuje slanje rsync izlaza u datoteku zapisnika. To definitivno preporučujemo za automatizirane sigurnosne kopije u kojima niste tamo sami pročitati izlaz. Datoteke dnevnika uvijek dajte jednom u slobodno vrijeme kako biste bili sigurni da sve radi ispravno. Također, to je ključni prekidač za korištenje sysadmin, tako da se ne ostavljajte pitajući se kako vaše sigurnosne kopije nisu uspjele dok ste napustili pripravnika. Pogledajmo našu rsync naredbu sada kada imamo još nekoliko preklopnika:

rsync -avzhP --delete --stats --log-file = /home/geek/rsynclogs/ backup.log --exclude-iz '/home/geek/ exclude.txt'-e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/

Naredba je još uvijek prilično jednostavna, ali još uvijek nismo stvorili pristojno sigurnosno rješenje. Iako su naši dosjei sada na dva različita fizička mjesta, ova sigurnosna kopija ništa ne štiti od jednog od glavnih uzroka gubitka podataka: ljudska pogreška.

Snapshot sigurnosna kopija

Ako slučajno izbrišete datoteku, virus oštećuje bilo koju od vaših datoteka ili se dogodi nešto drugo zbog čega se vaše datoteke neželjeno mijenjaju, a zatim pokrenete rsync sigurnosnu kopiju, sigurnosno kopirane podatke prebrisat ćete s neželjenim promjenama. Kada se takva stvar dogodi( a ne ako, ali kada), vaše sigurnosno rješenje nije učinilo ništa kako bi vas zaštitilo od gubitka podataka.

Stvoritelj rsynca je to shvatio i dodao argumente -backup i -backup-dir kako bi korisnici mogli izvoditi diferencijalne sigurnosne kopije. Prvi primjer na web-mjestu rsync pokazuje skriptu u kojoj se svakih sedam dana provodi potpuna sigurnosna kopija, a zatim se izmjene tih datoteka svakodnevno sigurnosno kopiraju u zasebne direktorije. Problem s ovom metodom je taj da oporavite svoje datoteke, morate ih učinkovito oporaviti sedam različitih vremena.Štoviše, većina geekova izvršava svoje sigurnosne kopije nekoliko puta dnevno, tako da u bilo kojem trenutku možete lako imati 20 + različitih rezervnih direktorija. Ne samo da vam je obnova datoteka sada bol, već čak i gledanje podataka iz sigurnosnih kopija može biti izuzetno dugotrajno - trebali biste znati da je posljednji put izmijenjena datoteka kako bi pronašla najnoviju sigurnosnu kopiju. Povrh svega toga, neučinkovito se pokreće samo tjedno( ili čak rjeđe u nekim slučajevima) inkrementalne sigurnosne kopije.

Snapshot sigurnosna kopija u spašavanje! Snapshot sigurnosne kopije nisu ništa više od inkrementalnih sigurnosnih kopija, ali koriste hardlinks kako bi zadržali strukturu datoteka izvornog izvora. To može biti teško zamotati glavu uokolo, pa pogledajte primjer.

Pretpostavimo da imamo sigurnosnu kopiju skripti koja automatski podupire naše podatke svakih dva sata. Kad god to radi, naziva se svaka kopija u obliku: Backup-month-day-year-time.

Dakle, na kraju tipičan dan, imali bi popis mapa u našem odredišnom imeniku kao što je ovaj:

Kada prolazite kroz bilo koji od tih direktorija, vidjet ćete svaku datoteku iz izvornog direktorija točno kao što je bio u to vrijeme, Ipak, ne bi bilo duplikata u bilo kojem od dva direktorija.rsync to postiže pomoću hardlinkinga preko --link-dest = DIR argumenta.

Naravno, da bismo imali lijepo i uredno imenovane imenike, morat ćemo malo podići našu rsync skriptu. Pogledajmo što bi trebalo da bi se postiglo takvo rješenje za backup, a zatim ćemo detaljnije objasniti skriptu:

#!/bin/ bash

#copy stari time.txt na time2.txt

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

#overwrite staru datoteku time.txt s novim vremenom

echo `date +"% F-% I% p "` & gt;~ /backup/ time.txt

#i datoteku zapisnika

echo "" & gt;~ /backup/ rsync -'date + "% F-% I% p" `.log

#rrnc naredba

rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --stats --log-file = ~ /backup/ rsync -`date + "% F-% I% p" `.log --exclude-iz '~ / exclude.txt' --link-dest = /home/geek2/files/` cat ~ /backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/ `datum +"% F-% I% p "` /

# Ne zaboravite scp log datoteku i staviti ga sbackup

scp -P 12345 ~ /backup/ rsync -`cat ~ /backup/ time.txt`.log [email protected]: /home/geek2/files/ `cat ~ /backup/ time.txt` / rsync -`cat ~ /backup/ time.txt`.log

Tobi bila tipična rsync skripta za snimku. U slučaju da vas negdje izgubimo, neka je razotkriti po komadu:

Prva linija naše skripte kopira sadržaj time.txt na time2.txt. Da, cijev je potvrditi da želimo prebrisati datoteku. Zatim uzmemo trenutačno vrijeme i stavimo ga u time.txt. Te će datoteke kasnije biti korisne.

Sljedeći red čini rsync log datoteku, imenujući ga rsync-date.log( gdje je datum stvarni datum i vrijeme).

Sada složena rsync naredba o kojoj smo upozoravali:

-avzhPR, -e, - izbrisati, - status, --log-datoteku, - izuzeti iz, - link-dest - samosklopke o kojima smo razgovarali ranije;pomaknite gore ako vam je potrebna osvježivač.

--chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - To su dopuštenja za odredišni direktorij. Budući da izrađujemo ovaj direktorij usred naše rsync skripte, moramo navesti dopuštenja kako bi naš korisnik mogao pisati datoteke.

Korištenje datuma i mačka naredbi

Preći ćemo svaku upotrebu naredbi za datum i mačku unutar naredbe rsync, redom kojim se pojavljuju. Napomena: Svjesni smo da postoje i drugi načini za ostvarivanje ove funkcije, osobito s upotrebom deklariranja varijabli, ali u svrhu ovog vodiča odlučili smo se koristiti ovom metodom.

Log datoteku je navedeno kao:

~ /backup/ rsync-`date + "% F-% I% p" ".log

Alternativno smo ga mogli navesti kao:

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

U oba slučaja, naredba -log-datoteka bi trebala moći pronaći prethodno stvorenu datiranu datoteku dnevnika i pisati na njemu.

Odredišna datoteka veze navedena je kao:

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

To znači da naredbu -link-dest daje direktorij prethodne sigurnosne kopije. Ako izvodimo sigurnosne kopije svakih dva sata, a to je u 16 sati u vrijeme kada smo pokrenuli ovu skriptu, naredba "link-dest" potražuje direktorij izrađen u 14:00 i prenosi podatke koji su se promijenili od tada( ako ijedan).

Za ponoviti, to je razlog zašto time.txt se kopira na time2.txt na početku skripte, tako da - naredba link-dest može referencirati taj put kasnije.

Odredišni direktorij naveden je kao:

[email protected]: /home/geek2/files/ `datum +"% F-% I% p "`

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

Konačno, pobrinemo se da kopija dnevne datoteke bude smještena unutar sigurnosne kopije.

scp -P 12345 ~ /backup/ rsync -`cat ~ /backup/ time.txt`.log [email protected]: /home/geek2/files/ `cat ~ /backup/ time.txt` / rsync -`cat ~ /backup/ time.txt`.log

Mi koristimosigurnosnu kopiju na priključku 12345 da biste preuzeli rsync zapis i stavili ga u odgovarajući direktorij. Da biste odabrali ispravnu datoteku dnevnika i provjerite je li završio na pravom mjestu, datoteku time.txt mora se uputiti preko naredbe mačka. Ako vas se pitate zašto smo se odlučili na mačku time.txt umjesto da koristimo samo naredbu za datum, to je zato što je puno vremena moglo doći dok je naredba rsync pokrenuta, kako bismo bili sigurni da imamo pravi trenutak,tekstualni dokument koji smo ranije stvorili.

Automatizacija

Koristite Cron na Linuxu ili Task Scheduleru u sustavu Windows za automatizaciju rsync skripte. Jedna stvar koju morate paziti jest osigurati da završite s bilo kojim trenutno pokrenutim rsync procesima prije nastavljanja novog.Čini se da je Task Scheduler zatvorio sve već pokrenute instancije, ali za Linux morat ćete biti malo kreativniji.

Većina Linux distribucija može koristiti naredbu pkill, stoga svakako dodajte sljedeće na početak rsync skripte:

pkill -9 rsync

Šifriranje

Nismo, još nismo učinili. Napokon imamo fantastično( i besplatno!) Sigurnosno rješenje, ali sve naše datoteke su još uvijek osjetljive na krađu. Nadam se da podupireš svoje datoteke na neko mjesto stotinama kilometara daleko. Bez obzira koliko je sigurno udaljeno mjesto, krađa i sjeckanje uvijek mogu biti problemi.

U našim primjerima, tunelirali smo cijeli naš rsync promet putem SSH, što znači da su sve naše datoteke šifrirane dok su u tranzitu do njihova odredišta. Međutim, moramo osigurati da je odredište jednako sigurno. Imajte na umu da rsync samo šifrira vaše podatke tijekom prijenosa, no datoteke su širom otvorene nakon što dođu do odredišta.

Jedna od najboljih značajki rsynca je ta da samo prenosi promjene u svakoj datoteci. Ako ste sve vaše datoteke šifrirane i napravite jednu manju promjenu, cijela će datoteka morati biti ponovno poslana kao rezultat enkripcije potpuno randomiziranje svih podataka nakon svake promjene.

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

Nakon što postavite sigurnosne kopije snimke na lokaciji izvan mjesta i šifrirate svoje izvorne i odredišne ​​tvrde diskove, popustite se na poleđini za svladavanje rsynca i implementaciju najsigurnijih rješenja za sigurnosno kopiranje podataka.