Nciphisa i-backups nge-99.5% nge-hashget

ihashget - isimahla, umthombo ovulekileyo umdiduplicator sisixhobo esiluncedo esifana nogcino olukuvumela ukuba unciphise ngokuphawulekayo ubungakanani bogcino, kwaye uququzelele izikimu zogcino ezongezelelekileyo kunye nezahlukileyo kunye nokunye.

Eli linqaku lesishwankathelo ukuchaza iimpawu. Ukusetyenziswa kwangempela kwe-hashget (lula kakhulu) kuchazwe kuyo README iprojekthi kunye wiki amaxwebhu.

The lekiswa

Ngokomthetho wohlobo, ndiza kuqalisa ngoko nangoko ngobuqhetseba- ndithelekisa iziphumo:

Isampulu yedatha
ubungakanani obungapakishwanga
.tar.gz
hashget.tar.gz

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

Linux kernel 5.0.4
934 Mb
161Mb (20%)
4.7MB ( 0.5% )

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

Imvelaphi yokuba kufuneka ibe yintoni i-backup efanelekileyo nesebenzayo

Ngalo lonke ixesha ndisenza i-backup yomatshini omtsha owenziweyo, ndandikhathazwa yimvakalelo yokuba ndenza into engalunganga. Kutheni ndifumana ugcino oluphezulu kwinkqubo, apho ubuchule bam obuxabisekileyo, obungonakaliyo buyi index.html yomgca omnye kunye nombhalo β€œMolo hlabathi”?

Kutheni kukho i-16 MB /usr/sbin/mysqld kwi-backup yam? Ngaba ngokwenene kunokwenzeka ukuba kweli hlabathi ndinelungelo lokugcina le fayile ebalulekileyo, kwaye ukuba ndiyasilela, iya kulahleka kuluntu? Ngokunokwenzeka hayi. Igcinwe kwiiseva ezithembeke kakhulu ze-debian (ukuthembeka kunye nexesha elingenako ukuthelekiswa nento endinokukunika yona), kunye nakwii-backups (izigidi zazo) zabanye abalawuli. Ngaba ngokwenene kufuneka senze i-10 + 000 ikopi yale fayile ebalulekileyo ukuphucula ukuthembeka?

Ngokubanzi ihashget kwaye isombulula le ngxaki. Xa ipakishwe, yenza i-backup encinci kakhulu. Xa ukhulula - inkqubo engapakishwanga ngokupheleleyo, efana nokuba ingaba yintoni na ukuba tar -c / tar -x. (Ngamanye amazwi, oku kukupakishwa okungalahlekiyo)

Isebenza njani i-hashget

I-hashget ineengqikelelo zePackage kunye neHashPackage, ngoncedo lwayo yenza ukuphinda-phinda.

ipakethe (ibhegi yeplastikhi). Ifayile (idla ngokuba yi .deb okanye .tar.gz yogcino lwazi) enokhutshelwa ngokukhuselekileyo kwi-Intanethi, nalapho kunokufumaneka ifayile enye okanye ngaphezulu.

IHashPackage - ifayile encinci ye-JSON emele iPhakeji, kuquka i-URL yephakheji kunye ne-hash sums (sha256) yeefayile ezivela kuyo. Umzekelo, kwiphakheji ye-5 ye-megabyte ye-mariadb-server-core, ubungakanani be-hashpackage yi-6 kilobytes kuphela. Malunga newaka eliphindwe kabini ngaphantsi.

Ukunciphisa β€” ukwenza i-archive ngaphandle kweefayile eziphindwe kabini (ukuba i-deduplicator iyazi apho iphakheji yoqobo inokukhutshelwa khona, inciphisa iimpinda ezivela kwindawo yokugcina).

Ukupakishwa

Xa upakisha, zonke iifayile ezivela kulawulo olupakishwayo ziyaskenwa, iihashi zazo zibaliwe, kwaye ukuba isixa sifunyenwe kwenye yeeHashPackages ezaziwayo, ngoko imetadata malunga nefayile (igama, ihashi, amalungelo okufikelela, njl. njl.) kwifayile ekhethekileyo .hashget-restore.json, eya kufakwa kwakhona kwindawo yokugcina.

Kweyona meko ilula, ipakethe ngokwayo ayibonakali inzima kunetha:

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

Kukhutshwa

Ukukhutshwa kwenziwa ngezigaba ezibini. Kuqala ukukhutshwa kwetha okuqhelekileyo:

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

emva koko buyisela kwinethiwekhi:

hashget -u /path/to/data

Xa ubuyisela, i-hashget ifunda ifayile .hashget-restore.json, ikhuphela iipakethe eziyimfuneko, ikhuphe, kwaye ikhuphe iifayile eziyimfuneko, ifake kwiindlela ezifunekayo, kunye nomnini / iqela / iimvume ezifunekayo.

Izinto ezinzima ngakumbi

Oku kuchazwe ngasentla sele kwanele kwabo "bayifunayo njenge tar, kodwa ukupakisha iDebian yam kwiimegabytes ezi-4." Makhe sijonge ezinye izinto ezintsonkothileyo kamva.

Isalathiso

Ukuba i-hashget ayinayo i-HashPackage enye kwaphela, ngekhe ikwazi ukuphinda-phinda nantoni na.

Unokwenza iHashPackage ngesandla (lula nje: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), kodwa kukho indlela elula ngakumbi.

Ukuze ufumane i-hashpackage efunekayo, kukho isiteji isalathisi (iyazenzekela ngomyalelo --pack) kunye i-heuristics. Xa isalathiso, i-hashget "ityisa" ifayile nganye efunyenweyo kuzo zonke ii-heuristics ezikhoyo ezinomdla kuyo. I-Heuristics inokuthi emva koko ibonise nayiphi na iPhakeji ukwenza iHashPackage.

Umzekelo, i-Debian heuristic iyayithanda ifayile /var/lib/dpkg/status kwaye ibona iipakethe zedebian ezifakiweyo, kwaye ukuba azikho indexed (akukho HashPackage eyenzelwe zona), ukukhuphela kunye nezalathiso kubo. Isiphumo sisiphumo esihle kakhulu - i-hashget iyakuhlala ikhupha ii-Debian OSes, nokuba zineepakethe zakutsha nje.

Iifayile zoluphawu

Ukuba umsebenzi womnatha wakho usebenzisa ezinye zeepakethe zakho zobunini okanye ipakethe kawonke-wonke engaqukwanga kwi-hashget heuristics, unokongeza ifayile elula ye-hashget-hint.json kuyo ngolu hlobo:

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

Okulandelayo, ixesha ngalinye i-archive isenziwa, iphakheji iya kuba yi-indexed (ukuba ayizange ibe ngaphambili), kwaye iifayile zephakheji ziya kukhutshwa kwi-archive. Akukho nkqubo ifunekayo, yonke into inokwenziwa kwi-vim kwaye ugcine kuyo yonke i-backup. Nceda uqaphele ukuba ngokubonga kwindlela ye-hash sum, ukuba ezinye iifayile ezivela kwiphakheji zitshintshwa kwindawo yendawo (umzekelo, ifayile yoqwalaselo itshintshiwe), ngoko iifayile ezitshintshileyo ziya kugcinwa kwi-archive "njengokuba kunjalo" kwaye aziyi kuncitshiswa.

Ukuba ezinye iipakethe zakho zihlaziywa ngamaxesha athile, kodwa utshintsho alukhulu kakhulu, unokucebisa kuphela kwiinguqulelo ezinkulu. Umzekelo, kwinguqulo 1.0 benza ingcebiso ekhomba ku-mypackage-1.0.tar.gz, kwaye iya kukhutshwa ngokupheleleyo, emva koko bakhupha inguqulo 1.1, eyahluke kancinane, kodwa ingcebiso ayizange ihlaziywe. Kulungile. Kuphela ziifayili ezifanayo (ezinokubuyiselwa kuzo) inguqulelo 1.0 ezikhutshiweyo.

I-heuristic eyenza ifayile yengcebiso ngumzekelo omhle wokuqonda indlela yangaphakathi yendlela yokusebenza kwe-heuristics. Isebenza kuphela iifayile ze-hashget-hint.json (okanye .hashget-hint.json enechaphaza) kwaye ayihoyi zonke ezinye. Ukusuka kule fayile, imisela ukuba yeyiphi iphakheji ye-URL ekufuneka ifakwe kwisalathisi, kwaye izalathiso ze-hashget kuyo (ukuba ayikakwenzi njalo)

