Ku yaree kaydinta 99.5% hashget

xashiish - waa bilaash, il furan kala saarid waa utility la mid ah kaydka oo kuu ogolaanaya inaad si weyn u yarayso cabbirka kaydinta, iyo sidoo kale abaabulo kordhinta iyo nidaamyada kaydinta kala duwan iyo in ka badan.

Tani waa maqaal dulmar ah oo lagu qeexayo sifooyinka. Isticmaalka dhabta ah ee hashget (aad u fudud) ayaa lagu sharaxay README mashruuc iyo dukumeenti wiki.

Isbarbar dhigid

Sida uu qabo sharciga nooca, waxaan isla markiiba ku bilaabi doonaa khiyaamada - isbarbardhigga natiijooyinka:

Tusaalaha xogta
cabbirka aan la xidhin
.tar.gz
hashget.tar.gz

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

Kernel 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% )

Background ku saabsan waxa kaabta ku habboon oo waxtar leh waa in ay ahaataa

Mar kasta oo aan kayd ka sameeyo mishiin cusub oo la abuuray, waxa iga xumaaday dareenka ah in aan wax khaldan samaynayo. Waa maxay sababta aan kaydka culus uga helo nidaamka, halkaasoo hal-abuurnimadayda aan qiimaha lahayn, ee aan la dhayalsan karin ay tahay hal-line index.html oo leh qoraalka "Hello world"?

Waa maxay sababta 16 MB /usr/sbin/mysqld ugu jiro kaydkayga? Runtii ma laga yaabaa in adduunkan aan sharaf u leeyahay in aan xafido faylkan muhiimka ah, oo haddii aan ku guuldareysto, ay lumin doonto bini'aadamka? Waxay u badan tahay maya. Waxaa lagu kaydiyaa server-yada debian-ka ee aadka la isku halleyn karo (kalsoonida iyo wakhtiga aan la barbar dhigi karin waxa aan bixin karo), iyo sidoo kale kaydinta (malaayiin iyaga ka mid ah) ee maamulayaasha kale. Runtii ma waxaan u baahanahay inaan abuurno 10+ nuqulka 000aad ee faylkan muhiimka ah si aan u wanaajino isku halaynta?

Guud ahaan xashiish wuxuuna xalliyaa dhibaatadan. Marka la buuxiyo, waxay abuurtaa kayd aad u yar. Marka la furayo - nidaam gebi ahaanba aan xirnayn, oo la mid ah waxa uu noqon lahaa haddii tar -c / tar -x. (Si kale haddii loo dhigo, tani waa baakad aan khasaare lahayn)

Sida hashget u shaqeeyo

hashget waxa uu leeyahay fikradaha Xidhmada iyo HashPackage, iyaga oo ka caawinaya waxa ay samaynaysaa kala-saarid.

Xidhmada (bac caag ah). Fayl (sida caadiga ah .deb ama .tar.gz archive) kaas oo si ammaan ah looga soo dejisan karo internetka, kaas oo hal ama ka badan laga heli karo.

HashPackage - Fayl yar oo JSON ah oo matalaya Xidhmo, oo ay ku jiraan URL xidhmada iyo wadarta xashiishka (sha256) ee faylalka ka yimid. Tusaale ahaan, xirmo 5 megabyte mariadb-server-core, cabbirka xashiishku waa 6 kilobytes oo keliya. Ku dhawaad ​​kun jeer ayaa ka yar.

Kala goynta - abuurista kayd aan lahayn faylal nuqul ah (haddii kala-saaruhu ogyahay halka xirmada asalka ah laga soo dejisan karo, waxay yaraynaysaa nuqullada kaydka).

Baakadaha

Marka la xirxiro, dhammaan feylasha ku jira tusaha la xirxiray waa la sawiraa, wadarta xashiishadooda ayaa la xisaabiyaa, haddii wadarta laga helo mid ka mid ah HashPackages-ka la yaqaan, ka dib metadata ku saabsan faylka (magaca, xashiishka, xuquuqda gelitaanka, iwm.) waa la kaydiyaa. fayl gaar ah .hashget-restore.json, kaas oo sidoo kale lagu dari doono kaydka.

Xaaladda ugu fudud, baakadda lafteedu uma muuqato mid ka dhib badan daamurka:

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

Furitaanka

Baakadeynta waxaa loo sameeyaa laba marxaladood. Marka hore xidhidhaynta daamurka caadiga ah:

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

ka dibna ka soo celi shabakada:

hashget -u /path/to/data

Marka dib loo soo celinayo, hashget waxa uu akhriyaa faylka .hashget-restore.json, soo dejiyo baakadaha lagama maarmaanka ah, ka soo saara, oo soo saara faylalka lagama maarmaanka ah, iyaga oo ku rakibaya waddooyinka loo baahan yahay, oo leh mulkiilaha/koox/ ogolaanshaha loo baahan yahay.

Waxyaabo badan oo adag

Waxa kor lagu sharraxay ayaa horeba ugu filan kuwa "raba sida daamurka oo kale, laakiin in aan Debian-kayga ka dhigo 4 megabyte." Aynu dib u eegno waxyaabo badan oo kakan.

Tilmaanta

Haddii aanu hashget-ka lahayn hal xidhmo oo HashPackage ah, markaa si fudud ma awoodo in ay wax ka soo saaraan.

Waxa kale oo aad samayn kartaa HashPackage gacanta (si fudud: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), laakiin waxaa jira hab ka habboon.

Si loo helo xirmada xashiishka lagama maarmaanka ah, waxaa jira marxalad tusmaynta (si toos ah ayaa loo fuliyaa amarka --pack) iyo heuristics. Marka tusmaynta, hashget β€œfeeds” fayl kasta oo la helay dhammaan heuristics la heli karo oo xiisaynaya. Heuristics ayaa markaa tilmaami karta Xidhmo kasta si loo abuuro HashPackage.

Tusaale ahaan, Debian heuristic wuxuu jecel yahay faylka /var/lib/dpkg/status wuxuuna ogaadaa xirmooyinka debian-ka ee rakiban, iyo haddii aan la tilmaamin (ma jiro HashPackage loo abuuray iyaga), soo dejiso oo tusmeeyaan iyaga. Natiijadu waa saameyn aad u wanaagsan - hashget had iyo jeer si wax ku ool ah ayaa looga saari doonaa Debian OSes, xitaa haddii ay haystaan ​​xirmooyinki ugu dambeeyay.

Faylasha tilmaanta

Haddii shabakadaadu isticmaasho qaar ka mid ah xirmooyinkaaga lahaanshaha ama xirmo dadweyne oo aan ku jirin hashget heuristics, waxaad ku dari kartaa fayl fudud oo hashget-hint.json sidatan:

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

Marka xigta, mar kasta oo kayd la sameeyo, xirmada waa la tilmaami doonaa (haddii aysan horay u jirin), faylasha xirmada waxaa laga soo saari doonaa kaydka. Wax barnaamij ah looma baahna, wax walba waxaa laga samayn karaa vim iyo kaydinta kayd kasta. Fadlan ogow in aad uga mahadcelineyso habka wadarta xashiishka, haddii faylasha qaar ka mid ah xirmada lagu beddelo gudaha (tusaale ahaan, faylka qaabeynta waa la beddelay), markaa faylasha la beddelay waxaa lagu keydin doonaa kaydka "sida uu yahay" lamana goyn doono.

Haddii qaar ka mid ah baakadahaaga la cusboonaysiiyo si xilliyo ah, laakiin isbeddeladu aanay aad u weynayn, waxaad tilmaami kartaa oo keliya noocyada waaweyn. Tusaale ahaan, nooca 1.0 waxay sameeyeen tilmaam tilmaamaya mypackage-1.0.tar.gz, oo si buuxda ayaa loo kala saari doonaa, ka dibna waxay sii daayeen nooca 1.1, kaas oo waxoogaa ka duwan, laakiin tilmaanta lama cusbooneysiin. Waa caadi Keliya faylasha u dhigma (waxaa lagu soo celin karaa) nooca 1.0 ayaa la kala saaray.

Heuristic-ka habeeya faylka tilmaanta ayaa tusaale fiican u ah fahamka habka gudaha ee sida heuristics u shaqeeyo. Waxa kaliya oo ay socodsiisaa faylalka hashget-hint.json (ama .hashget-hint.json oo leh dhibco) wayna iska indho tirtaa dhammaan kuwa kale. Faylkan, waxay go'aaminaysaa URL xidhmada ay tahay in la tusmeeyo, oo hashget-ku-tusmeeyo (haddii aanu horeba sidaas u samayn)

HashServer

