If-Koubou

Rokasgrāmata par datu sinhronizēšanu ar Rsync

Rokasgrāmata par datu sinhronizēšanu ar Rsync (Kā)

Rsync protokols var būt diezgan vienkāršs, lai izmantotu parastu rezerves / sinhronizācijas darbu, taču daži no tā uzlabotajiem elementiem var jūs pārsteigt. Šajā rakstā mēs parādīsim, kā pat lielākie datu glabātāji un rezerves entuziasti var izmantot rsync kā vienotu risinājumu visām viņu datu dublēšanas vajadzībām.

Brīdinājums: tikai uzlaboti geeks

Ja jūs sēžat, domājat, ka "Kas ir heck ir rsync?" Vai "Es izmantoju rsync tikai tiešām vienkāršiem uzdevumiem", iespējams, vēlēsieties iepazīties ar mūsu iepriekšējo rakstu par to, kā izmantot rsync, lai dublētu savus datus par Linux, kas dod ievads rsync, palīdz jums ar instalēšanu un demonstrē vairāk pamatfunkcijas. Kad esat pārliecinājies par to, kā izmantot rsync (godīgi, tas nav tik sarežģīti) un ir apmierināti ar Linux terminālu, jūs esat gatavi pāriet uz šo uzlaboto rokasgrāmatu.

Rsync darbojas operētājsistēmā Windows

Pirmkārt, pieņemsim, ka mūsu Windows lasītāji tajā pašā lapā kā mūsu Linux gurus. Kaut arī rsync ir veidots tā, lai palaistu uz Unix līdzīgām sistēmām, nav iemesla, ka jums to nevarētu izmantot tikpat viegli Windows. Cygwin ražo brīnišķīgu Linux API, kuru mēs varam izmantot, lai palaistu rsync, tāpēc dodieties uz viņu vietni un, atkarībā no datora, lejupielādējiet 32 ​​bitu vai 64 bitu versiju.

Uzstādīšana ir vienkārša; jūs varat saglabāt visas opcijas to noklusējuma vērtībām, līdz nokļūsit ekrāna "Atlasīt pakotnes".

Tagad jums ir jāveic tādas pašas darbības Vim un SSH, taču, izvēloties tos, tiks parādīti mazliet dažādi pakotnes, tādēļ šeit ir daži ekrānuzņēmumi:

Vim instalēšana:

SSH instalēšana:

Kad esat izvēlējies šos trīs pakotnes, turpiniet noklikšķināt uz nākamā, līdz jūs pabeigtu instalēšanu. Tad jūs varat atvērt Cygwin, noklikšķinot uz ikonas, kuru uzstādītājs ievieto darbvirsmā.

rsync komandas: vienkāršs, lai uzlabotu

Tagad, kad Windows lietotāji atrodas tajā pašā lapā, ieskatieties vienkāršas komandas rsync un parādīsim, kā dažu uzlaboto slēdžu izmantošana var ātri padarīt to sarežģītu.

Pieņemsim, ka jums ir vairāki faili, kuriem nepieciešams dublēt - kas šajās dienās nav pieejams? Jūs pievienojat portatīvo cieto disku, lai jūs varētu dublēt datora failus un izdot šādu komandu:

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

Vai, kā tas izskatās uz Windows datora ar Cygwin:

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

Diezgan vienkārši, un šajā brīdī tiešām nav nepieciešams izmantot rsync, jo jūs varat vienkārši vilkt un nomest failus. Tomēr, ja jūsu citam cietajam diskam jau ir daži faili, un vienkārši ir nepieciešams atjauninātās versijas un faili, kas izveidoti kopš pēdējās sinhronizācijas, šī komanda ir ērta, jo tā tikai nosūta jaunos datus uz cieto disku. Ar lieliem failiem un jo īpaši failu pārsūtīšanu internetā tas ir liels darījums.