IHashServer

Kuya kuba nzima kakhulu ukwenza isalathisi esipheleleyo xa usenza ii-backups. Ukwenza oku, kufuneka ukhuphele ipakethe nganye, uyikhuphe, kwaye uyikhuphele. Ke ngoko i-hashget isebenzisa iskimu nge IHashServer. Xa iphakheji ye-Debian efakiweyo ifunyenwe, ukuba ayifumanekanga kwi-HashPackage yendawo, umzamo wokuqala wenziwa ukukhuphela ngokulula i-HashPackage kwiseva ye-hash. Kwaye kuphela ukuba oku akusebenzi, i-hashget ngokwayo iyakhuphela kwaye ikhuphe iphakheji (kwaye ilayishe kwi-hashserver, ukuze i-hashserver ibonelele kwixesha elizayo).

I-HashServer yinto ekhethiweyo yeskimu, ayibalulekanga, isebenza kuphela ukukhawuleza nokunciphisa umthwalo kwiindawo zokugcina. Ikhubazeke ngokulula (ukhetho --hashserver ngaphandle kweeparamitha). Ukongeza, unako lula yenza eyakho i-hashserver.

I-backups eyongeziweyo kunye neyohlukileyo, ukuphelelwa yisikhathi okucwangcisiweyo

ihashget yenza kube lula kakhulu ukwenza umzobo i-backups ezongeziweyo kunye nezahlukileyo. Kutheni singenzi isalathisi sethu ngokwaso (kunye nazo zonke iifayile zethu ezizodwa)? Iqela elinye --submit kwaye ugqibile! Ugcino olulandelayo olwenziwa yi-hashget aluzuziquka iifayile ezisuka kolu gcino.

Kodwa oku akuyondlela ilungileyo kakhulu, kuba kunokuvela ukuba xa ubuyisela kuya kufuneka sitsale zonke ii-backups ze-hashget kwimbali yonke (ukuba nganye iqulethe ubuncinane ifayile eyodwa eyodwa). Kukho indlela yokwenza oku ukuphelelwa okucwangcisiweyo kogcino. Xa wenza isalathiso, ungacacisa umhla wokuphelelwa kweHashPackage --expires 2019-06-01, kwaye emva kwalo mhla (ukusuka 00:00), ayiyi kusetyenziswa. Uvimba ngokwawo awunakucinywa emva kwalo mhla (Nangona i-hashget inokubonisa ngokulula ii-URL zazo zonke ii-backups ezi/eziza kubola ngalo mzuzu okanye nangawuphi na umhla).

Umzekelo, ukuba senza i-backup epheleleyo ngomhla woku-1 kwaye sibonise ixesha lobomi de kube sekupheleni kwenyanga, siya kufumana iskimu sokulondoloza esahlukileyo.

Ukuba sifaka isalathiso kwii-backups ezintsha ngendlela efanayo, kuya kubakho isikimu sokunyuswa kwee-backups.

Ngokungafaniyo nezicwangciso zemveli, i-hashget ikuvumela ukuba usebenzise imithombo emininzi esisiseko. I-backup iya kuncitshiswa zombini ngokunciphisa iifayile kwii-backups zangaphambili (ukuba zikhona) kunye neefayile zoluntu (yintoni enokukhutshelwa).

