ఫీచర్లను వివరించడానికి ఇది స్థూలదృష్టి కథనం. హ్యాష్గెట్ యొక్క వాస్తవ ఉపయోగం (చాలా సులభం) లో వివరించబడింది
పోలిక
కళా ప్రక్రియ యొక్క చట్టం ప్రకారం, నేను కుట్రతో వెంటనే ప్రారంభిస్తాను - ఫలితాలను పోల్చడం:
డేటా నమూనా
ప్యాక్ చేయని పరిమాణం
.tar.gz
hashget.tar.gz
WordPress-5.1.1
43 Mb
11 Mb (26%)
155 Kb ( 0.3% )
Linux కెర్నల్ 5.0.4
934 Mb
161 Mb (20%)
4.7 Mb ( 0.5% )
డెబియన్ 9 (LAMP) LXC VM
724 Mb
165 Mb (23%)
4.1 Mb ( 0.5% )
ఆదర్శవంతమైన మరియు సమర్థవంతమైన బ్యాకప్ ఎలా ఉండాలనే దానిపై నేపథ్యం
నేను తాజాగా సృష్టించిన వర్చువల్ మెషీన్ని బ్యాకప్ చేసిన ప్రతిసారీ, నేను ఏదో తప్పు చేస్తున్నాననే భావన నన్ను వెంటాడేది. "హలో వరల్డ్" టెక్స్ట్తో నా అమూల్యమైన, నాశనమైన సృజనాత్మకత ఒక-లైన్ index.html అయిన సిస్టమ్ నుండి నేను ఎందుకు భారీ బ్యాకప్ పొందగలను?
నా బ్యాకప్లో 16 MB /usr/sbin/mysqld ఎందుకు ఉంది? ఈ ముఖ్యమైన ఫైల్ను ఉంచే గౌరవం ఈ ప్రపంచంలో నాకు ఉంది మరియు నేను విఫలమైతే, అది మానవాళికి పోతుంది? చాలా మటుకు లేదు. ఇది అత్యంత విశ్వసనీయమైన డెబియన్ సర్వర్లలో (విశ్వసనీయత మరియు సమయ వ్యవధిని నేను అందించగలిగే వాటితో పోల్చలేము), అలాగే ఇతర నిర్వాహకుల బ్యాకప్లలో (వాటిలో మిలియన్ల కొద్దీ) నిల్వ చేయబడుతుంది. విశ్వసనీయతను మెరుగుపరచడానికి ఈ ముఖ్యమైన ఫైల్ యొక్క 10+ 000వ కాపీని మనం నిజంగా సృష్టించాలా?
సాధారణంగా tar -c
/ tar -x
. (మరో మాటలో చెప్పాలంటే, ఇది లాస్లెస్ ప్యాకేజింగ్)
హ్యాష్గెట్ ఎలా పనిచేస్తుంది
hashget ప్యాకేజీ మరియు HashPackage భావనలను కలిగి ఉంది, వారి సహాయంతో ఇది డూప్లికేషన్ చేస్తుంది.
ప్యాకేజీ (ప్లాస్టిక్ సంచి). ఇంటర్నెట్ నుండి సురక్షితంగా డౌన్లోడ్ చేయగల ఫైల్ (సాధారణంగా .deb లేదా .tar.gz ఆర్కైవ్) మరియు దాని నుండి ఒకటి లేదా అంతకంటే ఎక్కువ ఫైల్లను పొందవచ్చు.
HashPackage — ప్యాకేజీ URL మరియు దానిలోని ఫైల్ల హాష్ మొత్తాలు (sha256)తో సహా ప్యాకేజీని సూచించే చిన్న JSON ఫైల్. ఉదాహరణకు, 5 మెగాబైట్ల mariadb-server-core ప్యాకేజీకి, హ్యాష్ప్యాకేజీ పరిమాణం 6 కిలోబైట్లు మాత్రమే. దాదాపు వెయ్యి రెట్లు తక్కువ.
డూప్లికేషన్ — డూప్లికేట్ ఫైల్స్ లేకుండా ఆర్కైవ్ను సృష్టించడం (అసలు ప్యాకేజీని ఎక్కడ డౌన్లోడ్ చేయవచ్చో డ్యూప్లికేటర్కు తెలిస్తే, అది ఆర్కైవ్ నుండి నకిలీలను తగ్గిస్తుంది).
ప్యాకేజింగ్
ప్యాక్ చేస్తున్నప్పుడు, ప్యాక్ చేయబడిన డైరెక్టరీలోని అన్ని ఫైల్లు స్కాన్ చేయబడతాయి, వాటి హాష్ మొత్తాలు లెక్కించబడతాయి మరియు మొత్తం తెలిసిన HashPackagesలో కనుగొనబడితే, ఫైల్ గురించి మెటాడేటా (పేరు, హాష్, యాక్సెస్ హక్కులు మొదలైనవి) సేవ్ చేయబడుతుంది. ప్రత్యేక ఫైల్ .hashget-restore.jsonలో, ఇది ఆర్కైవ్లో కూడా చేర్చబడుతుంది.
సరళమైన సందర్భంలో, ప్యాకేజింగ్ తారు కంటే క్లిష్టంగా కనిపించదు:
hashget -zf /tmp/mybackup.tar.gz --pack /path/to/data
అన్ప్యాకింగ్
అన్ప్యాకింగ్ రెండు దశల్లో జరుగుతుంది. మొదట సాధారణ తారు అన్ప్యాకింగ్:
tar -xf mybackup.tar.gz -C /path/to/data
ఆపై నెట్వర్క్ నుండి పునరుద్ధరించండి:
hashget -u /path/to/data
పునరుద్ధరించేటప్పుడు, హ్యాష్గెట్ .hashget-restore.json ఫైల్ను చదువుతుంది, అవసరమైన ప్యాకేజీలను డౌన్లోడ్ చేస్తుంది, వాటిని అన్ప్యాక్ చేస్తుంది మరియు అవసరమైన యజమాని/సమూహం/అనుమతులతో అవసరమైన మార్గాల్లో వాటిని ఇన్స్టాల్ చేయడం ద్వారా అవసరమైన ఫైల్లను సంగ్రహిస్తుంది.
మరింత కష్టమైన విషయాలు
పైన వివరించినది "తార్ లాగా కావాలనుకునేవారికి, నా డెబియన్ను 4 మెగాబైట్లుగా ప్యాక్ చేయడానికి" ఇప్పటికే సరిపోతుంది. మరింత క్లిష్టమైన విషయాలను తర్వాత చూద్దాం.
ఇండెక్సింగ్
ఒకవేళ హ్యాష్గెట్లో ఒక్క హ్యాష్ప్యాకేజీ కూడా లేకుంటే, అది దేనినీ నకిలీ చేయదు.
మీరు హ్యాష్ప్యాకేజీని మాన్యువల్గా కూడా సృష్టించవచ్చు (కేవలం: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my
), కానీ మరింత అనుకూలమైన మార్గం ఉంది.
అవసరమైన హ్యాష్ప్యాకేజీని పొందడానికి, ఒక దశ ఉంది ఇండెక్సింగ్ (ఇది స్వయంచాలకంగా ఆదేశంతో అమలు చేయబడుతుంది --pack
) మరియు హ్యూరిస్టిక్స్. ఇండెక్సింగ్ చేస్తున్నప్పుడు, హ్యాష్గెట్ ప్రతి ఫైల్పై ఆసక్తి ఉన్న అందుబాటులో ఉన్న అన్ని హ్యూరిస్టిక్లకు "ఫీడ్" చేస్తుంది. హ్యూరిస్టిక్స్ హాష్ప్యాకేజీని సృష్టించడానికి ఏదైనా ప్యాకేజీని ఇండెక్స్ చేయవచ్చు.
ఉదాహరణకు, డెబియన్ హ్యూరిస్టిక్ ఫైల్ /var/lib/dpkg/స్టేటస్ని ప్రేమిస్తుంది మరియు ఇన్స్టాల్ చేయబడిన డెబియన్ ప్యాకేజీలను గుర్తిస్తుంది మరియు అవి ఇండెక్స్ చేయకపోతే (వాటి కోసం హ్యాష్ప్యాకేజ్ సృష్టించబడలేదు), వాటిని డౌన్లోడ్ చేసి సూచిక చేస్తుంది. ఫలితం చాలా చక్కని ప్రభావం - హ్యాష్గెట్ డెబియన్ OS లు తాజా ప్యాకేజీలను కలిగి ఉన్నప్పటికీ వాటిని ఎల్లప్పుడూ సమర్థవంతంగా తగ్గిస్తాయి.
సూచన ఫైళ్లు
మీ నెట్వర్క్ మీ యాజమాన్య ప్యాకేజీలలో కొన్నింటిని లేదా హ్యాష్గెట్ హ్యూరిస్టిక్స్లో చేర్చని పబ్లిక్ ప్యాకేజీని ఉపయోగిస్తుంటే, మీరు దానికి ఒక సాధారణ hashget-hint.json సూచన ఫైల్ను ఇలా జోడించవచ్చు:
{
"project": "wordpress.org",
"url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}
తరువాత, ఆర్కైవ్ సృష్టించబడిన ప్రతిసారీ, ప్యాకేజీ సూచిక చేయబడుతుంది (ఇది ఇంతకు ముందు లేకపోతే), మరియు ప్యాకేజీ ఫైల్లు ఆర్కైవ్ నుండి డీప్లికేట్ చేయబడతాయి. ప్రోగ్రామింగ్ అవసరం లేదు, ప్రతిదీ vim నుండి చేయవచ్చు మరియు ప్రతి బ్యాకప్లో సేవ్ చేయవచ్చు. దయచేసి హాష్ సమ్ విధానానికి ధన్యవాదాలు, ప్యాకేజీ నుండి కొన్ని ఫైల్లు స్థానికంగా మార్చబడితే (ఉదాహరణకు, కాన్ఫిగరేషన్ ఫైల్ మార్చబడింది), అప్పుడు మార్చబడిన ఫైల్లు ఆర్కైవ్లో “ఉన్నట్లుగా” సేవ్ చేయబడతాయి మరియు కత్తిరించబడవు.
మీ స్వంత ప్యాకేజీలలో కొన్ని క్రమానుగతంగా నవీకరించబడినప్పటికీ, మార్పులు చాలా పెద్దవి కానట్లయితే, మీరు ప్రధాన సంస్కరణల కోసం మాత్రమే సూచించవచ్చు. ఉదాహరణకు, వెర్షన్ 1.0లో వారు mypackage-1.0.tar.gzకి సూచించే సూచనను చేసారు మరియు అది పూర్తిగా తగ్గించబడుతుంది, తర్వాత వారు వెర్షన్ 1.1ని విడుదల చేసారు, ఇది కొద్దిగా భిన్నంగా ఉంటుంది, కానీ సూచన నవీకరించబడలేదు. ఇట్స్ ఓకే. వెర్షన్ 1.0కి సరిపోలే (పునరుద్ధరించవచ్చు) ఫైల్లు మాత్రమే డీప్లికేట్ చేయబడ్డాయి.
హింట్ ఫైల్ను ప్రాసెస్ చేసే హ్యూరిస్టిక్ అనేది హ్యూరిస్టిక్స్ ఎలా పని చేస్తుందో అంతర్గత మెకానిజం అర్థం చేసుకోవడానికి ఒక మంచి ఉదాహరణ. ఇది hashget-hint.json ఫైల్లను (లేదా డాట్తో .hashget-hint.json) మాత్రమే ప్రాసెస్ చేస్తుంది మరియు మిగతావన్నీ విస్మరిస్తుంది. ఈ ఫైల్ నుండి, ఇది ఏ ప్యాకేజీ URLని ఇండెక్స్ చేయాలో నిర్ణయిస్తుంది మరియు హ్యాష్గెట్ దానిని సూచిక చేస్తుంది (ఇది ఇప్పటికే అలా చేయకపోతే)
HashServer
బ్యాకప్లను సృష్టించేటప్పుడు పూర్తి ఇండెక్సింగ్ చేయడం చాలా శ్రమతో కూడుకున్న పని. దీన్ని చేయడానికి, మీరు ప్రతి ప్యాకేజీని డౌన్లోడ్ చేసి, దాన్ని అన్ప్యాక్ చేసి, ఇండెక్స్ చేయాలి. అందువల్ల హ్యాష్గెట్తో ఒక పథకాన్ని ఉపయోగిస్తుంది
HashServer అనేది పథకం యొక్క ఐచ్ఛిక మూలకం, క్లిష్టమైనది కాదు, ఇది రిపోజిటరీలపై లోడ్ను వేగవంతం చేయడానికి మరియు తగ్గించడానికి మాత్రమే ఉపయోగపడుతుంది. సులభంగా నిలిపివేయబడుతుంది (ఐచ్ఛికం --hashserver
పారామితులు లేకుండా). అదనంగా, మీరు సులభంగా చేయవచ్చు
పెరుగుతున్న మరియు అవకలన బ్యాకప్లు, ప్రణాళికాబద్ధమైన వాడుకలో లేవు
--submit
మరియు మీరు పూర్తి చేసారు! హ్యాష్గెట్ సృష్టించే తదుపరి బ్యాకప్లో ఈ ఆర్కైవ్ నుండి ఫైల్లు ఉండవు.
కానీ ఇది చాలా మంచి విధానం కాదు, ఎందుకంటే పునరుద్ధరించేటప్పుడు మేము మొత్తం చరిత్రలో అన్ని హ్యాష్గెట్ బ్యాకప్లను లాగవలసి ఉంటుంది (ప్రతి ఒక్కటి కనీసం ఒక ప్రత్యేక ఫైల్ని కలిగి ఉంటే). దీని కోసం ఒక యంత్రాంగం ఉంది --expires 2019-06-01
, మరియు ఈ తేదీ తర్వాత (00:00 నుండి), ఇది ఉపయోగించబడదు. ఈ తేదీ తర్వాత ఆర్కైవ్ తొలగించబడదు (అయితే ఈ సమయంలో లేదా ఏ తేదీన అయినా కుళ్ళిపోయిన/కుళ్ళిపోయే అన్ని బ్యాకప్ల URLలను హ్యాష్గెట్ సౌకర్యవంతంగా చూపగలదు).
ఉదాహరణకు, మేము 1వ తేదీన పూర్తి బ్యాకప్ చేసి, నెలాఖరు వరకు జీవితకాలంతో సూచిక చేస్తే, మేము అవకలన బ్యాకప్ పథకాన్ని పొందుతాము.
మేము అదే విధంగా కొత్త బ్యాకప్లను ఇండెక్స్ చేస్తే, పెరుగుతున్న బ్యాకప్ల పథకం ఉంటుంది.
సాంప్రదాయ స్కీమ్ల వలె కాకుండా, బహుళ అంతర్లీన మూలాలను ఉపయోగించడానికి హ్యాష్గెట్ మిమ్మల్ని అనుమతిస్తుంది. మునుపటి బ్యాకప్ల నుండి ఫైల్లను తగ్గించడం ద్వారా (ఏదైనా ఉంటే) మరియు పబ్లిక్ ఫైల్ల ద్వారా (ఏవి డౌన్లోడ్ చేసుకోవచ్చు) బ్యాకప్ తగ్గించబడుతుంది.
కొన్ని కారణాల వల్ల మేము డెబియన్ వనరుల విశ్వసనీయతను విశ్వసించకపోతే (
Hashget మీ అభీష్టానుసారం విశ్వసనీయ పునరుద్ధరణ మూలాధారాలపై మాత్రమే ఆధారపడుతుంది. మీరు నమ్మదగినవిగా భావించేవి ఉపయోగించబడతాయి.
ఫైల్పూల్ మరియు గ్లేసియర్
విధానం
$ hashget -u . --pool /tmp/pool
లేదా
$ hashget -u . --pool http://myhashdb.example.com/
స్థానిక డైరెక్టరీలో పూల్ చేయడానికి, మీరు కేవలం ఒక డైరెక్టరీని సృష్టించి, ఫైల్లను త్రోసివేయాలి, హాష్లను ఉపయోగించి హ్యాష్గెట్ దానికే అవసరమైన వాటిని కనుగొంటుంది. HTTP ద్వారా పూల్ను యాక్సెస్ చేయడానికి, మీరు ఒక ప్రత్యేక పద్ధతిలో సిమ్లింక్లను సృష్టించాలి; ఇది ఒక ఆదేశంతో చేయబడుతుంది (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool
) HTTP ఫైల్పూల్ స్టాటిక్ ఫైల్లు, కాబట్టి ఏదైనా సాధారణ వెబ్ సర్వర్ దీన్ని సర్వర్ చేయగలదు, సర్వర్పై లోడ్ దాదాపు సున్నా.
ఫైల్పూల్కు ధన్యవాదాలు, మీరు http(లు) వనరులను బేస్ రిసోర్స్లుగా మాత్రమే కాకుండా ఉపయోగించవచ్చు
గ్లేసియర్కు బ్యాకప్ను అప్లోడ్ చేసిన తర్వాత, మేము దాని అప్లోడ్ IDని పొందుతాము మరియు దానిని URLగా ఉపయోగిస్తాము. ఉదాహరణకి:
hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01
ఇప్పుడు కొత్త (డిఫరెన్షియల్) బ్యాకప్లు ఈ బ్యాకప్ ఆధారంగా ఉంటాయి మరియు చిన్నవిగా ఉంటాయి. డిఫ్బ్యాకప్ను అన్ప్యాక్ చేసిన తర్వాత, అది ఏ వనరులపై ఆధారపడుతుందో మనం చూడవచ్చు:
hashget --info /tmp/unpacked/ list
మరియు ఈ ఫైల్లన్నింటినీ గ్లేసియర్ నుండి పూల్కి డౌన్లోడ్ చేయడానికి షెల్ స్క్రిప్ట్ని ఉపయోగించండి మరియు సాధారణ రికవరీని అమలు చేయండి: hashget -u /tmp/unpacked —pool /tmp/pool
ఆట కొవ్వొత్తి విలువైనదేనా?
సరళమైన సందర్భంలో, మీరు బ్యాకప్ల కోసం తక్కువ చెల్లిస్తారు (మీరు వాటిని డబ్బు కోసం క్లౌడ్లో ఎక్కడో నిల్వ చేస్తే). బహుశా చాలా, చాలా తక్కువ.
అయితే అది ఒక్కటే కాదు. పరిమాణం నాణ్యతగా మారుతుంది. మీ బ్యాకప్ స్కీమ్కి అధిక-నాణ్యత అప్గ్రేడ్ పొందడానికి మీరు దీన్ని ఉపయోగించవచ్చు. ఉదాహరణకు, మా బ్యాకప్లు ఇప్పుడు తక్కువగా ఉన్నందున, మేము నెలవారీ బ్యాకప్లను కాకుండా రోజువారీ బ్యాకప్లను చేయవచ్చు. వాటిని మునుపటిలా ఆరు నెలలు కాకుండా 5 సంవత్సరాలు నిల్వ చేయండి. మునుపు, మీరు దీన్ని నెమ్మదిగా కానీ చౌకైన "శీతల" నిల్వలో (గ్లేసియర్) నిల్వ చేసారు, ఇప్పుడు మీరు దానిని హాట్ స్టోరేజ్లో నిల్వ చేయవచ్చు, ఇక్కడ నుండి మీరు ఎప్పుడైనా త్వరగా బ్యాకప్ని డౌన్లోడ్ చేసుకోవచ్చు మరియు నిమిషాల్లో పునరుద్ధరించవచ్చు, ఒక రోజులో కాదు.
మీరు బ్యాకప్ నిల్వ యొక్క విశ్వసనీయతను పెంచుకోవచ్చు. మేము ప్రస్తుతం వాటిని ఒక స్టోరేజ్ ఫెసిలిటీలో నిల్వ చేస్తే, బ్యాకప్ల వాల్యూమ్ను తగ్గించడం ద్వారా, మేము వాటిని 2-3 స్టోరేజీ ఫెసిలిటీలలో భద్రపరచగలుగుతాము మరియు వాటిలో ఒకటి పాడైతే నొప్పి లేకుండా జీవించగలుగుతాము.
ఎలా ప్రయత్నించాలి మరియు ఉపయోగించడం ప్రారంభించాలి?
gitlab పేజీకి వెళ్లండి pip3 install hashget[plugins]
) మరియు శీఘ్ర-ప్రారంభాన్ని చదవండి మరియు అమలు చేయండి. అన్ని సాధారణ పనులను చేయడానికి 10-15 నిమిషాలు పడుతుందని నేను భావిస్తున్నాను. అప్పుడు మీరు మీ వర్చువల్ మెషీన్లను కుదించడానికి ప్రయత్నించవచ్చు, కుదింపును బలంగా చేయడానికి అవసరమైతే సూచన ఫైల్లను తయారు చేయవచ్చు, పూల్స్తో ఆడవచ్చు, మీకు ఆసక్తి ఉంటే లోకల్ హాష్ డేటాబేస్ మరియు హాష్ సర్వర్, మరియు మరుసటి రోజు పెరుగుతున్న బ్యాకప్ పరిమాణం చూడండి నిన్నటి పైన ఉంటుంది.
మూలం: www.habr.com