Mājas lapa » » Nav iesācēja rokasgrāmata par datu sinhronizēšanu ar Rsync

    Nav iesācēja rokasgrāmata par datu sinhronizēšanu ar Rsync

    Rsync protokols var būt diezgan vienkārši lietojams parastiem rezerves / sinhronizācijas darbiem, taču dažas no tās uzlabotajām funkcijām var pārsteigt jūs. Šajā rakstā mēs parādīsim, kā pat lielākie datu apkopotāji un rezerves entuziasti var izmantot rsync kā vienotu risinājumu visām viņu datu atlaišanas vajadzībām..

    Brīdinājums

    Ja jūs sēžat, domājot par to, ko „heck ir rsync?” Vai „Es izmantoju tikai rsync tiešām vienkāršiem uzdevumiem”, iespējams, vēlēsities apskatīt mūsu iepriekšējo rakstu par to, kā izmantot rsync, lai dublētu datus Linux, kas sniedz ievads rsync, jūs ved cauri instalēšanai un demonstrē tās pamatfunkcijas. Kad būsit pārliecināts, kā izmantot rsync (godīgi, tas nav tik sarežģīts) un esat apmierināts ar Linux termināli, jūs esat gatavs pāriet uz šo uzlaboto rokasgrāmatu.

    Rsync palaišana sistēmā Windows

    Pirmkārt, pieņemsim mūsu Windows lasītājus tajā pašā lapā kā mūsu Linux guru. Lai gan rsync ir veidota tā, lai darbotos ar Unix līdzīgām sistēmām, nav iemesla, ka jums nevajadzētu to izmantot tikpat vienkārši sistēmā Windows. Cygwin ražo brīnišķīgu Linux API, kuru mēs varam izmantot, lai palaistu rsync, tāpēc dodieties uz savu vietni un lejupielādējiet 32 ​​bitu vai 64 bitu versiju atkarībā no datora.

    Uzstādīšana ir vienkārša; jūs varat saglabāt visas opcijas pēc noklusējuma vērtībām, līdz nokļūsiet ekrānā “Izvēlēties pakotnes”.

    Tagad jums ir jādara tādi paši soļi attiecībā uz Vim un SSH, bet, izvēloties tos, paketes izskatīsies nedaudz atšķirīgas, tāpēc šeit ir daži ekrānuzņēmumi:

    Vim instalēšana:

    SSH instalēšana:

    Pēc tam, kad esat izvēlējies šos trīs paketes, turpiniet noklikšķināt, līdz pabeigsiet instalēšanu. Tad jūs varat atvērt Cygwin, noklikšķinot uz ikonas, ko uzstādītājs ievietojis darbvirsmā.

    rsync komandas: vienkāršas un uzlabotas

    Tagad, kad Windows lietotāji atrodas vienā lapā, apskatīsim vienkāršu rsync komandu 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 virkne failu, kuriem nepieciešams dublēt - kas šajās dienās nav? Jūs pievienojat savu portatīvo cieto disku, lai jūs varētu dublēt datoru failus un izdot šādu komandu:

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

    Vai arī tā izskatās Windows datorā ar Cygwin:

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

    Diezgan vienkārši, un tajā brīdī nav nepieciešams izmantot rsync, jo jūs varētu vienkārši vilkt un nomest failus. Tomēr, ja jūsu citam cietajam diskam jau ir daži faili un nepieciešama tikai 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 īpaši failu pārsūtīšanu internetā, tas ir liels darījums.

    Failu dublēšana ārējā cietajā diskā un pēc tam cietā diska saglabāšana tajā pašā vietā, kur atrodas dators, ir ļoti slikta ideja, tāpēc aplūkosim to, kas būtu nepieciešams, lai sāktu failu pārsūtīšanu internetā uz citu datoru ( viens, ko esat nomājis, ģimenes loceklis utt.).

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

    Iepriekš minētā komanda nosūtītu jūsu failus uz citu datoru, kura IP adrese ir 10.1.1.1. Tas izdzēš svešus failus no galamērķa, kas vairs nepastāv avota direktorijā, izvadīs pārsūtītos failu nosaukumus, lai jums būtu priekšstats par notiekošo un tuneļa rsync caur SSH portā 12345.

    The -a -v-e - dzēst slēdži ir daži no visvienkāršākajiem un visbiežāk izmantotajiem; jums jau jāzina daudz par tiem, ja lasāt šo pamācību. Ejam pār dažiem citiem slēdžiem, kas dažreiz tiek ignorēti, bet neticami noderīgi:

    --progresu - Šis slēdzis ļauj mums redzēt katra faila pārsūtīšanas gaitu. Tas ir īpaši noderīgi, pārsūtot lielus failus internetā, bet var izvadīt bezjēdzīgu informācijas apjomu, vienkārši pārsūtot nelielus failus ātrā tīklā.

    Rsync komanda ar --progresu pārslēgties, jo notiek dublēšana:

    --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ārtraukta kāda iemesla dēļ faila pārsūtīšanas vidū, daļēji pārsūtītais fails tiek saglabāts galamērķa direktorijā, un pārsūtīšana tiek atsākta, ja tā atkal paliek, kad rsync komanda tiek izpildīta vēlreiz. Pārsūtot lielus failus internetā (piemēram, pāris gigabaitus), nekas sliktāks par dažu otro interneta pārtraukumu, zilo ekrānu vai cilvēka kļūdām, veicot faila pārsūtīšanu un sākot no jauna.

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

    -z vai --saspiest - Šis slēdzis padarīs rsync saspiestu failu datus, kad tie tiek pārsūtīti, samazinot datu apjomu, kas jānosūta uz galamērķi. Tas faktiski ir diezgan izplatīts slēdzis, bet tas nav tik būtisks, tikai patiešām dod jums labumu pārskaitījumiem starp lēniem savienojumiem, un tas neko nedara par šādiem failu tipiem: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h vai --cilvēka lasāms - Ja lietojat --progresu slēdzis, jūs noteikti vēlaties izmantot šo vienu. Tas ir, ja vien nevēlaties konvertēt baitus uz megabaitiem. The -h slēdzis pārvērš visus izvadītos skaitļus uz cilvēka lasāmu formātu, lai jūs faktiski varētu saprast pārsūtīto datu apjomu.

    -n vai --sauss - Šis slēdzis ir būtisks, lai uzzinātu, kad pirmo reizi rakstāt rsync skriptu un pārbaudāt to. Tā veic izmēģinājumu, bet faktiski neveic nekādas izmaiņas - iespējamās izmaiņas joprojām tiek izvadītas kā parasti, lai jūs varētu izlasīt visu un pārliecināties, ka tas izskatās labi pirms skripta ieviešanas ražošanā.

    -R vai --radinieks - Šis slēdzis ir jāizmanto, ja galamērķa katalogs vēl nepastāv. Šo opciju mēs vēlāk izmantosim šajā rokasgrāmatā, lai mērķa iekārtā varētu izveidot katalogus ar laika zīmogiem mapju nosaukumos.

    --izslēgt no - Šo slēdzi izmanto, lai saistītu ar izslēgšanas sarakstu, kurā ir direktoriju ceļi, kurus nevēlaties dublēt. Tikai vajag vienkāršu teksta failu ar direktoriju vai faila ceļu katrā rindā.

    --iekļaut no - Līdzīgs --izslēgt no, bet tas ir saistīts ar failu, kurā ir direktoriju un failu ceļi, kurus vēlaties dublēt.

    --statistika - Nav īsti svarīgs pārslēgums ar jebkādiem līdzekļiem, bet, ja jūs esat sysadmin, var būt noderīgi uzzināt detalizētus katra rezerves kopsavilkuma datus, lai jūs varētu pārraudzīt jūsu tīklā nosūtīto datplūsmas apjomu un.

    --log-fails - Tas ļauj nosūtīt rsync izeju uz žurnāla failu. Mēs noteikti iesakām to automātiskai dublējumkopijai, kurā neesat tur, lai sevi izlasītu. Vienmēr dodiet brīvdienā žurnāla failus, lai pārliecinātos, ka viss darbojas pareizi. Turklāt tas ir izšķirošs sysadmin pārslēgšanas slēdzis, lai jūs nevarētu brīnīties, kā jūsu dublējumkopijas neizdevās, kamēr esat atstājis atbildīgo..

    Aplūkosim mūsu rsync komandu, kad mums ir pievienoti vēl daži 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 / [email protected]: / home / geek2 / files /

    Šī komanda joprojām ir diezgan vienkārša, taču mēs vēl neesam izveidojuši pienācīgu rezerves risinājumu. Lai gan mūsu faili tagad atrodas divās dažādās fiziskās vietās, šis dublējums neko nedara, lai pasargātu mūs no viena no galvenajiem datu zuduma cēloņiem: cilvēka kļūda.

    Snapshot Backups

    Ja nejauši izdzēšat failu, vīruss bojā kādu no jūsu failiem, vai kaut kas cits notiek, kad jūsu faili ir nevēlami mainīti, un tad palaižat rsync rezerves skriptu, jūsu dublētie dati tiek pārrakstīti ar nevēlamām izmaiņām. Ja šāda lieta notiek (nevis, ja, bet, kad), jūsu rezerves risinājums neko nedarīja, lai pasargātu jūs no datu zuduma.

    Rsync autors to saprata un pievienoja --dublējums un --backup-dir argumenti, lai lietotāji varētu palaist diferenciālos backupus. Pirmais piemērs rsync tīmekļa vietnē rāda skriptu, kurā pilnīga dublēšana tiek veikta ik pēc septiņām dienām, un pēc tam izmaiņas šajos failos tiek dublētas atsevišķos katalogos katru dienu. Ar šo metodi ir problēma, ka, lai atgūtu failus, tie ir efektīvi jāatgūst septiņas reizes. Turklāt lielākā daļa geeks palaiž dublējumkopijas vairākas reizes dienā, lai jebkurā brīdī varētu viegli izmantot 20 dažādus dublējuma katalogus. Ne tikai atgūstot jūsu failus tagad ir sāpes, bet pat tikai caur jūsu dublētajiem datiem var būt ļoti daudz laika - jums ir jāzina, kad pēdējo reizi tika mainīts fails, lai atrastu pēdējo dublēto kopiju. Papildus tam, tas ir neefektīvi palaist tikai nedēļas (vai pat retāk dažos gadījumos) papildu rezerves kopijas.

    Snapshot backups glābšanai! Momentuzņēmuma backups nav nekas cits kā papildu dublējums, bet tie izmanto hardlinks, lai saglabātu sākotnējā avota faila struktūru. Tas var būt grūti apvītot galvu apkārt, tāpēc aplūkosim piemēru.

    Izlieciet, ka mums ir rezerves skripts, kas automātiski atjauno mūsu datus ik pēc divām stundām. Ikreiz, kad rsync to dara, tas dublē katru dublējumu formātā: Backup-month-day-year-year-time.

    Tātad, beidzoties tipiskai dienai, mūsu galamērķa direktorijā būtu tādu mapju saraksts kā:

    Veicot jebkuru no šiem katalogiem, jūs redzat katru failu no avota direktorijas tieši tā, kā tas bija tajā laikā. Tomēr nevienā divos katalogos nebūtu dublikātu. rsync to sasniedz, izmantojot cieto savienojumu caur --saite-dest = DIR arguments.

    Protams, lai šie skaisti un kārtīgi datēti direktoriju nosaukumi būtu mazliet lielāki par mūsu rsync skriptu. Aplūkosim to, kas būtu nepieciešams, lai veiktu šāda veida rezerves risinājumu, un tad sīkāk izskaidrosim skriptu:

    #! / bin / bash

    #copy old time.txt uz time2.txt

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

    #overwrite vecais time.txt fails ar jaunu laiku

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

    # Izveidojiet žurnāla failu

    atbalss ""> ~ / backup / rsync-'date + "% F-% I% p" '.

    #rsync komanda

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

    # Neaizmirstiet skenēt log failu un ievietot to ar dublējumu

    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 momentuzņēmuma rsync skripts. Gadījumā, ja jūs kaut kur pazudīsim, izlaidīsim to pa gabaliem:

    Mūsu skripta pirmā rinda kopē time.txt saturu uz time2.txt. Jā, lai apstiprinātu, ka mēs vēlamies pārrakstīt failu. Tālāk mēs ņemam 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 par rsync-date.log (kur datums ir faktiskais datums un laiks).

    Tagad kompleksā rsync komanda, kuru mēs esam brīdinājuši par:

    -avzhPR, -e, --delete, --stats, --log-fails, --izņemiet no, --link-dest - Tikai slēdži, par kuriem mēs runājām agrāk; ritiniet uz augšu, ja jums ir nepieciešams atsvaidzinātājs.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Šīs ir galamērķa direktorijas atļaujas. Tā kā mēs izveidojam šo direktoriju mūsu rsync skripta vidū, mums ir jāprecizē atļaujas, lai mūsu lietotājs varētu tajā ierakstīt failus.

    Datuma un kaķu komandu izmantošana

    Mēs gatavojamies pāriet katram datumam un kaķu komandai rsync komandā tādā secībā, kādā tās notiek. Piezīme. Mēs apzināmies, ka ir arī citi veidi, kā šo funkcionalitāti izpildīt, jo īpaši izmantojot mainīgos lielumus, taču šīs rokasgrāmatas nolūkos esam nolēmuši izmantot šo metodi.

    Žurnāla fails ir norādīts kā:

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

    Alternatīvi, mēs to būtu varējuši norādīt kā:

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

    Katrā ziņā, --log-fails komandai jāspēj atrast iepriekš izveidotu datētu žurnāla failu un rakstīt uz to.

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

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

    Tas nozīmē, ka --saite-dest komandai tiek dota iepriekšējā dublējuma direktorija. Ja mēs izmantojam rezerves kopijas ik pēc divām stundām, un tas ir 4:00 pēc šī skripta izpildes, tad --saite-dest komanda meklē direktoriju, kas izveidota pēc plkst. 14:00, un tikai pārsūta kopš tā laika mainītos datus (ja tādi ir).

    Lai atkārtotu, tas ir iemesls, kāpēc time.txt tiek kopēts uz time2.txt skripta sākumā, tāpēc --saite-dest komanda var atsaukties uz šo laiku vēlāk.

    Galamērķa katalogs ir norādīts kā:

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

    Šī komanda vienkārši ievieto avota failus direktorijā, kuram ir pašreizējā datuma un laika nosaukums.

    Visbeidzot, mēs pārliecināmies, ka rezerves faila kopija tiek ievietota dublējumā.

    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 ostā 12345, lai uzņ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 ir jābūt atsaucei, izmantojot kaķu komandu. Ja jūs domājat, kāpēc mēs nolēmām kaķa time.txt vietā izmantot tikai datuma komandu, tas ir tāpēc, ka rsync komandas darbības laikā varētu būt daudz laika, lai pārliecinātos, ka mums ir īstais laiks, mēs vienkārši kaķim teksta dokumentu, ko izveidojām agrāk.

    Automatizācija

    Lai automatizētu rsync skriptu, izmantojiet operētājsistēmu Linux vai Windows uzdevumu plānotāju. Viena lieta, kas jums ir jābūt uzmanīgiem, pārliecinās, ka jūs pārtraucat visus pašlaik darbojošos rsync procesus, pirms turpināt jaunu. Šķiet, ka uzdevumu plānotājs automātiski aizver visus jau darbojošos gadījumus, bet Linux jums būs nedaudz radošāks.

    Lielākā daļa Linux izplatīšanu var izmantot komandu pkill, tāpēc tikai rsync skripta sākumā pievienojiet šā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 bez maksas) rezerves risinājumu, bet visi mūsu faili joprojām ir pakļauti zādzībām. Cerams, ka jūs dublējat failus savās vietās simtiem jūdžu attālumā. Neatkarīgi no tā, cik droša ir tā tālākā vieta, zādzības un hakeri vienmēr var būt problēmas.

    Mūsu piemēros mēs esam identificējuši visu mūsu rsync datplūsmu caur SSH, tāpēc tas nozīmē, ka visi mūsu faili tiek šifrēti, atrodoties tranzītā uz galamērķi. Tomēr mums ir jāpārliecinās, ka galamērķis ir tikpat drošs. Ņemiet vērā, ka rsync šifrē jūsu datus tikai tad, kad tie tiek pārsūtīti, bet faili ir plaši atvērti, tiklīdz tie sasniedz galamērķi.

    Viena no rsync labākajām iezīmēm ir tā, ka tā tikai pārsūta izmaiņas katrā failā. Ja jums ir visi jūsu faili šifrēti un veic nelielas izmaiņas, viss fails būs jāpārsūta, jo šifrēšanas rezultātā visi dati pēc nejaušības principa tiek randomizēti..

    Šā iemesla dēļ vislabāk / vieglāk ir izmantot dažāda veida diska šifrēšanu, piemēram, BitLocker Windows vai dm-crypt Linux. 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ās veiktspēju. Ir arī citas iespējas, kas darbojas līdzīgi kā rsync vai pat īsteno kādu no tā formām, piemēram, divkāršību, bet tām trūkst dažas funkcijas, ko rsync piedāvā.

    Pēc tam, kad esat izveidojis momentuzņēmuma rezerves kopijas ārpus uzņēmuma atrašanās vietas un šifrējis avota un galamērķa cietos diskus, dodieties sev uz muguras, lai apgūtu rsync un īstenotu viltīgāko datu dublējuma risinājumu.