Failu dublēšana uz ārējo cieto disku un pēc tam cietā diska uzturēšana tajā pašā vietā, kur ir jūsu dators, ir ļoti slikta ideja. Tāpēc apskatīsim, kā tas vajadzīgs, lai sāktu failu sūtīšanu internetā uz citu datoru ( viens esat iznomājis, ģimenes loceklis utt.).

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

Iepriekš minētā komanda sūta savus failus uz citu datoru ar 10.1.1.1 IP adresi. Tas izdzēš svešus failus no galamērķa, kas vairs nepastāv avota direktorijā, izvadiet failu nosaukumus, kas tiek pārsūtīti, lai jums būtu priekšstats par to, kas notiek, un tuneļa rsync caur SSH portu 12345.

The -a -v -e --delete slēdži ir daži no visvienkāršākajiem un visbiežāk izmantotajiem; ja jūs lasāt šo pamācību, jums jau labi jāzina. Apskatīsim dažus citus slēdžus, kurus dažreiz ignorē, bet neticami noderīgi:

--progress - Šis slēdzis ļauj mums redzēt katra faila pārsūtīšanas progresu. Tas ir īpaši noderīgi, pārsūtot lielus failus internetā, taču var tikai izlaist bezjēdzīgu informācijas daudzumu, tikai pārsūtot mazus failus uz ātru tīklu.

Komandu rsync ar --progress slēdzis, jo notiek dublējums:

- daļēja - Šis ir vēl viens slēdzis, kas ir īpaši noderīgs, pārsūtot lielus failus internetā. Ja rsync tiek pārtraukts jebkura iemesla dēļ faila pārsūtīšanas vidū, daļēji pārsūtītais fails tiek glabāts galamērķa direktorijā, un pārsūtīšana tiek atsākta, ja tā ir izslēgta, kad rsync komanda atkal tiek izpildīta. Pārsūtot lielus failus internetā (teiksim, pāris gigabaitus), nekas nav sliktāks nekā dažu otro interneta pārtraukumu, zilā ekrāna vai cilvēka kļūdas dēļ tiek pārsūtīta failu pārsūtīšana un vispirms jāuzsāk viss.

-P - šis slēdzis apvieno --progress un - daļēja, tāpēc izmantojiet to, un tā padarīs jūsu rsync komandu nedaudz īsāku.

-z vai - saspiest - Šis slēdzis padarīs rsync saspiestu faila datus, jo tas tiek pārsūtīts, samazinot datu apjomu, kas jānosūta galamērķim. Tas patiesībā ir diezgan izplatīts slēdzis, bet tas nav tik būtisks, jo tas patiešām dod jums priekšrocības par pārsūtīšanu starp lēnu savienojumu, un tas nedara neko šādiem failu tipiem: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h vai - cilvēciski lasāms - ja jūs izmantojat --progress slēdzi, jūs noteikti vēlaties izmantot šo vienu. Tas ir, ja vien jūs nevēlaties pārvērst baitus uz megabaitu uz lidojuma. The -h slēdzis pārvērš visus izvadītos numurus cilvēka lasāmā formātā, lai jūs tiešām varētu saprast pārsūtāmo datu apjomu.

-n vai - slaucīt - Šis slēdzis ir ļoti svarīgi zināt, kad pirmo reizi rakstāt rsync skriptu un testē to. Tā veic izmēģinājuma versiju, taču tā patiešām nemainās - iespējamās izmaiņas vēl tiek izvadītas kā parasti, lai jūs varētu izlasīt visu un pārliecinātos, ka tas izskatās labi, pirms tiek virzīts jūsu skripts ražošanā.

-R vai - saistīts - Šis slēdzis jāizmanto, ja galamērķa direktorija vēl nav. Mēs izmantosim šo opciju vēlāk šajā rokasgrāmatā, lai mēs varētu izveidot direktorijus mērķa mašīna ar laika zīmēm mapju nosaukumos.

