Bu xususiyatlarni tavsiflash uchun umumiy maqola. Hashget-dan haqiqiy foydalanish (juda oddiy) maqolada tasvirlangan
Taqqoslash
Janr qonuniga ko'ra, men darhol intrigadan boshlayman - natijalarni taqqoslash:
Ma'lumotlar namunasi
ochilmagan o'lcham
.tar.gz
hashget.tar.gz
WordPress-5.1.1
43 Mb
11 Mb (26%)
155 Kb ( 0.3% )
Linux yadrosida 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% )
Ideal va samarali zaxira qanday bo'lishi kerakligi haqida ma'lumot
Har safar yangi yaratilgan virtual mashinaning zahira nusxasini yaratganimda, men noto'g'ri ish qilayotganimni his qilardim. Nega men tizimdan katta zaxira nusxasini olaman, bu yerda mening bebaho, o'zgarmas ijodim “Salom dunyo” matni bilan bir qatorli index.html?
Nega mening zahiramda 16 MB /usr/sbin/mysqld bor? Nahotki, bu dunyoda men bu muhim faylni saqlash sharafiga muyassar bo‘lsam, agar muvaffaqiyatsizlikka uchrasam, u insoniyat uchun yo‘qolib qolishi mumkinmi? Katta ehtimol bilan yo'q. U juda ishonchli debian serverlarida (ishonchliligi va uzluksizligini men taqdim eta oladigan narsalar bilan taqqoslab bo'lmaydi), shuningdek, boshqa administratorlarning zaxira nusxalarida (millionlab) saqlanadi. Ishonchliligini oshirish uchun haqiqatan ham ushbu muhim faylning 10 000 000+ 1-nusxasini yaratishimiz kerakmi?
Umuman tar -c
/ tar -x
. (Boshqacha aytganda, bu yo'qotishsiz qadoqlash)
Hashget qanday ishlaydi
hashget Package va HashPackage tushunchalariga ega, ularning yordami bilan u deduplikatsiyani amalga oshiradi.
To'plam (plastik paket). Internetdan xavfsiz yuklab olinadigan va bir yoki bir nechta faylni olish mumkin bo'lgan fayl (odatda .deb yoki .tar.gz arxivi).
HashPackage — paketni ifodalovchi kichik JSON fayli, jumladan paket URL manzili va undagi fayllarning xesh summasi (sha256). Masalan, 5 megabaytlik mariadb-server yadrosi paketi uchun xeshpaket hajmi atigi 6 kilobaytni tashkil qiladi. Taxminan ming marta kamroq.
Deduplikatsiya — ikki nusxadagi fayllarsiz arxiv yaratish (agar deduplikator asl paketni qayerdan yuklab olish mumkinligini bilsa, u arxivdan dublikatlarni kamaytiradi).
Qadoqlash
Qadoqlashda o'ralgan katalogdagi barcha fayllar skanerdan o'tkaziladi, ularning xesh summalari hisoblab chiqiladi va agar summa ma'lum HashPackages'dan birida topilsa, fayl haqidagi metama'lumotlar (nom, xesh, kirish huquqlari va boshqalar) saqlanadi. .hashget-restore.json maxsus faylida, u ham arxivga kiritiladi.
Eng oddiy holatda, qadoqlashning o'zi smoladan ko'ra murakkabroq ko'rinmaydi:
hashget -zf /tmp/mybackup.tar.gz --pack /path/to/data
Paketdan chiqarilmoqda
Paketni ochish ikki bosqichda amalga oshiriladi. Avval odatdagi smolani ochish:
tar -xf mybackup.tar.gz -C /path/to/data
keyin tarmoqdan tiklang:
hashget -u /path/to/data
Qayta tiklashda, hashget .hashget-restore.json faylini o'qiydi, kerakli paketlarni yuklab oladi, ularni ochadi va kerakli ega/guruh/ruxsatlar bilan kerakli yo'llarga o'rnatib, kerakli fayllarni chiqaradi.
Ko'proq qiyin narsalar
Yuqorida tavsiflangan narsa "buni qatron kabi xohlaydiganlar uchun, lekin mening Debian-ni 4 megabaytga to'plash uchun" etarli. Keyinchalik murakkabroq narsalarni ko'rib chiqaylik.
Indekslash
Agar hashgetda umuman bitta HashPackage bo'lmagan bo'lsa, u shunchaki hech narsani nusxalashtira olmaydi.
HashPackage-ni qo'lda ham yaratishingiz mumkin (shunchaki: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my
), lekin qulayroq yo'l bor.
Kerakli xesh-paketni olish uchun bosqich mavjud indekslash (buyruq bilan avtomatik ravishda bajariladi --pack
) va evristika. Indekslashda hashget topilgan har bir faylni unga qiziqqan barcha mavjud evristik ma'lumotlarga "oziqlaydi". Keyin evristika HashPackage yaratish uchun har qanday paketni indekslashi mumkin.
Masalan, Debian evristikasi /var/lib/dpkg/status faylini yaxshi ko'radi va o'rnatilgan debian paketlarini aniqlaydi va agar ular indekslanmagan bo'lsa (ular uchun HashPackage yaratilmagan), ularni yuklab oladi va indekslaydi. Natija juda yoqimli effekt - hashget har doim Debian operatsion tizimlarini, hatto ular eng so'nggi paketlarga ega bo'lsa ham, samarali ravishda deduplikatsiya qiladi.
Maslahat fayllari
Agar sizning tarmog'ingiz xususiy paketlaringizdan yoki hashget evristikasiga kiritilmagan umumiy paketlardan foydalansa, unga oddiy hashget-hint.json maslahat faylini quyidagicha qo'shishingiz mumkin:
{
"project": "wordpress.org",
"url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}
Keyinchalik, har safar arxiv yaratilganda, paket indekslanadi (agar u ilgari bo'lmagan bo'lsa) va paket fayllari arxivdan nusxalanadi. Hech qanday dasturlash kerak emas, hamma narsani vim-dan bajarish mumkin va har bir zaxirada saqlash mumkin. Shuni esda tutingki, hash sum yondashuvi tufayli, agar paketdagi ba'zi fayllar mahalliy sifatida o'zgartirilsa (masalan, konfiguratsiya fayli o'zgartirilsa), o'zgartirilgan fayllar arxivda "xuddi shunday" saqlanadi va kesilmaydi.
Agar o'zingizning ba'zi paketlaringiz vaqti-vaqti bilan yangilanib tursa, lekin o'zgarishlar unchalik katta bo'lmasa, siz faqat asosiy versiyalarga ishora qilishingiz mumkin. Misol uchun, 1.0 versiyada ular mypackage-1.0.tar.gz ga ishora qilishdi va u to'liq nusxalanadi, keyin 1.1 versiyasini chiqarishdi, bu biroz farq qiladi, ammo maslahat yangilanmagan. Hammasi joyida; shu bo'ladi. Faqat 1.0 versiyasiga mos keladigan (qayta tiklash mumkin) fayllar takrorlanadi.
Maslahat faylini qayta ishlovchi evristika evristikaning qanday ishlashining ichki mexanizmini tushunish uchun yaxshi namunadir. U faqat hashget-hint.json fayllarini (yoki nuqta bilan .hashget-hint.json) qayta ishlaydi va qolganlarini e'tiborsiz qoldiradi. Ushbu fayldan qaysi paket URL manzili indekslanishi kerakligini aniqlaydi va hashget uni indekslaydi (agar u hali buni qilmagan bo'lsa)
HashServer
Zaxira nusxalarini yaratishda to'liq indekslashni amalga oshirish juda ko'p mehnat talab qiladi. Buning uchun siz har bir paketni yuklab olishingiz, uni ochishingiz va indekslashingiz kerak. Shuning uchun hashget bilan sxemadan foydalanadi
HashServer - bu sxemaning ixtiyoriy elementi, muhim emas, u faqat omborlarga yukni tezlashtirish va kamaytirish uchun xizmat qiladi. Osonlik bilan o'chirilgan (ixtiyoriy --hashserver
parametrlarsiz). Bundan tashqari, siz osongina qilishingiz mumkin
Qo'shimcha va differentsial zaxiralar, rejalashtirilgan eskirish
--submit
va siz tugatdingiz! Hashget yaratadigan keyingi zaxiraga ushbu arxivdagi fayllar kirmaydi.
Ammo bu juda yaxshi yondashuv emas, chunki qayta tiklashda biz butun tarixdagi barcha hashget zahiralarini tortib olishimiz kerak bo'lishi mumkin (agar har birida kamida bitta noyob fayl bo'lsa). Buning uchun mexanizm mavjud --expires 2019-06-01
, va bu sanadan keyin (soat 00:00 dan) foydalanilmaydi. Ushbu sanadan keyin arxivning o'zini o'chirib bo'lmaydi (garchi hashget hozirda yoki istalgan sanada chirigan/chirigan barcha zaxira nusxalarining URL manzillarini qulay tarzda ko'rsatishi mumkin).
Misol uchun, agar biz 1-da to'liq zaxira nusxasini yaratsak va uni oy oxirigacha umr bo'yi indekslasak, biz differentsial zaxira sxemasini olamiz.
Agar biz yangi zaxiralarni xuddi shu tarzda indekslasak, qo'shimcha zaxiralar sxemasi bo'ladi.
An'anaviy sxemalardan farqli o'laroq, hashget bir nechta asosiy manbalardan foydalanishga imkon beradi. Zaxira nusxasi avvalgi zahiradagi fayllarni (agar mavjud bo'lsa) va umumiy fayllarni (nimalarni yuklab olish mumkin) kamaytirish orqali qisqartiriladi.
Agar biron sababga ko'ra biz Debian resurslarining ishonchliligiga ishonmasak (
Hashget faqat SIZNING ixtiyoriga ko'ra ishonchli tiklash manbalariga tayanadi. Ishonchli deb hisoblaganingizdan foydalaniladi.
FilePool va Glacier
mexanizm
$ hashget -u . --pool /tmp/pool
yoki
$ hashget -u . --pool http://myhashdb.example.com/
Mahalliy katalogda hovuz yaratish uchun siz shunchaki katalog yaratishingiz va unga fayllarni tashlashingiz kerak, hashget o'zi xeshlar yordamida kerakli narsani topadi. Hovuzga HTTP orqali kirishni ta'minlash uchun siz maxsus tarzda symlinks yaratishingiz kerak; bu bitta buyruq bilan amalga oshiriladi (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool
). HTTP FilePool o'zi statik fayllar, shuning uchun har qanday oddiy veb-server unga xizmat qilishi mumkin, serverdagi yuk deyarli nolga teng.
FilePool tufayli siz nafaqat http(lar) resurslaridan asosiy manba sifatida, balki foydalanishingiz mumkin
Zaxirani muzlikka yuklagandan so'ng, biz uning Yuklash identifikatorini olamiz va uni URL sifatida ishlatamiz. Masalan:
hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01
Endi yangi (differensial) zaxiralar shu zahiraga asoslanadi va qisqaroq bo'ladi. Diffbackup-ni tar bilan ochganimizdan so'ng, u qanday resurslarga tayanishini ko'rishimiz mumkin:
hashget --info /tmp/unpacked/ list
va bu fayllarning barchasini Glacier-dan hovuzga yuklab olish uchun qobiq skriptidan foydalaning va odatdagi tiklashni bajaring: hashget -u /tmp/unpacked —pool /tmp/pool
O'yin shamga arziydimi?
Eng oddiy holatda, siz zaxira nusxalari uchun kamroq to'laysiz (agar siz ularni pul uchun bulutda saqlasangiz). Balki ko'p, kamroq.
Lekin bu yagona narsa emas. Miqdor sifatga aylanadi. Zaxira sxemasini yuqori sifatli yangilash uchun undan foydalanishingiz mumkin. Misol uchun, bizning zahira nusxalarimiz endi qisqarganligi sababli, biz oylik emas, balki kunlik zaxiralashni amalga oshirishimiz mumkin. Ularni avvalgidek olti oy emas, balki 5 yil davomida saqlang. Ilgari siz uni sekin, ammo arzon “sovuq” omborda (Muzlik) saqlagan edingiz, endi uni issiq omborda saqlashingiz mumkin, u yerdan har doim tezda zahirani yuklab olishingiz va uni bir kunda emas, bir necha daqiqada tiklashingiz mumkin.
Zaxira saqlash ishonchliligini oshirishingiz mumkin. Agar biz ularni hozirda bitta omborxonada saqlasak, zahiralar hajmini kamaytirib, 2-3 ta omborxonada saqlashimiz va ulardan biri shikastlansa, og‘riqsiz omon qolishimiz mumkin bo‘ladi.
Qanday qilib sinab ko'rish va foydalanishni boshlash kerak?
Gitlab sahifasiga o'ting pip3 install hashget[plugins]
) va shunchaki o'qing va tezkor boshlashni bajaring. Menimcha, barcha oddiy ishlarni bajarish uchun 10-15 daqiqa kerak bo'ladi. Keyin siz virtual mashinalaringizni siqib chiqarishga harakat qilishingiz mumkin, agar kerak bo'lsa, siqishni kuchaytirish uchun maslahat fayllarini yarating, agar sizni qiziqtirsa, hovuzlar, mahalliy xesh ma'lumotlar bazasi va xesh-server bilan o'ynashingiz mumkin va ertasi kuni qo'shimcha zahiraning hajmini ko'rishingiz mumkin. kechagi kunning tepasida bo'ladi.
Manba: www.habr.com