Waxay noqon doontaa mid aad u xoog badan in la sameeyo tusmaynta buuxda marka la abuurayo kayd. Si aad tan u samayso, waxaad u baahan tahay inaad soo dejiso xidhmo kasta, ka furto, oo aad tusmayso. Sidaa darteed hashget waxay isticmaashaa nidaam HashServer. Marka la helo xirmo Debian ah oo rakiban, haddii aan laga helin HashPackage-ka maxalliga ah, marka hore waxaa la isku dayaa in si fudud loo soo dejiyo HashPackage server-ka xashiishka. Oo kaliya haddii ay taasi shaqayn waydo, hashget lafteedu way soo dejisanaysaa oo hashes xidhmada (oo ku dhejisaa hashserver, si xashiishiyuhu u siiyo mustaqbalka).

HashServer waa shay ikhtiyaari ah ee nidaamka, ma aha mid muhiim ah, waxay u adeegtaa oo kaliya si loo dedejiyo oo loo yareeyo culeyska kaydka. Si fudud u naafo ah (ikhtiyaar --hashserver iyada oo aan xuduud lahayn). Intaa waxaa dheer, waxaad si fudud u kartaa samee hashserver adiga kuu gaar ah.

Kordhinta iyo kaabayaasha kala duwan, gabowga la qorsheeyay

xashiish waxay aad u fududaynaysaa samaynta jaantuska dib u kordhin iyo kala duwanaansho. Waa maxay sababta aan u tixgalin waynay kaydkeena lafteeda (oo wata dhamaan faylashayada gaarka ah)? Hal koox --submit oo waad dhammaatay! Kaydka soo socda ee hashget uu abuuro kuma dari doono faylasha kaydkan.

Laakiin tani maaha hab aad u wanaagsan, sababtoo ah waxaa laga yaabaa inay soo baxdo in marka dib loo soo celinayo ay tahay inaan jiidno dhammaan hashget-ka taariikhda oo dhan (haddii mid kastaa ka kooban yahay ugu yaraan hal fayl oo gaar ah). Waxaa jira hab loogu talagalay tan gabowga la qorsheeyay ee kaydinta. Marka tusmaynta, waxaad cayimi kartaa taariikhda uu dhacayo HashPackage --expires 2019-06-01, iyo taariikhdan kadib (laga bilaabo 00:00), lama isticmaali doono. Kaydka laftiisa lama tirtiri karo taariikhdan ka dib (inkasta oo hashget uu si ku haboon u tusi karo URL-yada dhammaan kaydka kuwaas oo qudhmi doona wakhtigan ama taariikh kasta).

Tusaale ahaan, haddii aan samayno nuqul buuxa oo ku saabsan 1-aad oo aan ku muujinno cimriga ilaa dhammaadka bisha, waxaan heli doonaa nidaam kayd ah oo kala duwan.

Haddii aan si la mid ah u tilmaanno kayd cusub oo cusub, waxa jiri doona qorshe kayd-kordhineed.

Si ka duwan nidaamyada dhaqameed, hashget wuxuu kuu ogolaanayaa inaad isticmaasho ilo hoose oo badan. Kaydka waa la dhimi doonaa labadaba iyadoo la dhimayo faylalka kaydkii hore (haddii ay jiraan) iyo faylalka dadweynaha (maxaa la soo dejin karaa).

