- et ass gratis, Open Source deduplicator ass en Utility Àhnlech wéi en Archiver, deen Iech erlaabt d'Gréisst vun de Backups wesentlech ze reduzéieren, souwéi inkrementell an differentiell Backupschemaen a méi z'organiséieren.
Dëst ass en Iwwerbléck Artikel fir d'Features ze beschreiwen. Déi aktuell Notzung vum Hashtag (zimmlech einfach) gëtt an Projet an .
Verglach
Geméiss dem Gesetz vum Genre fÀnken ech direkt mat der Intrig un - d'Resultater verglÀichen:
Daten Echantillon
ausgepackt Gréisst
.tar.gz
hashget.tar.gz
WordPress-5.1.1
43 Mb
11 Mb (26%)
155 Kb (eng. 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% )
Hannergrond iwwer wat en idealen an effektive Backup soll sinn
All Kéier wann ech e Backup vun enger frësch erstallt virtueller Maschinn gemaach hunn, hunn ech d'Gefill begeeschtert datt ech eppes falsch maachen. Firwat kréien ech e krÀftege Backup vum System, wou meng onerwaart, onvergiesslech Kreativitéit en One-line index.html mam Text "Hallo Welt" ass?
Firwat enthĂ€lt mĂ€i Backup eng 16MB grouss /usr/sbin/mysqld Datei? Sinn ech wierklech deejĂ©inegen op dĂ«ser Welt, deen d'Ăier huet, dĂ«s wichteg Datei ze spĂ€icheren, a wann ech et net packen, geet se dann der MĂ«nschheet verluer? Wahrscheinlech net. Si ass op hĂ©ichsĂ©chere Serveren gespĂ€ichert. debian (dĂ©i hir ZouverlĂ€ssegkeet an Uptime mat deem, wat ech liwwere kann, net ze verglĂ€ichen sinn), souwĂ©i an de Backup-Kopie (Millioune dovun) vun aneren Administrateuren. Musse mir wierklech iwwer 10.000.000 Kopie vun dĂ«ser wichteger Datei erstellen, fir d'ZouverlĂ€ssegkeet ze erhĂ©ijen?
Allgemeng a léist dëse Problem. Wann gepackt, erstellt et e ganz klenge Backup. Beim Auspacken - e komplett ausgepackte System, Àhnlech wéi et wier wann tar -c / tar -x. (An anere Wierder, dëst ass lossless Verpackung)
Wéi hashget funktionnéiert
hashget huet d'Konzepter vu Package an HashPackage, mat hirer Hëllef mécht et Deduplikatioun.
Pak (Plastikstut). E Fichier (normalerweis en .deb oder .tar.gz Archiv) dee sĂ©cher vum Internet erofgeluede ka ginn, an aus deem een ââoder mĂ©i Dateie kritt kĂ«nne ginn.
HashPackage - eng kleng JSON-Datei representéiert e Package, dorënner d'Package-URL an Hash-Zommen (sha256) vun Dateien dovun. Zum Beispill, fir e 5 Megabyte mariadb-Server-Core Package, ass d'Hashpackagegréisst nëmme 6 Kilobytes. Ongeféier dausend mol manner.
Deduplication - en Archiv erstellen ouni Duplikatdateien (wann den Deduplikator weess wou den urspréngleche Package erofgeluede ka ginn, reduzéiert et Duplikaten aus dem Archiv).
Verpakung
Beim Verpakung ginn all Dateien aus dem Verzeechnes gepackt gescannt, hir Hash Zomme ginn berechent, a wann d'Zomm an engem vun de bekannten HashPackages fonnt gëtt, da gi Metadaten iwwer d'Datei (Numm, Hash, Zougangsrechter, etc.) gespÀichert. an enger spezieller Datei .hashget-restore.json, déi och am Archiv opgeholl gëtt.
Am einfachsten Fall gesÀit d'Verpakung selwer net méi komplizéiert aus wéi Teer:
hashget -zf /tmp/mybackup.tar.gz --pack /path/to/dataAuszepaken
Auspackung gĂ«tt an zwou Etappe gemaach. Als Ă©ischt dĂ©i ĂŒblech Teer Auspackung:
tar -xf mybackup.tar.gz -C /path/to/datada restauréiert aus dem Netz:
hashget -u /path/to/dataBeim Restauréieren, hashget liest d'.hashget-restore.json Datei, luet déi néideg Paketen erof, packt se aus an extrahéiert déi néideg Dateien, installéiert se op déi erfuerderlech Weeër, mat dem erfuerderleche Besëtzer / Grupp / Permissiounen.
Méi schwéier Saachen
Wat uewe beschriwwe gëtt, ass scho genuch fir déi, déi et "wéi Teer wëllen, awer datt et vu menge Leit gepackt gëtt". Debian "a 4 Megabyte." Als nÀchst wÀerte mir eis méi komplex Saachen ukucken.
Indexéieren
Wann hashget guer net een eenzegen HashPackage hÀtt, da wier et einfach nÀischt fÀeg ze deduplizéieren.
Dir kënnt och en HashPackage manuell erstellen (einfach: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), awer et gëtt e méi praktesche Wee.
Fir dat nĂ©idegt Hashpackage ze krĂ©ien, gĂ«tt et eng BĂŒhn IndexĂ©ierung (et gĂ«tt automatesch mam Kommando ausgefouert --pack) an heuristesch. Beim IndexĂ©ieren, hashget "feeds" all Datei fonnt op all verfĂŒgbare Heuristiken dĂ©i drun interessĂ©iert sinn. Heuristics kann dann all Package indexĂ©ieren fir en HashPackage ze kreĂ©ieren.
Zum Beispill, d'Heuristiken vun Debian hunn d'Datei /var/lib/dpkg/status gÀr a erkennen installéiert Dateien. debian Paketen, a wa se net indexéiert sinn (et gouf kee HashPackage dofir erstallt), luet et se erof an indexéiert se. Dëst resultéiert an engem ganz agreablen Effekt: Hashget wÀert ëmmer effektiv Debian Betribssystemer deduplizéieren, och wa se déi lescht Paketen hunn.
Hiweis Fichieren
Wann Ăren Netz e puer vun Ăre propriĂ©taire Packagen oder en Ă«ffentleche Package benotzt deen net an der hashget-Heuristik abegraff ass, kĂ«nnt Dir eng einfach hashget-hint.json Hiweisdatei esou addĂ©ieren:
{
"project": "wordpress.org",
"url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}Als nÀchst, all Kéier wann en Archiv erstallt gëtt, gëtt de Package indexéiert (wann et net virdru war), an d'Packagedateien ginn aus dem Archiv deduplizéiert. Keng Programméierung ass néideg, alles kann aus vim gemaach ginn a spÀicheren an all Backup. Notéiert w.e.g. datt dank der Hash Sum Approche, wann e puer Dateien aus dem Package lokal geÀnnert ginn (zum Beispill eng Konfiguratiounsdatei gëtt geÀnnert), da ginn déi geÀnnert Dateien am Archiv "wéi ass" gespÀichert a ginn net ofgeschnidden.
Wann e puer vun Ăren eegene Packagen periodesch aktualisĂ©iert ginn, awer d'Ănnerunge sinn net ganz grouss, kĂ«nnt Dir nĂ«mme fir grouss Versiounen hinzeweisen. Zum Beispill, an der Versioun 1.0 hunn se en Hiweis op mypackage-1.0.tar.gz gemaach, an et gĂ«tt komplett deduplizĂ©iert, duerno hunn se d'Versioun 1.1 verĂ«ffentlecht, wat liicht anescht ass, awer den Hiweis gouf net aktualisĂ©iert. Et ass ok. NĂ«mme Dateien dĂ©i passen (kĂ«nne restaurĂ©iert ginn) Versioun 1.0 ginn deduplizĂ©iert.
D'Heuristik déi d'Hippdatei veraarbecht ass e gutt Beispill fir den internen Mechanismus ze verstoen wéi d'Heuristik funktionnéiert. Et veraarbecht nëmmen hashget-hint.json Dateien (oder .hashget-hint.json mat engem Punkt) an ignoréiert all aner. Vun dëser Datei bestëmmt et wéi eng Package URL soll indexéiert ginn, an den hashget indexéiert se (wann et net scho gemaach huet)
HashServer
Et wier zimmlech Aarbechtsintensiv fir voll Indexéierung ze maachen wann Dir Backups erstellt. Fir dëst ze maachen, musst Dir all Package eroflueden, auspacken an indexéieren. Dofir hashget benotzt engem Schema mat Wann en installéiert ass debianWann keen Hashpackage am lokalen HashPackage fonnt gëtt, probéiert en als éischt den Hashpackage einfach vum Hashserver erofzelueden. Nëmmen wann dat net klappt, luet den Hashget de Package selwer erof an hasht en (an luet en op den Hashserver erop, sou datt den Hashserver en dann servéiere kann).
HashServer ass en optionalen Element vum Schema, net kritesch, et déngt eleng fir d'Laascht op de Repositories ze beschleunegen an ze reduzéieren. Einfach behënnert (optional --hashserver ouni Parameteren). ZousÀtzlech, kënnt Dir einfach .
Inkrementell an differentiell Backups, geplangten Obsoleszenz
mécht et ganz einfach en Diagramm ze maachen . Firwat indexéiere mir net eise Backup selwer (mat all eisen eenzegaartegen Dateien)? Eng Equipe --submit an du bass fÀerdeg! De nÀchste Backup deen den hashget erstellt enthÀlt keng Dateien aus dësem Archiv.
Awer dëst ass net eng ganz gutt Approche, well et ka sech erausstellen datt mir beim Restauréieren all hashget-Backups an der ganzer Geschicht musse zéien (wann all op d'mannst eng eenzegaarteg Datei enthÀlt). Et gëtt e Mechanismus fir dëst . Beim Indexéiere kënnt Dir den Verfallsdatum vum HashPackage uginn --expires 2019-06-01, an no dësem Datum (vun 00:00) gëtt et net benotzt. D'Archiv selwer kann no dësem Datum net gelÀscht ginn (Obwuel hashget bequem d'URLen vun all Backups ka weisen, déi am Moment oder op all Datum verfault sinn / wÀerte sinn).
Zum Beispill, wa mir e komplette Backup op den 1 maachen an et mat enger Liewensdauer bis Enn vum Mount indexéieren, kréie mir en Differential-Backup-Schema.
Wa mir nei Backups op déiselwecht Manéier indexéieren, gëtt et e Schema vun inkrementelle Backups.
Am Géigesaz zu traditionelle Schemaen, erlaabt hashget Iech verschidde ënnerierdesch Quellen ze benotzen. De Backup gëtt reduzéiert souwuel duerch d'Reduktioun vun Dateie vu fréiere Backups (wann iwwerhaapt) an duerch ëffentlech Dateien (wat kann erofgeluede ginn).
Wa mir aus iergendengem Grond d'ZouverlĂ€ssegkeet vun Debian Ressourcen net trauen () oder eng aner Verdeelung benotzt, kĂ«nne mir einfach e komplette Backup mat all de Packagen maachen, an dann drop vertrauen (). Elo, wann all d'Server vun eise Verdeelunge fir eis net verfĂŒgbar sinn (um Souvenir Internet oder wĂ€hrend enger Zombie-Apokalypse), awer eis Backupe sinn an der Rei, kĂ«nne mir eis vun all kuerzen Diff-Backup erholen, deen nĂ«mmen op eise frĂ©iere Backups hĂ€nkt .
Hashget hĂ€nkt nĂ«mmen op vertrauenswĂŒrdege Erhuelungsquellen no ĂRem Diskretioun. DĂ©i, dĂ©i Dir als zouverlĂ©isseg betruecht, gi benotzt.
FilePool a Glacier
ĐĐ”Ń Đ°ĐœĐžĐ·ĐŒ erlaabt Iech net permanent extern Serveren ze kontaktĂ©ieren fir Pakete erofzelueden, awer Pakete vun engem lokalen Verzeechnes oder Firmenserver benotzen, zum Beispill:
$ hashget -u . --pool /tmp/pooloder
$ hashget -u . --pool http://myhashdb.example.com/Fir e Pool an engem lokalen Verzeechnes ze maachen, musst Dir just e Verzeechnes erstellen an Dateien dran werfen, den hashget selwer fënnt wat et brauch mat den hashes. Fir de Pool iwwer HTTP zougÀnglech ze maachen, musst Dir Symlinks op eng speziell Manéier erstellen, dëst gëtt mat engem Kommando gemaach (;hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). HTTP FilePool selwer ass statesch Dateien, sou datt all einfache Webserver et kann déngen, d'Laascht op de Server ass bal null.
Dank FilePool kënnt Dir net nëmmen http(en) Ressourcen als Basisressourcen benotzen, awer och , Amazon Gletscher.
Nodeems mir de Backup op de Gletscher eropgelueden hunn, kréie mir seng Upload ID a benotzen se als URL. Zum Beispill:
hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01Elo ginn nei (differenziell) Backups op dësem Backup baséiert a wÀerte méi kuerz sinn. Nodeems mir den Diffbackup ausgepackt hunn, kënne mir gesinn op wéi eng Ressourcen et hÀnkt:
hashget --info /tmp/unpacked/ lista benotzt just e Shell-Skript fir all dĂ«s Dateien vum Glacier an de Pool erofzelueden an dĂ©i ĂŒblech Erhuelung auszefĂ©ieren: hashget -u /tmp/unpacked âpool /tmp/pool
Ass d'Spill d'KÀerz wÀert?
Am einfachsten Fall wÀert Dir einfach manner fir Backups bezuelen (wann Dir se iergendwou an der Wollek fir Suen spÀichert). VlÀicht vill, vill manner.
MĂ€ dat ass net dat eenzegt. QuantitĂ©it gĂ«tt an QualitĂ©it. Dir kĂ«nnt dĂ«st benotze fir e qualitativ hĂ©ichwĂ€erteg Upgrade op Ăre Backupschema ze krĂ©ien. Zum Beispill, well eis Backups elo mĂ©i kuerz sinn, kĂ«nne mir net monatlecht Backups maachen, awer alldeeglech. SpĂ€ichert se net fir sechs MĂ©int, wĂ©i virdrun, awer fir 5 Joer. Virdrun hutt Dir et a luesen awer bĂ«llegen "kale" Lagerung (Gletscher) gespĂ€ichert, elo kĂ«nnt Dir et an enger waarmer SpĂ€ichere spĂ€icheren, vu wou Dir Ă«mmer sĂ©ier e Backup eroflueden an a Minutten restaurĂ©iere kĂ«nnt, net an engem Dag.
Dir kënnt d'ZouverlÀssegkeet vun der Backupsatellit erhéijen. Wa mir se am Moment an enger Lagerung spÀicheren, da kënne mir se duerch d'Reduktioun vum Volume vun de Backups an 2-3 SpÀicheranlagen spÀicheren a schmerzlos iwwerliewen wann ee vun hinnen beschiedegt gëtt.
Wéi probéieren ech ze benotzen?
Gitt op d'gitlab SĂ€it , installĂ©iere mat engem Kommando (pip3 install hashget[plugins]) a just liesen an ausfĂ©ieren Quick-Start. Ech mengen et dauert 10-15 Minutten fir all dĂ©i einfach Saachen ze maachen. Da kĂ«nnt Dir probĂ©ieren Ăr virtuell Maschinnen ze komprimĂ©ieren, Hiweisdateien ze maachen wann nĂ©ideg fir d'Kompressioun mĂ©i staark ze maachen, Spill mat Poolen, enger lokaler Hash-Datebank an engem Hash-Server wann Dir interessĂ©iert sidd, an den nĂ€chsten Dag kuckt wat d'GrĂ©isst vum inkrementelle Backup ass. wĂ€ert uewen op gĂ«schter sinn.
Source: will.com
