Ieu mangrupikeun artikel tinjauan pikeun ngajelaskeun fitur. Pamakéan sabenerna hashget (cukup basajan) digambarkeun dina
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 Ubuntu kernel 5.0.4
934 Mb
161 Mb (20%)
4.7 Mb ( 0.5% )
Debian 9 (LAMPU) 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 aya 16 MB /usr/sbin/mysqld dina cadangan kuring? Naha leres-leres mungkin di dunya ieu kuring ngagaduhan kahormatan pikeun ngajaga file penting ieu, sareng upami kuring gagal, éta bakal leungit ku umat manusa? Paling dipikaresep euweuh. Éta disimpen dina server debian anu tiasa dipercaya (reliabilitas sareng uptime anu teu tiasa dibandingkeun sareng naon anu kuring tiasa nyayogikeun), ogé dina cadangan (jutaan di antarana) tina admin anu sanés. Naha urang leres-leres kedah nyiptakeun 10+ 000 salinan file penting ieu pikeun ningkatkeun reliabilitas?
Umumna 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/data
Ngabongkar
Unpacking dipigawé dina dua tahap. Mimiti ngabongkar tar biasa:
tar -xf mybackup.tar.gz -C /path/to/data
teras balikkeun tina jaringan:
hashget -u /path/to/data
Nalika 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
Anu dijelaskeun di luhur parantos cekap pikeun anu "hoyong sapertos tar, tapi pikeun ngabungkus Debian kuring kana 4 megabyte." Hayu urang nempo hal nu leuwih kompleks engké.
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.
Salaku conto, heuristik Debian resep kana file /var/lib/dpkg/status sareng ngadeteksi bungkusan debian anu dipasang, sareng upami aranjeunna henteu diindeks (teu aya HashPackage anu diciptakeun pikeun aranjeunna), unduh sareng indéksana. Hasilna nyaéta éfék anu saé pisan - hashget bakal sacara efektif ngahapus Debian OSes, sanaos aranjeunna gaduh pakét panganyarna.
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
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
--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 --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 (
Hashget ngan ukur ngandelkeun sumber pamulihan anu dipercaya ku kawijaksanaan ANDA. Anu anjeun anggap dipercaya bakal dianggo.
FilePool jeung glacier
lantaran make mesin
$ hashget -u . --pool /tmp/pool
atawa
$ 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é
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-01
Ayeuna 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/ list
sareng 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 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