Haddii sabab qaar ka mid ah aynaan ku kalsoonayn isku halaynta ilaha Debian (https://snapshot.debian.org/) ama isticmaal qaybin kale, waxaan si fudud u samayn karnaa gurmad buuxa hal mar dhammaan baakadaha, ka dibna ku tiirsanaano (iyadoo curyaamisay heuristics). Hadda, haddii dhammaan server-yada qaybinteenna ay noqdaan kuwo aan naga heli karin (Internetka xusuusta ama inta lagu jiro apocalypse zombie), laakiin kaydkayaga ayaa nidaamsan, waxaan ka soo kaban karnaa kayd kasta oo gaaban oo ku tiirsan oo kaliya kaydkii hore. .

Hashget waxay kaliya ku tiirsan tahay ilaha soo kabashada ee lagu kalsoon yahay go'aankaaga. Kuwa aad u aragto in la isku halayn karo ayaa la isticmaali doonaa.

FilePool iyo Glacier

Mechanism FilePool Waxay kuu ogolaaneysaa inaadan si joogto ah ula xiriirin server-yada dibadda si aad u soo dejiso baakadaha, laakiin isticmaal baakadaha hagaha maxalliga ah ama server-ka shirkadda, tusaale ahaan:

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

ama

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

Si aad u samayso barkad tusaha maxaliga ah, kaliya waxaad u baahan tahay inaad abuurto tusaha oo aad ku tuurto faylasha, hashget lafteedu waxay heli doontaa waxa ay u baahan tahay adoo isticmaalaya xashiishka. Si aad barkada uga dhigto mid la heli karo iyada oo loo marayo HTTP, waxaad u baahan tahay inaad u abuurto calaamadaha qaab gaar ah; tan waxaa lagu sameeyaa hal amar (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). HTTP FilePool lafteedu waa faylal aan caadi ahayn, markaa server kasta oo fudud ayaa u adeegi kara, culayska saaran seerfarku waa eber.

Waad ku mahadsan tahay FilePool, kaliya ma isticmaali kartid agabka http(yada) sida ilaha aasaasiga ah, laakiin sidoo kale Tusaale ahaan, Amazon Glacier.

Ka dib markii aan kaydka ku dhejineyno barafka, waxaan helnaa Aqoonsigeeda Upload waxaana u isticmaalnaa URL ahaan. Tusaale ahaan:

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

Hadda kaydinta cusub (kala duwan) waxay ku salaysnaan doontaa kaydkan waxayna noqon doontaa mid gaaban. Ka dib marka daamurku furto dib-u-celinta, waxaan arki karnaa agabka ay ku tiirsan tahay:

hashget --info /tmp/unpacked/ list

oo kaliya isticmaal qoraalka qolofka si aad u soo dejiso dhammaan faylashan Glacier ilaa barkadda oo aad socodsiiso soo kabashada caadiga ah: hashget -u /tmp/unpacked β€”pool /tmp/pool

Ciyaartu ma u qalantaa shumaca?

Xaaladda ugu fudud, waxaad si fudud u bixin doontaa lacag yar oo kayd ah (haddii aad ku kaydiso meel daruur ah lacag). Waxaa laga yaabaa in badan, aad uga yar.

Laakiin taasi kaliya maaha. Tirada ayaa isu beddesha tayada. Waxaad u isticmaali kartaa tan si aad u hesho casriyeyn tayo sare leh oo lagu sameeyo qorshahaaga kaydinta. Tusaale ahaan, maadaama kaydkayagu hadda gaaban yahay, ma samayn karno kayd-celin bishii ah, laakiin kuwa maalinle ah. Ha kaydin lix bilood sidii hore, laakiin ilaa 5 sano. Markii hore, waxaad ku kaydisay kaydka "qabow" tartiib tartiib ah laakiin raqiis ah (Glacier), hadda waxaad ku kaydin kartaa kaydinta kulul, halkaas oo aad had iyo jeer si dhakhso ah u soo dejisan karto kaydinta oo aad ku soo celiso daqiiqado, ma aha maalin gudaheed.

Waxaad kordhin kartaa isku halaynta kaydinta kaydinta. Haddii aan hadda ku kaydinno hal meel oo kayd ah, ka dib iyadoo la yareynayo mugga kaydinta, waxaan awood u yeelan doonnaa inaan ku kaydinno 2-3 xarumood oo kaydinta oo aan ku noolaanno si aan xanuun lahayn haddii mid iyaga ka mid ah uu dhaawacmo.

Sida loo tijaabiyo oo loo bilaabo isticmaalka?

Tag bogga gitlab https://gitlab.com/yaroslaff/hashget, ku rakib hal amar (pip3 install hashget[plugins]) oo kaliya akhri oo fuliya bilow degdeg ah. Waxaan u maleynayaa inay qaadan doonto 10-15 daqiiqo in la sameeyo dhammaan waxyaabaha fudud. Markaa waxaad isku dayi kartaa inaad cadaadiso mishiinnada farsamada gacanta, samee faylal tilmaame ah haddii loo baahdo si aad cadaadisku u sii xoogeysato, ku ciyaar barkadaha, kaydka xogta xashiishka maxalliga ah iyo server-ka xashiishka haddii aad xiisaynayso, oo maalinta xigta arag cabbirka kaydinta kordhinta waxay noqon doontaa dusha sare ee shalay.

Source: www.habr.com

Add a comment