Ukuba ngesizathu esithile asithembi ukuthembeka kwemithombo yeDebian (https://snapshot.debian.org/) okanye isebenzisa olunye unikezelo, singenza ngokulula ugcino olupheleleyo kanye ngazo zonke iipakethe, kwaye ke sithembele kuyo (ngokukhubaza i-heuristics). Ngoku, ukuba zonke iiseva zonikezelo lwethu ziye zangafumaneki kuthi (kwi-Intanethi yesikhumbuzo okanye ngexesha le-zombie apocalypse), kodwa ii-backups zethu zilungelelene, sinokuphinda sifumane nakuphi na ukugcinwa kwe-diff emfutshane exhomekeke kuphela kwii-backups zethu zangaphambili. .

IHashget ixhomekeke kuphela kwimithombo yokubuyisela ethembekileyo ngokubona kwakho. Ezo ucinga ukuba zithembekile ziya kusetyenziswa.

FilePool kunye neGlacier

Indlela FilePool ikuvumela ukuba ungaqhagamshelani rhoqo neeseva zangaphandle ukukhuphela iipakethe, kodwa sebenzisa iipakethe kulawulo lwasekhaya okanye iseva yeshishini, umzekelo:

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

okanye

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

Ukwenza idama kulawulo lwendawo, kufuneka nje udale ulawulo kwaye uphose iifayile kuyo, i-hashget ngokwayo iya kufumana into eyifunayo usebenzisa i-hashes. Ukwenza ichibi lifikeleleke nge-HTTP, kufuneka wenze ii-symlinks ngendlela ekhethekileyo; oku kwenziwa ngomyalelo omnye (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). I-HTTP FilePool ngokwayo iifayili ezimileyo, ngoko ke nayiphi na iseva yewebhu elula inokuyisebenzisa, umthwalo kumncedisi uphantse ube ngu-zero.

Ndiyabulela kwiFayilePool, ungasebenzisa kuphela i-http (s) imithombo njengemithombo yesiseko, kodwa kwakhona Umzekelo,Amazon Glacier.

Emva kokulayisha i-backup kwi-glacier, sifumana i-ID yayo yokulayisha kwaye siyisebenzise njenge-URL. Umzekelo:

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

Ngoku ii-backups ezintsha (ezahlukileyo) ziya kusekelwa kolu gcino kwaye ziya kuba mfutshane. Emva kokubeka itela yokukhupha i-diffbackup, sinokubona ukuba zeziphi izixhobo ezixhomekeke kuzo:

hashget --info /tmp/unpacked/ list

kwaye usebenzise nje iskripthi seqokobhe ukukhuphela zonke ezi fayile ukusuka kwiGlacier ukuya echibini kwaye usebenzise ukubuyisela okuqhelekileyo: hashget -u /tmp/unpacked -pool /tmp/pool

Ngaba umdlalo ulixabisa ikhandlela?

Kweyona meko ilula, uya kuhlawula ngokulula ii-backups (ukuba uzigcina kwindawo ethile efini ngemali). Mhlawumbi kakhulu, ngaphantsi.

Kodwa oko akukuphela kwento. Ubuninzi bujika bube bumgangatho. Ungasebenzisa oku ukufumana uphuculo olukumgangatho ophezulu kwisikimu sakho sogcino. Umzekelo, ekubeni ii-backups zethu ngoku zifutshane, asikwazi ukwenza ii-backups zenyanga, kodwa zemihla ngemihla. Ungazigcini iinyanga ezintandathu, njengangaphambili, kodwa iminyaka emi-5. Ngaphambili, uyigcine kwindawo epholileyo kodwa ephantsi "ebandayo" yokugcina (i-Glacier), ngoku ungayigcina kwindawo yokugcina eshushu, apho unokuhlala ukhuphela ngokukhawuleza i-backup kwaye uyibuyisele ngemizuzu, kungekhona ngosuku.

Unokwandisa ukuthembeka kogcino lokugcina. Ukuba ngoku sigcina kwindawo enye yokugcina, ngoko ngokunciphisa umthamo wee-backups, siya kukwazi ukuwagcina kwiindawo zokugcina ezi-2-3 kwaye siphile ngokungenabuhlungu ukuba omnye wabo wonakaliswa.

Ungazama njani kwaye uqale ukusebenzisa?

Yiya kwiphepha legitlab https://gitlab.com/yaroslaff/hashget, faka ngomyalelo omnye (pip3 install hashget[plugins]) kwaye funda kwaye uphumeze uqalise ngokukhawuleza. Ndicinga ukuba kuya kuthatha imizuzu eyi-10-15 ukwenza zonke izinto ezilula. Emva koko unokuzama ukucinezela oomatshini bakho benyani, wenze iifayile zoluphawu ukuba kuyimfuneko ukwenza ucinezelo lomelele, dlala ngamachibi, i-database ye-hash yendawo kunye nomncedisi we-hash ukuba unomdla, kwaye ngosuku olulandelayo ubone ukuba yintoni ubungakanani bokugcinwa kwe-backup. izakuba phezu kwezolo.

umthombo: www.habr.com

Yongeza izimvo