- éta bébas, opera-sourced deduplikator mangrupikeun utilitas anu sami sareng arsip anu ngamungkinkeun anjeun ngirangan ukuran cadangan sacara signifikan, ogé ngatur skéma cadangan incremental sareng diferensial sareng seueur deui.
Ieu mangrupikeun artikel tinjauan pikeun ngajelaskeun fitur. Pamakéan sabenerna hashget (cukup basajan) digambarkeun dina proyék jeung .
pabandingan
Numutkeun hukum genre, kuring bakal langsung mimitian ku intrik - ngabandingkeun hasilna:
Sampel data
ukuran unpacked
.tar.gz
hashget.tar.gz
WordPress-5.1.1
43 Mb
11 Mb (26%)
155 Kb ( 0.3% )
Linux 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% )
Latar ngeunaan naon anu kedah janten cadangan anu idéal sareng efektif
Unggal waktos kuring nyieun cadangan mesin virtual anyar dijieun, Kuring ieu haunted ku rarasaan yen kuring ngalakukeun lepat. Naha kuring meunang cadangan hefty tina sistem, dimana di hargaan, kreativitas imperishable kuring mangrupa index.html hiji-garis kalawan téks "Halo dunya"?
Naha cadangan kuring ngandung file /usr/sbin/mysqld 16MB? Naha leres kuring anu gaduh kahormatan pikeun nyimpen file penting ieu, sareng upami kuring gagal, naha éta bakal leungit ka umat manusa? Panginten henteu. Éta disimpen dina server anu aman pisan. debian (anu reliabilitas sareng uptime-na teu aya bandinganna sareng anu tiasa kuring pasihan), ogé dina salinan cadangan (jutaan di antarana) admin anu sanés. Naha urang leres-leres kedah ngadamel 10.000.000+ salinan file penting ieu pikeun ningkatkeun reliabilitas?
Umumna jeung solves masalah ieu. Nalika dipak, éta nyiptakeun cadangan anu alit pisan. Nalika unpacking - sistem sagemblengna unpacked, sarupa jeung naon eta bakal lamun tar -c / tar -x. (Dina basa sanés, ieu mangrupikeun bungkusan anu teu rugi)
Kumaha hashget jalan
hashget gaduh konsép Paket sareng HashPackage, kalayan bantosanana ngalaksanakeun deduplikasi.
paket (kantong plastik). A file (biasana mangrupa .deb atanapi .tar.gz arsip) nu bisa aman diundeur ti Internét, sarta ti mana hiji atawa leuwih file bisa diala.
HashPackage - file JSON leutik anu ngagambarkeun Paket, kalebet URL pakét sareng jumlah hash (sha256) file ti dinya. Contona, pikeun 5 megabyte mariadb-server-core pakét, ukuran hashpackage ngan 6 kilobyte. Kurang sarébu kali.
Deduplikasi - nyiptakeun arsip tanpa duplikat file (upami deduplikator terang dimana pakét asli tiasa diunduh, éta ngirangan duplikat tina arsip).
Bungkusan
Nalika packing, sadaya file tina diréktori anu dipak diseken, jumlah hashna diitung, sareng upami jumlahna dipendakan dina salah sahiji HashPackages anu dipikanyaho, maka metadata ngeunaan file (ngaran, hash, hak aksés, jsb) disimpen. dina file husus .hashget-restore.json, nu ogé bakal kaasup kana arsip.
Dina kasus pangbasajanna, bungkusan sorangan katingalina henteu langkung rumit tibatan tar:
hashget -zf /tmp/mybackup.tar.gz --pack /path/to/dataNgabongkar
Unpacking dipigawé dina dua tahap. Mimiti ngabongkar tar biasa:
tar -xf mybackup.tar.gz -C /path/to/datateras balikkeun tina jaringan:
hashget -u /path/to/dataNalika malikkeun, hashget maca file .hashget-restore.json, ngundeur bungkusan diperlukeun, unpacks aranjeunna, sarta extracts file perlu, masang aranjeunna dina jalur diperlukeun, kalawan diperlukeun boga / grup / idin.
Hal-hal anu langkung hese
Naon anu dijelaskeun di luhur parantos cekap pikeun anu "hoyong sapertos tar, tapi kedah dipak ku abdi Debian "dina 4 megabyte." Salajengna urang bakal ningali hal-hal anu langkung rumit.
Indexing
Upami hashget henteu gaduh HashPackage tunggal, maka éta henteu tiasa nga-deduplikat nanaon.
Anjeun oge tiasa ngadamel HashPackage sacara manual (saukur: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), tapi aya cara anu langkung merenah.
Pikeun kéngingkeun pakét hash anu diperyogikeun, aya tahapan indexing (eta otomatis dieksekusi ku paréntah --pack) jeung heuristik. Nalika indexing, hashget "eupan" unggal file kapanggih ka sadaya heuristik sadia nu museurkeun eta. Heuristik teras tiasa ngindeks Paket naon waé pikeun nyiptakeun HashPackage.
Contona, heuristik Debian resep kana file /var/lib/dpkg/status sareng ngadeteksi anu dipasang debian pakét, sareng upami henteu diindeks (teu aya HashPackage anu didamel pikeun aranjeunna), éta bakal ngaunduh sareng ngaindeksna. Ieu ngahasilkeun éfék anu pikaresepeun pisan: hashget bakal salawasna sacara efektif ngahapus duplikat OS Debian, sanaos aranjeunna gaduh pakét pangénggalna.
File petunjuk
Upami jaringan anjeun nganggo sababaraha pakét proprietary anjeun atanapi pakét umum anu henteu kalebet dina heuristik hashget, anjeun tiasa nambihan file hint hashget-hint.json saderhana sapertos kieu:
{
"project": "wordpress.org",
"url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}Salajengna, unggal waktos arsip dijieun, pakét bakal indéks (upami teu acan saméméhna), sarta file pakét bakal deduplicated tina arsip. Teu aya program anu diperyogikeun, sadayana tiasa dilakukeun tina vim sareng simpen dina unggal cadangan. Punten dicatet yén berkat pendekatan jumlah hash, upami sababaraha file tina pakét dirobih sacara lokal (contona, file konfigurasi dirobih), maka file anu dirobih bakal disimpen dina arsip "sakumaha" sareng moal dipotong.
Lamun sababaraha pakét sorangan diropéa périodik, tapi parobahanana teu pisan badag, anjeun tiasa Hint ukur keur versi utama. Contona, dina versi 1.0 aranjeunna dijieun hint a nunjuk ka mypackage-1.0.tar.gz, sarta eta bakal lengkep deduplicated, lajeng aranjeunna ngarilis versi 1.1, nu rada béda, tapi hint teu diropéa. Henteu kunanaon. Ngan file anu cocog (tiasa dibalikeun ka) versi 1.0 anu di-deduplicated.
Heuristik anu ngolah file hint mangrupikeun conto anu saé pikeun ngartos mékanisme internal kumaha heuristik jalan. Éta ngan ukur ngolah file hashget-hint.json (atanapi .hashget-hint.json kalayan titik) sareng teu malire sadayana anu sanés. Tina file ieu, éta nangtukeun URL pakét mana anu kedah diindéks, sareng hashget ngindeks éta (upami éta henteu acan dilakukeun)
HashServer
Ieu bakal cukup kuli-intensif pikeun ngalakukeun indexing pinuh nalika nyieun cadangan. Jang ngalampahkeun ieu, anjeun kudu ngundeur unggal pakét, ngabongkar eta, sarta indéks eta. Kituna hashget ngagunakeun skéma kalawan Nalika dipasang debianUpami paket hash teu kapendak dina Paket Hash lokal, éta mimitina nyobian ngaunduh paket hash tina server hash. Ngan upami éta gagal, hashget bakal ngaunduh sareng ngahash paket éta sorangan (sareng unggah ka server hash, supados server hash teras tiasa ngalayananana).
HashServer mangrupikeun unsur pilihan tina skéma, henteu kritis, éta ngan ukur pikeun nyepetkeun sareng ngirangan beban dina repositori. Gampang ditumpurkeun (opsional --hashserver tanpa parameter). Sajaba ti éta, anjeun bisa kalayan gampang .
Incremental jeung diferensial cadangan, rencanana obsolescence
ngajadikeun eta pisan gampang nyieun diagram a . Naha urang henteu indéks cadangan urang sorangan (sareng sadaya file unik urang)? Hiji tim --submit tur anjeun geus rengse! Cadangan salajengna anu didamel hashget moal kalebet file tina arsip ieu.
Tapi ieu sanés pendekatan anu saé, sabab sigana nalika ngabalikeun deui urang kedah narik sadaya cadangan hashget dina sadaya sajarah (upami masing-masing ngandung sahenteuna hiji file unik). Aya mékanisme pikeun ieu . Nalika ngindeks, anjeun tiasa netepkeun tanggal béakna HashPackage --expires 2019-06-01, sareng saatos tanggal ieu (ti 00:00), éta moal dianggo. Arsip sorangan henteu tiasa dipupus saatos tanggal ieu (Sanaos hashget tiasa nunjukkeun URL sadaya cadangan anu aya/bakal ruksak dina waktos ayeuna atanapi dina tanggal naon waé).
Salaku conto, upami urang ngadamel cadangan lengkep dina tanggal 1 sareng ngindeks éta kalayan umur hirup dugi ka akhir bulan, urang bakal nampi skéma cadangan diferensial.
Lamun urang indéks cadangan anyar dina cara nu sarua, bakal aya skéma cadangan Incremental.
Beda sareng skéma tradisional, hashget ngamungkinkeun anjeun ngagunakeun sababaraha sumber dasar. Cadangan bakal dikirangan ku cara ngirangan file tina cadangan sateuacana (upami aya) sareng file umum (naon anu tiasa diunduh).
Upami kusabab sababaraha alesan kami henteu percanten kana réliabilitas sumberdaya Debian () atanapi nganggo distribusi anu sanés, urang ngan saukur tiasa ngadamel cadangan lengkep sakali sareng sadaya bungkusan, teras ngandelkeunana (). Ayeuna, upami sadaya pangladén distribusi kami tétéla henteu sayogi pikeun kami (dina internét souvenir atanapi salami kiamat zombie), tapi cadangan kami leres-leres, urang tiasa pulih tina cadangan béda pondok anu ngan ukur ngandelkeun cadangan kami anu baheula. .
Hashget ngan ukur ngandelkeun sumber pamulihan anu dipercaya ku kawijaksanaan ANDA. Anu anjeun anggap dipercaya bakal dianggo.
FilePool jeung glacier
lantaran make mesin ngidinan Anjeun pikeun teu terus-terusan ngahubungan server éksternal pikeun ngundeur bungkusan, tapi ngagunakeun pakét ti diréktori lokal atawa server perusahaan, contona:
$ hashget -u . --pool /tmp/poolatawa
$ hashget -u . --pool http://myhashdb.example.com/Pikeun ngadamel kolam renang dina diréktori lokal, anjeun ngan ukur kedah nyiptakeun diréktori sareng ngalungkeun file kana éta, hashget nyalira bakal mendakan naon anu diperyogikeun nganggo hashes. Pikeun ngajantenkeun kolam renang tiasa diaksés via HTTP, anjeun kedah nyiptakeun symlink ku cara anu khusus; ieu dilakukeun ku hiji paréntah (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). HTTP FilePool sorangan nyaéta file statik, ku kituna sagala web server basajan bisa ngawula ka, beban dina server ampir enol.
Hatur nuhun kana FilePool, anjeun tiasa nganggo sanés ngan ukur sumber http (s) salaku sumber dasar, tapi ogé ,Amazon glacier.
Saatos unggah cadangan ka glacier, kami nampi ID Unggah na sareng dianggo salaku URL. Salaku conto:
hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01Ayeuna cadangan anyar (diferensial) bakal dumasar kana cadangan ieu sareng bakal langkung pondok. Saatos tar ngabongkar diffbackup, urang tiasa ningali sumber daya anu diandelkeun:
hashget --info /tmp/unpacked/ listsareng nganggo skrip cangkang pikeun ngaunduh sadaya file ieu ti Glacier ka kolam renang sareng ngajalankeun pamulihan biasa: hashget -u /tmp/unpacked —pool /tmp/pool
Naha kaulinan patut lilin?
Dina kasus pangbasajanna, anjeun ngan saukur bakal mayar kirang kanggo cadangan (upami anjeun nyimpen aranjeunna dina awan pikeun artos). Meureun loba, leuwih saeutik.
Tapi éta sanés hiji-hijina hal. Kuantitas robah jadi kualitas. Anjeun tiasa nganggo ieu pikeun kéngingkeun pamutahiran kualitas luhur kana skéma cadangan anjeun. Contona, saprak cadangan urang ayeuna leuwih pondok, urang teu bisa nyieun cadangan bulanan, tapi leuwih poean. Simpen aranjeunna henteu genep bulan, sapertos sateuacana, tapi salami 5 taun. Saméméhna, anjeun disimpen dina slow tapi mirah "tiis" gudang (Glacier), ayeuna anjeun bisa nyimpen eta dina gudang panas, ti mana anjeun salawasna bisa gancang ngundeur cadangan tur malikkeun eta dina menit, teu dina sapoé.
Anjeun tiasa ningkatkeun reliabilitas panyimpenan cadangan. Upami urang ayeuna nyimpen éta dina hiji fasilitas panyimpen, teras ku ngirangan volume cadangan, urang bakal tiasa nyimpen éta dina 2-3 fasilitas panyimpen sareng salamet tanpa nyeri upami salah sahijina ruksak.
Kumaha coba sareng mimitian nganggo?
Pindah ka halaman gitlab , pasang nganggo hiji paréntah (pip3 install hashget[plugins]) sareng ngan maca sareng laksanakeun gancang-gancang. Jigana bakal butuh 10-15 menit pikeun ngalakukeun sagala hal basajan. Teras anjeun tiasa nyobian ngompres mesin virtual anjeun, ngadamel file petunjuk upami diperyogikeun pikeun ngajantenkeun komprési langkung kuat, ulin sareng pools, database hash lokal sareng server hash upami anjeun resep, sareng énjing ningali naon ukuran cadangan incremental. bakal di luhur kamari.
sumber: www.habr.com