--izslēgt-no - Šis slēdzis tiek izmantots, lai izveidotu saiti uz izslēgšanas sarakstu, kurā ir direktorijas ceļi, kurus nevēlaties dublēt. Katrai rindai vienkārši nepieciešams teksta fails ar direktoriju vai faila ceļu.

- iekļaut - no - Līdzīgs --izslēgt-no, bet tas ir saistīts ar failu, kurā ir dublējamo datu katalogi un faila ceļi.

--stats - Nav īsti svarīgs slēdzis ar jebkādiem līdzekļiem, bet, ja esat sysadmin, var būt ērti uzzināt sīkāku katras rezerves datu statistiku, lai jūs varētu kontrolēt satiksmes apjomu, kas tiek sūtīts pa jūsu tīklu un tamlīdzīgi.

--log-fails - Tas ļauj nosūtīt rsync izvadi log failā. Mēs noteikti to iesakām automatizētām dublējumkopijām, kurās jums nav vietas, lai paši izlasītu produkciju. Vienmēr dodiet žurnāla failus brīvajā laikā, lai pārliecinātos, vai viss darbojas pareizi. Tāpat tas ir būtisks sysadmin slēdzis, ko izmantot, tāpēc jums nevajadzētu atstāt jautājumus par to, kā jūsu dublējumkopijas neizdevās, kad aizgājāt no atbildīgā intern.

Apskatīsim mūsu komandu rsync tagad, kad mums ir pievienoti vēl vairāki slēdži:

rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from /home/geek/exclude.txt -e 'ssh -p 12345 / home / geek / files / geek2 @ 10.1.1.1: / home / geek2 / files /

Komanda joprojām ir diezgan vienkārša, taču mēs joprojām nav izveidojuši pienācīgu rezerves risinājumu. Kaut arī mūsu faili tagad atrodas divās dažādās fiziskās vietās, šī dublēšana neko nedara, lai pasargātu mūs no viena no galvenajiem datu zuduma cēloņiem: cilvēka kļūdas.

Momentuzņēmumu rezerves kopijas

Ja nejauši izdzēšat failu, vīruss bojā jebkuru failu vai rodas kaut kas cits, kad jūsu faili tiek nevēlami mainīti, un pēc tam palaižat rsync rezerves skriptu, jūsu dublētie dati tiek pārrakstīti ar nevēlamām izmaiņām. Ja rodas šāda lieta (ne ja, bet kad), jūsu rezerves kopija neko nedara, lai pasargātu jūs no datu zuduma.

Rsync radītājs to saprata un pievienoja - backup un - backup-dir argumenti, lai lietotāji varētu veikt diferenciāli backups. Pirmais rsync tīmekļa vietnes piemērs parāda skriptu, kurā ik pēc septiņām dienām tiek veikta pilna dublēšana, un katru dienu izmaiņas šajos failos tiek dublēti atsevišķos katalogos. Problēma ar šo metodi ir tā, ka, lai atgūtu failus, jums ir efektīvi atgūt tos septiņus dažādus laikus. Turklāt lielākā daļa geeks bloķē dublējumkopijas vairākas reizes dienā, tādēļ jūs jebkurā brīdī varat viegli atrast 20 + dažādus rezerves katalogus. Ne tikai atgūstot savus failus tagad ir sāpes, bet pat vienkārši apskatīt jūsu dublētos datus var būt ļoti laikietilpīgs - jums ir jāzina pēdējo reizi, kad fails tika mainīts, lai atrastu visjaunāko dublējamo kopiju. Papildus tam ir neefektīvi palaist tikai reizi nedēļā (vai pat retāk dažos gadījumos) papildu rezerves kopijas.

Snapshot backups uz glābšanu! Snapshot backups ir nekas vairāk kā elementārparaugu dublēšana, taču tie izmanto cietās saites, lai saglabātu sākotnējā avota faila struktūru. Vispirms var būt grūti aptīt galvu, tāpēc aplūkosim piemēru.

