E ho'ēmi i ka waihona e 99.5% me ka hashget

hashget - he manuahi, he kumu hāmama dedulicator He mea pono e like me ka waihona e hiki ai iā ʻoe ke hōʻemi nui i ka nui o nā backup, a me ka hoʻonohonoho ʻana i nā papa hana hoʻihoʻi ʻokoʻa a me nā mea hou aku.

He ʻatikala kēia e wehewehe i nā hiʻohiʻona. Ua wehewehe ʻia ka hoʻohana maoli ʻana i ka hashget (maʻalahi loa). README papahana a me palapala wiki.

Kūlike

E like me ke kānāwai o ke ʻano, e hoʻomaka koke wau me ka hoʻohālikelike - hoʻohālikelike i nā hopena:

Laʻana ʻikepili
ka nui wehe ʻole ʻia
.tar.gz
hashget.tar.gz

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

Linux nernel 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% )

ʻO ka ʻaoʻao e pili ana i kahi hoʻihoʻi kūpono a kūpono hoʻi

I kēlā me kēia manawa aʻu i hoʻopaʻa ai i kahi mīkini virtual hou i hana ʻia, ua hauʻoli wau i ka manaʻo ua hana hewa wau. No ke aha e loaʻa iaʻu kahi kākoʻo kiʻekiʻe mai ka ʻōnaehana, kahi o kaʻu kumu kumu kūʻai ʻole a pau ʻole he laina hoʻokahi index.html me ka kikokikona "Aloha honua"?

No ke aha he 16 MB /usr/sbin/mysqld i kaʻu waihona? He mea hiki anei ia'u ma keia ao ka hanohano o ka malama ana i keia waihona ko'iko'i, a ina e haule au, lilo ia i kanaka? ʻAʻole paha. Mālama ʻia ia ma nā kikowaena debian hilinaʻi nui (ʻo ka hilinaʻi a me ka hoʻomau ʻana ʻaʻole hiki ke hoʻohālikelike ʻia i ka mea hiki iaʻu ke hāʻawi), a me nā backups (miliona o lākou) o nā admins ʻē aʻe. Pono anei mākou e hana i 10+ kope mua o kēia faila koʻikoʻi e hoʻomaikaʻi i ka hilinaʻi?

ʻO ka maʻamau hashget a hoʻoponopono i kēia pilikia. Ke hoʻopaʻa ʻia, hana ia i kahi waihona liʻiliʻi loa. I ka wehe ʻana - kahi ʻōnaehana wehe ʻole ʻia, e like me ka mea inā inā tar -c / tar -x. (Ma nā huaʻōlelo ʻē aʻe, ʻo kēia ka pahu poho ʻole)

Pehea e hana ai ka hashget

Loaʻa i ka hashget nā manaʻo o Package a me HashPackage, me kā lākou kōkua e hana i ka deduplication.

