Minnkaðu öryggisafrit um 99.5% með hashget

hashget - það er ókeypis, opinn uppspretta fjölföldunartæki er tól sem líkist skjalavörslu sem gerir þér kleift að draga verulega úr stærð öryggisafrita, auk þess að skipuleggja stigvaxandi og mismunandi öryggisafritunarkerfi og fleira.

Þetta er yfirlitsgrein til að lýsa eiginleikum. Raunverulegri notkun á hashget (nokkuð einföld) er lýst í README verkefni og wiki skjöl.

Samanburður

Samkvæmt lögmáli tegundarinnar mun ég byrja strax á ráðabrugginu - bera saman niðurstöðurnar:

Gagnasýni
ópakkað stærð
.tar.gz
hashget.tar.gz

WordPress-5.1.1
43 Mb
11 Mb (26%)
155 Kb ( 0.3% )

Linux kjarna 5.0.4
934 Mb
161 Mb (20%)
4.7 Mb ( 0.5% )

Debian 9 (LAMP) LXC VM
724 Mb
165 Mb (23%)
4.1 Mb ( 0.5% )

Bakgrunnur um hvað hugsjón og áhrifarík öryggisafrit ætti að vera

Í hvert skipti sem ég tók öryggisafrit af nýbúinni sýndarvél var ég reimt af þeirri tilfinningu að ég væri að gera eitthvað rangt. Af hverju fæ ég stíft öryggisafrit úr kerfinu, þar sem ómetanleg, óforgengileg sköpunarkraftur minn er einnar línu index.html með textanum „Halló heimur“?

Af hverju er 16 MB /usr/sbin/mysqld í öryggisafritinu mínu? Er það virkilega mögulegt að í þessum heimi hljóti ég þann heiður að geyma þessa mikilvægu skrá og ef mér mistekst mun það glatast mannkyninu? Líklegast nei. Það er geymt á mjög áreiðanlegum debian netþjónum (áreiðanleiki og spenntur er ekki hægt að bera saman við það sem ég get veitt), sem og í afritum (milljónir af þeim) annarra stjórnenda. Þurfum við virkilega að búa til 10+ fyrsta eintak af þessari mikilvægu skrá til að bæta áreiðanleika?

Almennt hashget og leysir þetta vandamál. Þegar það er pakkað skapar það mjög lítið öryggisafrit. Þegar pakkað er upp - alveg ópakkað kerfi, svipað og það væri ef tar -c / tar -x. (Með öðrum orðum, þetta eru taplausar umbúðir)

Hvernig hashget virkar

hashget hefur hugtökin Package og HashPackage, með hjálp þeirra framkvæmir það aftvíföldun.

Pakki (plastpoki). Skrá (venjulega .deb eða .tar.gz skjalasafn) sem hægt er að hlaða niður á öruggan hátt af netinu og þar er hægt að nálgast eina eða fleiri skrár.

HashPackage — lítil JSON skrá sem táknar pakka, þar á meðal pakkansslóð og kjötkássatölur (sha256) skráa úr honum. Til dæmis, fyrir 5 megabæta mariadb-miðlara-kjarna pakka, er stærð kjötkássapakkans aðeins 6 kílóbæti. Um þúsund sinnum minna.

Tvíföldun — búa til skjalasafn án afrita skráa (ef afritunarvélin veit hvar hægt er að hlaða upprunalega pakkanum niður, dregur það úr afritum úr skjalasafninu).

Umbúðir

Við pökkun eru allar skrár úr möppunni sem verið er að pakka skannaðar, kjötkássatölur þeirra eru reiknaðar út og ef summan finnst í einhverju þekktu HashPackages, þá eru lýsigögn um skrána (nafn, kjötkássa, aðgangsréttur o.s.frv.) vistuð. í sérstakri skrá .hashget-restore.json, sem einnig verður með í skjalasafninu.

Í einfaldasta tilvikinu lítur umbúðirnar sjálfar ekki flóknari út en tjara:

hashget -zf /tmp/mybackup.tar.gz --pack /path/to/data

Upppökkun

Upptaka fer fram í tveimur áföngum. Fyrst venjuleg tjöruupptaka:

tar -xf mybackup.tar.gz -C /path/to/data

endurheimtu síðan af netinu:

hashget -u /path/to/data

Við endurheimt les hashget .hashget-restore.json skrána, hleður niður nauðsynlegum pakka, pakkar þeim upp og dregur út nauðsynlegar skrár, setur þær upp á nauðsynlegum slóðum, með nauðsynlegum eiganda/hóp/heimildum.

Erfiðari hlutir

Það sem lýst er hér að ofan er nú þegar nóg fyrir þá sem „vilja hafa það eins og tjöru, en að pakka Debian mínum í 4 megabæti. Skoðum flóknari hluti síðar.

Verðtrygging

Ef hashget væri alls ekki með einn HashPackage, þá væri það einfaldlega ekki hægt að afrita neitt.

Þú getur líka búið til HashPackage handvirkt (einfaldlega: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), en það er þægilegri leið.

Til þess að fá nauðsynlegan hashpakka er stig verðtryggingu (það er sjálfkrafa keyrt með skipuninni --pack) Og heuristics. Við flokkun „straumar“ hashget hverja skrá sem finnast til allra tiltækra heuristics sem hafa áhuga á henni. Heuristics getur síðan skráð hvaða pakka sem er til að búa til HashPackage.

Til dæmis, Debian heuristic elskar skrána /var/lib/dpkg/status og finnur uppsetta debian pakka, og ef þeir eru ekki verðtryggðir (það er ekkert HashPackage búið til fyrir þá), hleður niður og skráir þá. Niðurstaðan er mjög góð áhrif - hashget mun alltaf í raun aftaka Debian stýrikerfi, jafnvel þótt þeir séu með nýjustu pakkana.

Vísbendingarskrár

Ef netið þitt notar einhverja sérpakka þína eða almennan pakka sem er ekki innifalinn í hashget heuristics, geturðu bætt einfaldri hashget-hint.json vísbendingarskrá við það eins og þetta:

{
    "project": "wordpress.org",
    "url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}

Næst, í hvert sinn sem skjalasafn er búið til, verður pakkinn verðtryggður (ef hann hefur ekki verið áður) og pakkaskrárnar verða aftvíföldaðar úr skjalasafninu. Engin forritun er nauðsynleg, allt er hægt að gera frá vim og vista í hverju öryggisafriti. Vinsamlegast athugaðu að þökk sé hass summa nálguninni, ef einhverjum skrám úr pakkanum er breytt á staðnum (til dæmis, stillingarskrá er breytt), þá verða breyttu skrárnar vistaðar í skjalasafninu „eins og þær eru“ og þær verða ekki styttar.

Ef sumir af þínum eigin pakka eru uppfærðir reglulega, en breytingarnar eru ekki mjög stórar, geturðu aðeins gefið vísbendingar um helstu útgáfur. Til dæmis, í útgáfu 1.0 gáfu þeir vísbendingu sem benti á mypackage-1.0.tar.gz, og það verður alveg aftvíplað, síðan gáfu þeir út útgáfu 1.1, sem er aðeins öðruvísi, en vísbendingin var ekki uppfærð. Það er í lagi. Aðeins skrár sem passa við (hægt að endurheimta) útgáfu 1.0 eru aftaldaðar.

Heuristic sem vinnur vísbendingaskrána er gott dæmi til að skilja innra kerfi hvernig heuristics virka. Það vinnur aðeins hashget-hint.json skrár (eða .hashget-hint.json með punkti) og hunsar allar aðrar. Út frá þessari skrá ákveður það hvaða vefslóð pakkans á að vera verðtryggð og hashget skráir hana (ef það hefur ekki þegar gert það)

HashServer

Það væri ansi vinnufrekt að framkvæma fulla flokkun þegar búið er til afrit. Til að gera þetta þarftu að hlaða niður hverjum pakka, pakka honum upp og skrá hann. Þess vegna notar hashget kerfi með HashServer. Þegar uppsettur Debian pakki er greindur, ef hann finnst ekki í staðbundnum HashPackage, er fyrst reynt að einfaldlega hlaða niður HashPackage frá kjötkássaþjóninum. Og aðeins ef þetta virkar ekki, þá hleður hashget sjálft niður og hassar pakkann (og hleður honum upp á hashserver, þannig að hashserver útvegar hann í framtíðinni).

HashServer er valfrjáls þáttur í kerfinu, ekki mikilvægt, það þjónar eingöngu til að flýta fyrir og draga úr álagi á geymslurnar. Auðveldlega slökkt (valfrjálst --hashserver án breytu). Að auki getur þú auðveldlega búa til þinn eigin hashserver.

Stigvaxandi afrit og mismunadrif, fyrirhuguð úrelding

hashget gerir það mjög auðvelt að gera skýringarmynd stigvaxandi og mismunandi öryggisafrit. Af hverju skráum við ekki öryggisafritið okkar sjálft (með öllum okkar einstöku skrám)? Eitt lið --submit og þú ert búinn! Næsta öryggisafrit sem hashget býr til mun ekki innihalda skrár úr þessu skjalasafni.

En þetta er ekki mjög góð nálgun, vegna þess að það gæti komið í ljós að við endurheimt verðum við að draga öll hashget öryggisafrit í allri sögunni (ef hver inniheldur að minnsta kosti eina einstaka skrá). Það er vélbúnaður fyrir þetta fyrirhuguð úrelding afrita. Við verðtryggingu geturðu tilgreint gildistíma HashPackage --expires 2019-06-01, og eftir þessa dagsetningu (frá 00:00) verður það ekki notað. Ekki er hægt að eyða skjalasafninu sjálfu eftir þessa dagsetningu (Þó að hashget geti með þægilegum hætti sýnt vefslóðir allra afrita sem eru/verða rotnar í augnablikinu eða á hvaða dagsetningu sem er).

Til dæmis, ef við gerum fullt öryggisafrit þann 1. og verðtryggjum það með líftíma til mánaðamóta, fáum við mismunaafritunarkerfi.

Ef við skráum ný afrit á sama hátt verður til kerfi stigvaxandi afrita.

Ólíkt hefðbundnum kerfum gerir hashget þér kleift að nota margar undirliggjandi heimildir. Afritið mun minnka bæði með því að fækka skrám frá fyrri afritum (ef einhver er) og með opinberum skrám (það sem hægt er að hlaða niður).

Ef við af einhverjum ástæðum treystum ekki áreiðanleika Debian auðlinda (https://snapshot.debian.org/) eða notar aðra dreifingu, getum við einfaldlega gert fullt öryggisafrit einu sinni með öllum pakkanum og reitt okkur síðan á það (með því að slökkva á heuristics). Nú, ef allir netþjónar dreifingarinnar okkar reynast okkur ekki tiltækir (á minjagripainternetinu eða meðan á uppvakningaheimild stendur), en öryggisafritin okkar eru í lagi, getum við endurheimt hvaða stutta diff öryggisafrit sem er sem byggir aðeins á fyrri afritunum okkar .

Hashget treystir aðeins á traustan endurheimt að eigin vali. Þau sem þú telur áreiðanleg verða notuð.

FilePool og Glacier

Vélbúnaður FilePool gerir þér kleift að hafa ekki stöðugt samband við ytri netþjóna til að hlaða niður pakka, heldur nota pakka úr staðbundinni skrá eða fyrirtækjaþjóni, til dæmis:

$ hashget -u . --pool /tmp/pool

eða

$ hashget -u . --pool http://myhashdb.example.com/

Til að búa til laug í staðbundinni möppu þarftu bara að búa til möppu og henda skrám inn í hana, hashgetið sjálft finnur það sem það þarf með því að nota kjötkássa. Til að gera laugina aðgengilega í gegnum HTTP þarftu að búa til tákntengla á sérstakan hátt; þetta er gert með einni skipun (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). HTTP FilePool sjálft er kyrrstæðar skrár, þannig að allir einfaldir vefþjónar geta þjónað þeim, álagið á netþjóninn er næstum núll.

Þökk sé FilePool geturðu notað ekki aðeins http(s) auðlindir sem grunnauðlindir heldur líka til dæmis,Amazon Glacier.

Eftir að öryggisafritið hefur verið hlaðið upp á jökulinn fáum við upphleðsluauðkenni hans og notum það sem vefslóð. Til dæmis:

hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01

Nú munu ný (mismunandi) öryggisafrit byggjast á þessu öryggisafriti og verða styttri. Eftir að hafa tekið upp diffbackupið getum við séð hvaða úrræði það byggir á:

hashget --info /tmp/unpacked/ list

og notaðu bara skeljaforskrift til að hlaða niður öllum þessum skrám frá Glacier í sundlaugina og keyra venjulega bata: hashget -u /tmp/unpacked —pool /tmp/pool

Er leikurinn kertsins virði?

Í einfaldasta tilvikinu borgarðu einfaldlega minna fyrir öryggisafrit (ef þú geymir þau einhvers staðar í skýinu fyrir peninga). Kannski miklu, miklu minna.

En það er ekki það eina. Magn breytist í gæði. Þú getur notað þetta til að fá hágæða uppfærslu á öryggisafritunarkerfinu þínu. Til dæmis, þar sem öryggisafrit okkar eru nú styttri, getum við ekki gert mánaðarlega afrit heldur daglega. Geymið þau ekki í sex mánuði, eins og áður, heldur í 5 ár. Áður geymdir þú það í hægri en ódýrri „köldu“ geymslu (Glacier), nú geturðu geymt það í heitri geymslu, þaðan sem þú getur alltaf hlaðið niður öryggisafriti á fljótlegan hátt og endurheimt það á nokkrum mínútum, ekki á einum degi.

Þú getur aukið áreiðanleika öryggisafritunargeymslu. Ef við geymum þau núna í einni geymslu, þá getum við, með því að draga úr magni öryggisafrita, geymt þau í 2-3 geymslum og lifað sársaukalaust af ef eitt þeirra skemmist.

Hvernig á að reyna að byrja að nota?

Farðu á gitlab síðuna https://gitlab.com/yaroslaff/hashget, settu upp með einni skipun (pip3 install hashget[plugins]) og lestu bara og keyrðu skyndiræsingu. Ég held að það taki 10-15 mínútur að gera alla einföldu hlutina. Svo geturðu prófað að þjappa sýndarvélunum þínum, búa til vísbendingarskrár ef þörf krefur til að gera þjöppunina sterkari, leika þér með laugar, staðbundinn kjötkássagagnagrunn og kjötkássaþjón ef þú hefur áhuga, og næsta dag sjáðu hver stærð stigvaxandi öryggisafritsins er. verður ofan á gærdaginn.

Heimild: www.habr.com

Bæta við athugasemd