Iedomājieties, ka darbojas skripts, kas automātiski dublē mūsu datus ik pēc divām stundām. Katru reizi, kad rsync to dara, tā nosauc katru dublējumu formātā: Backup-month-day-year-time.

Tātad, beigās ir raksturīga diena, mums vajadzētu būt sarakstā mapēs mūsu galamērķa direktorijā, piemēram, šādi:

Pārceļot jebkuru no šiem katalogiem, jūs redzētu visus failus no avota kataloga tieši tā, kā tas bija tajā laikā. Tomēr nevienā no diviem katalogiem nebūs dublēti. rsync to paveic, izmantojot cieto saiti caur --link-dest = DIR arguments.

Protams, lai šos labi un precīzi nokomplektētu direktoriju nosaukumus, mums būs mazliet jāpielāgo mūsu rsync skripts. Apskatīsim, ko tas veiks, lai veiktu rezerves risinājumu, piemēram, šo, un tad mēs paskaidrosim skriptu detalizētāk:

#! / bin / bash

#copy veco time.txt uz time2.txt

jā | cp ~ / backup / time.txt ~ / backup / time2.txt

#pievienot veco .txt failu ar jaunu laiku

echo "datums +"% F-% I% p ""> ~ / backup / time.txt

# izveidojiet žurnāla failu

echo ""> ~ / backup / rsync-getate + "% F-% I% p" "log.

#rsync komanda

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

# Neaizmirsti aplūkot žurnāla failu un nodot to ar rezerves kopiju

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

Tas būtu tipisks snapshot rsync skripts. Gadījumā, ja kaut kur jūs pazaudējāt, izmēģiniet gabalu gabalos:

Mūsu skripta pirmajā rindā teksts time.txt tiek kopēts uz time2.txt. Jā caurule ir apstiprināt, ka mēs vēlamies pārrakstīt failu. Tālāk mēs izmantojam pašreizējo laiku un ievietojam to time.txt. Šie faili būs noderīgi vēlāk.

Nākamā rinda padara rsync log failu, nosaucot to rsync-date.log (kur datums ir faktiskais datums un laiks).

Tagad, kompleksa rsync komandu, par kuru mēs brīdinājām jūs:

-avzhPR, -e, -delete, -stats, -log-file, --exclude-from, -link-dest - Tikai slēdži, par kuriem mēs runājām agrāk; ritiniet uz augšu, ja jums nepieciešama atsvaidzināšana.

--chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Tie ir galamērķa direktorija atļaujas. Tā kā mēs izveidojam šo direktoriju mūsu rsync skripta vidū, mums jānorāda atļaujas, lai mūsu lietotājs varētu uz to rakstīt failus.

Datuma un kaķu komandu izmantošana

Mēs atgriezīsimies katras komandas datuma un kaķa izmantošanas laikā komandas rsync ietvaros tādā secībā, ka tie notiek. Piezīme. Mēs apzināmies, ka šīs funkcijas ir pieejamas arī citos veidos, jo īpaši izmantojot mainīgo mainīšanu, taču šajā rokasgrāmatā mēs esam nolēmuši izmantot šo metodi.

Log failā tiek norādīts:

~ / backup / rsync-getate + "% F-% I% p" "log

Varētu arī norādīt to kā:

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

Katrā ziņā, --log-fails komandai jāspēj atrast agrāk izveidoto datēto žurnāla failu un rakstīt uz to.

Saites galamērķa fails ir norādīts kā:

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

Tas nozīmē, ka - link-dest komandai tiek dots iepriekšējās dublējuma direktorijs. Ja mēs dublējamies ik pēc divām stundām, un plkst. 16:00 laikā, kad mēs izmantojām šo skriptu, tad - link-dest komanda meklē direktoriju, kas izveidots plkst. 14:00, un pārsūta tikai kopš tā laika mainītos datus (ja tādi ir).

Lai atkārtotu, tieši tāpēc time.txt tiek nokopēts uz time2.txt skripta sākumā, tāpēc - link-dest komanda to var norādīt vēlāk.

Galamērķa direktorija ir norādīta kā:

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

Šī komanda vienkārši novieto avota failus mapē ar pašreizējā datuma un laika nosaukumu.

Visbeidzot, mēs pārliecināmies, vai log faila kopija tiek ievietota dublējumkopijā.

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

Mēs izmantojam drošu kopiju portā 12345, lai ņemtu rsync žurnālu un ievietotu to pareizajā direktorijā. Lai izvēlētos pareizo žurnāla failu un pārliecinātos, ka tas nonāk pareizajā vietā, failam time.txt jānorāda, izmantojot kaķu komandu. Ja jūs domājat, kāpēc mēs nolēmām katlu time.txt nevis tikai izmantot datuma komandu, tas ir tāpēc, ka rsync komandas darbības laikā varēja rasties daudz laika, tāpēc, lai pārliecinātos, ka mums ir īstais laiks, mēs tikai kaķis teksta dokuments, kuru mēs izveidojām agrāk.

Automatizācija

Izmantojiet Cron Linux vai Task Scheduler sistēmā Windows, lai automatizētu savu rsync skriptu. Viena lieta, kas jums jāuzmanās, ir pārliecināties, ka jūs pārtraucat visus pašreiz darbotos rsync procesus, pirms turpināt jaunu. Uzdevuma plānotājs, šķiet, automātiski aizvērs visus jau palaistos gadījumus, bet Linux jums būs nepieciešams nedaudz vairāk radošs.

Lielākā daļa Linux distribūcijas var izmantot komandu pkill, tāpēc tikai pievienojiet rsync skripta sākumam šādu informāciju:

pkill-9 rsync

Šifrēšana

Nē, mēs vēl neesam darījuši. Mēs beidzot esam izveidojuši fantastisku (un bezmaksas!) Rezerves risinājumu, taču visi mūsu faili joprojām ir jutīgi pret zādzību. Cerams, ka jūs dublējat savus failus uz kādu vietu simtiem jūdžu attālumā. Neatkarīgi no tā, cik droša ir šī tālsvieta, zādzība un uzlaušana vienmēr var būt problēmas.

Mūsu piemēros mēs noskaņojām visu mūsu rsync datplūsmu, izmantojot SSH, tāpēc visi mūsu faili ir šifrēti, kamēr tie tiek pārvietoti uz galamērķi. Tomēr mums jāpārliecinās, ka galamērķis ir tikpat drošs. Paturiet prātā, ka rsync tikai šifrē jūsu datus, jo tie tiek pārsūtīti, bet faili ir plaši atvērti, kad tie sasniedz galamērķi.

Viena no labākajām rsync funkcijām ir tā, ka tā pārsūta tikai izmaiņas katrā failā. Ja visi jūsu faili ir šifrēti un izdarītas vienas nelielas izmaiņas, šifrēšanas rezultātā viss fails būs jāpārraidīs pilnīgi pēc visu izmaiņu nejaušas izvēles.

Šī iemesla dēļ vislabāk / vieglāk ir izmantot kādu diska šifrēšanas veidu, piemēram, BitLocker for Windows vai Linux dm-crap. Tādā veidā jūsu dati tiek aizsargāti zādzības gadījumā, bet failus var pārsūtīt ar rsync, un jūsu šifrēšana netraucēs tā veiktspēju. Pastāv arī citas pieejamās opcijas, kas darbojas līdzīgi rsync vai pat īsteno kādu tā veidu, piemēram, Duplicity, bet tām trūkst dažas funkcijas, kuras rsync var piedāvāt.

Pēc tam, kad esat iestatījis momentuzņēmumu dublējumus ārpus uzņēmuma atrašanās vietas un šifrējat savus avota un gala cietos diskus, dodiet sev labu pāri, lai apgūtu rsync un īstenotu viskonkrētāko datu rezerves risinājumu.