pūʻolo (eke 'ūlina). He waihona (maʻa mau he .deb a i ʻole .tar.gz waihona) hiki ke hoʻoiho paʻa ʻia mai ka Pūnaewele, a mai kahi a i ʻole nā ​​faila e loaʻa ai.

HashPackage - kahi faila JSON liʻiliʻi e hōʻike ana i kahi Pūʻulu, me ka URL o ka pūʻolo a me nā helu hash (sha256) o nā faila mai ia mea. No ka laʻana, no kahi pūʻolo mariadb-server-core 5 megabyte, ʻo ka nui o ka hashpackage he 6 kilobytes wale nō. Ma kahi o hoʻokahi tausani manawa i emi iho.

Hoʻopau hou - ka hana ʻana i kahi waihona me ka ʻole o nā faila ʻelua (inā ʻike ka dedulicator i kahi e hoʻoiho ʻia ai ka pūʻolo kumu, hoʻemi ia i nā kope mai ka waihona).

Hoʻopili ʻia

I ka hoʻopaʻa ʻana, nānā ʻia nā faila a pau mai ka papa kuhikuhi i hoʻopaʻa ʻia, helu ʻia kā lākou mau helu hash, a inā ʻike ʻia ka huina ma kekahi o nā HashPackages i ʻike ʻia, a laila mālama ʻia nā metadata e pili ana i ka faila (inoa, hash, kuleana komo, etc.) ma kahi faila kūikawā .hashget-restore.json, e hoʻokomo pū ʻia i loko o ka waihona.

I ka hihia maʻalahi, ʻaʻole i ʻoi aku ka paʻakikī o ka paʻi ma mua o ka tar:

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

Unpacking

Hana ʻia ka wehe ʻana i ʻelua mau ʻāpana. ʻO ka wehe mua ʻana i ka tar maʻamau:

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

a laila hoʻihoʻi mai ka pūnaewele:

hashget -u /path/to/data

I ka hoʻihoʻi ʻana, heluhelu ʻo hashget i ka faila .hashget-restore.json, hoʻoiho i nā pūʻolo pono, wehe iā lākou, a wehe i nā faila pono, e hoʻokomo iā lākou i nā ala i makemake ʻia, me ka mea nona ka mea pono / hui / ʻae.

ʻOi aku nā mea paʻakikī

Ua lawa ka mea i wehewehe ʻia ma luna nei no ka poʻe "makemake e like me ka tar, akā e hoʻopili i kaʻu Debian i 4 megabytes." E nānā kākou i nā mea paʻakikī ma hope.

Papa kuhikuhi helu

Inā ʻaʻole loaʻa kahi HashPackage hoʻokahi i ka hashget, a laila ʻaʻole hiki iā ia ke wehe i kekahi mea.

Hiki iā ʻoe ke hana i kahi HashPackage me ka lima (maʻalahi: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), akā aia kahi ala maʻalahi.

I mea e loaʻa ai ka hashpackage pono, aia kahi pae hōʻike helu (Hoʻokō ʻia ia me ke kauoha --pack) a heuristics. I ka helu ʻana, hashget "feeds" i kēlā me kēia faila i loaʻa i nā heuristic āpau i makemake ʻia. Hiki i nā Heuristics ke kuhikuhi i kēlā me kēia Pūʻulu e hana i kahi HashPackage.

No ka laʻana, makemake ka Debian heuristic i ka faila /var/lib/dpkg/status a ʻike i nā pūʻolo debian i hoʻokomo ʻia, a inā ʻaʻole i kuhikuhi ʻia (ʻaʻohe HashPackage i hana ʻia no lākou), hoʻoiho a kuhikuhi iā lākou. He hopena maikaʻi loa ka hopena - e hoʻopau mau ʻo hashget i nā Debian OSes, ʻoiai inā loaʻa iā lākou nā pūʻulu hou loa.

Nā waihona kuhikuhi

Inā hoʻohana kāu pūnaewele i kekahi o kāu mau pūʻolo waiwai a i ʻole kahi pūʻolo lehulehu ʻaʻole i hoʻokomo ʻia i ka heuristics hashget, hiki iā ʻoe ke hoʻohui i kahi faila hashget-hint.json hint maʻalahi iā ia e like me kēia:

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

A laila, i kēlā me kēia manawa i hana ʻia kahi waihona, e kuhikuhi ʻia ka pūʻolo (inā ʻaʻole ia ma mua), a e hoʻopau ʻia nā faila mai ka waihona. ʻAʻole pono ka polokalamu, hiki ke hana i nā mea āpau mai vim a mālama i kēlā me kēia waihona. E ʻoluʻolu e hoʻomaikaʻi i ka hoʻokokoke ʻana o ka hash sum, inā hoʻololi ʻia kekahi mau faila mai ka pōʻai i ka wahi (no ka laʻana, hoʻololi ʻia kahi faila), a laila e mālama ʻia nā faila i hoʻololi ʻia i loko o ka waihona "e like me" a ʻaʻole e ʻoki ʻia.

Inā hōʻano hou ʻia kekahi o kāu mau pūʻolo ponoʻī i kēlā me kēia manawa, akā ʻaʻole nui loa nā loli, hiki iā ʻoe ke kuhikuhi wale no nā mana nui. No ka laʻana, ma ka mana 1.0 ua hana lākou i kahi hōʻailona e kuhikuhi ana i ka mypackage-1.0.tar.gz, a e hoʻopau loa ia, a laila hoʻokuʻu lākou i ka mana 1.1, he ʻokoʻa iki, akā ʻaʻole i hōʻano hou ʻia ka hint. ʻaʻole pilikia. Hoʻopau wale ʻia nā faila i kūlike (hiki ke hoʻihoʻi ʻia i) mana 1.0.

He laʻana maikaʻi ka heuristic e hoʻoponopono ana i ka faila hint no ka hoʻomaopopo ʻana i ke ʻano o loko o ke ʻano o ka hana heuristic. Hana wale ia i nā faila hashget-hint.json (a i ʻole .hashget-hint.json me kahi kiko) a nānā ʻole i nā mea ʻē aʻe. Mai kēia faila, hoʻoholo ʻo ia i ka URL o ka pūʻolo e kuhikuhi ʻia, a kuhikuhi ʻo hashget iā ia (inā ʻaʻole ia i hana pēlā)

HashServer

He mea paʻakikī loa ka hana ʻana i ka helu kuhikuhi piha i ka wā e hana ana i nā waihona. No ka hana ʻana i kēia, pono ʻoe e hoʻoiho i kēlā me kēia pūʻolo, wehe iā ia, a kuhikuhi iā ia. No laila hoʻohana ʻo hashget i kahi hoʻolālā me HashServer. Ke ʻike ʻia kahi pūʻolo Debian i hoʻokomo ʻia, inā ʻaʻole i loaʻa i ka HashPackage kūloko, hoʻāʻo mua e hoʻoiho i ka HashPackage mai ka server hash. A inā ʻaʻole pono kēia, hoʻoiho ʻo hashget iā ia iho a hashes i ka pōʻai (a hoʻouka iā ia i ka hashserver, no laila e hāʻawi ka hashserver iā ia i ka wā e hiki mai ana).

ʻO HashServer kahi mea koho o ka papahana, ʻaʻole koʻikoʻi, lawelawe wale ia e wikiwiki a hoʻemi i ka ukana ma nā waihona. Hoʻopaʻa maʻalahi (koho --hashserver me ka ʻole o nā ʻāpana). Eia hou, hiki iāʻoe ke maʻalahi hana i kāu hashserver ponoʻī.

Nā waihona hoʻonui a me ka ʻokoʻa, i hoʻolālā ʻia ka obsolescence

hashget maʻalahi loa ka hana ʻana i kiʻi waihona hoʻonui a me ka ʻokoʻa. No ke aha ʻaʻole mākou e kuhikuhi i kā mākou waihona ponoʻī (me kā mākou mau faila kūʻokoʻa)? Hoʻokahi hui --submit a ua pau ʻoe! ʻAʻole e hoʻokomo ʻia nā faila mai kēia waihona i ka waihona aʻe a hashget i hana ai.

Akā ʻaʻole kēia he ala maikaʻi loa, no ka mea, i ka wā e hoʻihoʻi ai, pono mākou e huki i nā backup hashget āpau i ka mōʻaukala holoʻokoʻa (inā loaʻa i kēlā me kēia ma kahi o hoʻokahi faila kūʻokoʻa). Aia kekahi mīkini no kēia i hoʻolālā ʻia obsolescence o nā waihona. I ka helu ʻana, hiki iā ʻoe ke kuhikuhi i ka lā pau o HashPackage --expires 2019-06-01, a ma hope o kēia lā (mai 00:00), ʻaʻole ia e hoʻohana. ʻAʻole hiki ke hoʻopau ʻia ka waihona ponoʻī ma hope o kēia lā (ʻOiai hiki i ka hashget ke hōʻike maʻalahi i nā URL o nā backup āpau i popopo i kēia manawa a i kekahi lā).

No ka laʻana, inā mākou e hana i kahi hoʻihoʻi piha ma ka 1st a kuhikuhi iā ia me ke ola a hiki i ka hopena o ka mahina, e loaʻa iā mākou kahi hoʻolālā kākoʻo ʻokoʻa.

Inā mākou e kuhikuhi i nā mea hoʻihoʻi hou ma ke ʻano like, e loaʻa kahi hoʻolālā o nā waihona hoʻohui.

ʻAʻole like me nā papahana kuʻuna, hiki i ka hashget ke hoʻohana i nā kumu kumu kumu. E hoʻemi ʻia ka waihona ma o ka hoʻemi ʻana i nā faila mai nā backup mua (inā loaʻa) a me nā faila lehulehu (he aha ka mea hiki ke hoʻoiho ʻia).

Inā no kekahi kumu ʻaʻole mākou e hilinaʻi i ka hilinaʻi o nā kumuwaiwai Debian (https://snapshot.debian.org/) a i ʻole hoʻohana i kekahi mahele ʻē aʻe, hiki iā mākou ke hana i kahi hoʻihoʻi piha i hoʻokahi manawa me nā pūʻolo āpau, a laila hilinaʻi iā ia (ma ka hoopau ana i ka heuristic). I kēia manawa, inā ʻaʻole i loaʻa iā mākou nā kikowaena āpau o kā mākou puʻupuʻu (ma ka Pūnaewele hoʻomanaʻo a i ʻole i ka wā o ka zombie apocalypse), akā ua hoʻonohonoho ʻia kā mākou backup, hiki iā mākou ke hoʻihoʻi mai i kahi backup diff pōkole e hilinaʻi wale nei i kā mākou backup mua. .

Ke hilinaʻi wale nei ʻo Hashget i nā kumu hoʻihoʻi hilinaʻi ma kou manaʻo. E hoʻohana ʻia nā mea āu e manaʻo ai he hilinaʻi.

FilePool a me Glacier

Hana FilePool ʻaʻole hiki iā ʻoe ke hoʻopili mau i nā kikowaena waho e hoʻoiho i nā pūʻolo, akā e hoʻohana i nā pūʻolo mai kahi papa kuhikuhi kūloko a i ʻole server hui, no ka laʻana:

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

ai ole ia,

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

No ka hana ʻana i loko o kahi papa kuhikuhi kūloko, pono ʻoe e hana i kahi papa kuhikuhi a hoʻolei i nā faila i loko, ʻo hashget ponoʻī e ʻike i ka mea e pono ai me ka hoʻohana ʻana i nā hashes. I mea e hiki ai ke komo i ka loko ma o HTTP, pono ʻoe e hana i nā symlinks ma kahi ala kūikawā; hana ʻia kēia me hoʻokahi kauoha (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). ʻO HTTP FilePool ponoʻī nā faila static, no laila hiki i kēlā me kēia kikowaena pūnaewele maʻalahi ke lawelawe iā ia, ʻaneʻane ʻole ka ukana ma ke kikowaena.

Mahalo iā FilePool, hiki iā ʻoe ke hoʻohana ʻaʻole wale nā ​​kumu waiwai http (s) ma ke ʻano he kumu kumu, akā pū kekahi ʻo kahi laʻana,Amazon Glacier.

Ma hope o ka hoʻouka ʻana i ka waihona i ka glacier, loaʻa iā mākou kāna Upload ID a hoʻohana iā ia ma ke ʻano he URL. ʻo kahi laʻana:

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

I kēia manawa e hoʻokumu ʻia nā waihona hou (ʻokoʻa) ma luna o kēia waihona a ʻoi aku ka pōkole. Ma hope o ka wehe ʻana i ka diffbackup, ʻike mākou i nā kumuwaiwai e hilinaʻi nei:

hashget --info /tmp/unpacked/ list

a e hoʻohana wale i kahi hōʻailona shell e hoʻoiho i kēia mau faila mai Glacier a i ka loko wai a holo i ka hoʻihoʻi maʻamau: hashget -u /tmp/unpacked —pool /tmp/pool

Pono anei ka pāʻani i ke kukui?

Ma ka hihia maʻalahi, e uku liʻiliʻi ʻoe no nā backup (inā mālama ʻoe iā lākou ma kahi o ke ao no ke kālā). Nui paha, emi mai.

Akā ʻaʻole ʻo ia wale nō ka mea. Huli ka nui i ka maikaʻi. Hiki iā ʻoe ke hoʻohana i kēia no ka loaʻa ʻana o kahi hoʻonui kiʻekiʻe i kāu hoʻolālā hoʻihoʻi. No ka laʻana, no ka pōkole o kā mākou waihona, ʻaʻole hiki iā mākou ke hana i nā hoʻopaʻa mahina, akā i kēlā me kēia lā. E mālama iā lākou ʻaʻole no ʻeono mahina, e like me ka wā ma mua, akā no 5 mau makahiki. Ma mua, ua mālama ʻoe iā ia i loko o kahi waihona "anu" lohi a maʻalahi (Glacier), i kēia manawa hiki iā ʻoe ke mālama iā ia i loko o kahi mālama wela, kahi e hiki ai iā ʻoe ke hoʻoiho koke i kahi waihona a hoʻihoʻi iā ia i nā minuke, ʻaʻole i ka lā.

Hiki iā ʻoe ke hoʻonui i ka hilinaʻi o ka waihona waihona. Inā mākou e mālama iā lākou i loko o hoʻokahi hale mālama, a laila ma ka hoʻemi ʻana i ka nui o nā waihona, hiki iā mākou ke mālama iā lākou i loko o 2-3 mau hale mālama a ola me ka ʻeha ʻole inā e pōʻino kekahi o lākou.

Pehea e ho'āʻo ai a hoʻomaka e hoʻohana?

E hele i ka ʻaoʻao gitlab https://gitlab.com/yaroslaff/hashget, hoʻouka me hoʻokahi kauoha (pip3 install hashget[plugins]) a heluhelu wale a hoʻokō i ka hoʻomaka wikiwiki. Manaʻo wau he 10-15 mau minuke e hana i nā mea maʻalahi a pau. A laila hiki iā ʻoe ke hoʻāʻo e hoʻopaʻa i kāu mau mīkini virtual, hana i nā faila hint inā pono e hoʻoikaika i ka hoʻopili ʻana, pāʻani me nā loko, kahi waihona hash kūloko a me kahi server hash inā makemake ʻoe, a i ka lā aʻe e ʻike i ka nui o ka waihona hoʻonui. ma luna o ko nehinei.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka