Hashget සමඟ උපස්ථ 99.5% කින් අඩු කරන්න

hashget - එය නොමිලේ, විවෘත මූලාශ්‍රයකි ඩුප්ලිකේටර් උපස්ථවල ප්‍රමාණය සැලකිය යුතු ලෙස අඩු කිරීමට මෙන්ම වර්ධක සහ අවකල උපස්ථ යෝජනා ක්‍රම සහ තවත් බොහෝ දේ සංවිධානය කිරීමට ඔබට ඉඩ සලසන ලේඛනාගාරයකට සමාන උපයෝගීතාවයකි.

මෙය විශේෂාංග විස්තර කිරීමට දළ විශ්ලේෂණයකි. Hashget හි සැබෑ භාවිතය (ඉතා සරල) විස්තර කර ඇත README ව්යාපෘතිය සහ විකි ලේඛනගත කිරීම.

සංසන්දනය

ප්‍රභේදයේ නීතියට අනුව, මම කුතුහලය සමඟ වහාම ආරම්භ කරමි - ප්‍රති results ල සංසන්දනය කිරීම:

දත්ත නියැදිය
ඇසුරුම් නොකළ ප්රමාණය
.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% )

Debian 9 (LAMP) LXC VM
724 Mb.
165 Mb (23%)
4.1 Mb ( 0.5% )

පරමාදර්ශී සහ ඵලදායී උපස්ථයක් කුමක් විය යුතුද යන්න පිළිබඳ පසුබිම

මම අලුතින් නිර්මාණය කළ අතථ්‍ය යන්ත්‍රයක උපස්ථයක් සාදන සෑම අවස්ථාවකම, මම යම්කිසි වැරැද්දක් කරන බවට හැඟීමක් මා තුළ හොල්මන් විය. මගේ මිල කළ නොහැකි, නොනැසී පවතින නිර්මාණශීලීත්වය "Hello world" යන පාඨය සහිත තනි පේළියක index.html වන පද්ධතියෙන් මට විශාල උපස්ථයක් ලැබෙන්නේ ඇයි?

මගේ උපස්ථයේ 16 MB /usr/sbin/mysqld ඇත්තේ ඇයි? මෙම වැදගත් ලිපිගොනුව තබා ගැනීමේ ගෞරවය මේ ලෝකයේ මට තිබිය හැකිද, මම අසමත් වුවහොත් එය මනුෂ්‍යත්වයට අහිමි වනු ඇත්ද? බොහෝ දුරට නැත. එය ඉතා විශ්වාසදායක ඩේබියන් සේවාදායකයන් මත ගබඩා කර ඇත (විශ්වසනීයත්වය සහ කාලය මට සැපයිය හැකි දේ සමඟ සැසඳිය නොහැක), මෙන්ම අනෙකුත් පරිපාලකයින්ගේ උපස්ථවල (ඒවායින් මිලියන ගණනක්). විශ්වසනීයත්වය වැඩි දියුණු කිරීම සඳහා මෙම වැදගත් ගොනුවේ 10+ 000 වැනි පිටපතක් සෑදීමට අපට අවශ්‍යද?

පොදුවේ hashget සහ මෙම ගැටළුව විසඳයි. ඇසුරුම් කළ විට, එය ඉතා කුඩා උපස්ථයක් නිර්මාණය කරයි. අසුරන විට - සම්පූර්ණයෙන්ම අසුරන ලද පද්ධතියක්, එය එසේ නම් tar -c / tar -x. (වෙනත් වචන වලින් කිවහොත්, මෙය පාඩු රහිත ඇසුරුම්කරණයකි)

Hashget ක්‍රියා කරන ආකාරය

hashget සතුව පැකේජය සහ HashPackage යන සංකල්ප ඇත, ඔවුන්ගේ උපකාරයෙන් එය අඩුකිරීමක් සිදු කරයි.

පැකේජය (ප්ලාස්ටික් බෑගය). අන්තර්ජාලයෙන් ආරක්ෂිතව බාගත කළ හැකි ගොනුවක් (සාමාන්‍යයෙන් .deb හෝ .tar.gz සංරක්ෂිතයක්) සහ ගොනු එකක් හෝ කිහිපයක් ලබා ගත හැක.

HashPackage — පැකේජ URL සහ එහි ඇති ගොනු වල හැෂ් එකතුව (sha256) ඇතුළුව, පැකේජයක් නියෝජනය කරන කුඩා JSON ගොනුවක්. උදාහරණයක් ලෙස, 5 megabyte mariadb-server-core පැකේජයක් සඳහා, hashpackage ප්රමාණය කිලෝබයිට් 6 ක් පමණි. දහස් ගුණයකින් පමණ අඩුය.

අනුපිටපත් කිරීම — අනුපිටපත් ගොනු නොමැතිව සංරක්ෂිතයක් නිර්මාණය කිරීම (මූලික පැකේජය බාගත කළ හැක්කේ කොතැනදැයි ඩීඩප්ලිකේටරය දන්නේ නම්, එය සංරක්ෂිතයෙන් අනුපිටපත් අඩු කරයි).

ඇසුරුම්කරණය

ඇසුරුම් කරන විට, ඇසුරුම් කර ඇති බහලුමේ ඇති සියලුම ගොනු පරිලෝකනය කර, ඒවායේ හෑෂ් එකතු කිරීම් ගණනය කරනු ලබන අතර, එම එකතුව දන්නා HashPackage එකක තිබේ නම්, ගොනුව පිළිබඳ පාර-දත්ත (නම, හැෂ්, ප්‍රවේශ හිමිකම්, ආදිය) සුරකිනු ලැබේ. විශේෂ ගොනුවක .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 විසින් .hashget-restore.json ගොනුව කියවා, අවශ්‍ය පැකේජ බාගත කර, ඒවා අසුරා, අවශ්‍ය ගොනු උපුටා ගනිමින්, අවශ්‍ය හිමිකරු/කණ්ඩායම/අවසර සහිතව, අවශ්‍ය මාර්ගවල ඒවා ස්ථාපනය කරයි.

වඩා දුෂ්කර දේවල්

ඉහත විස්තර කර ඇති දේ දැනටමත් “තාර මෙන් අවශ්‍ය නමුත් මගේ ඩේබියන් මෙගාබයිට් 4කට පැකට් කිරීමට” ප්‍රමාණවත්ය. වඩාත් සංකීර්ණ දේවල් පසුව බලමු.

සුචිගත කිරීම

Hashget සතුව තනි HashPackage එකක් නොතිබුනේ නම්, එය සරලව කිසිවක් අනුපිටපත් කිරීමට නොහැකි වනු ඇත.

ඔබට HashPackage එකක් අතින් සෑදිය හැක (සරලව: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), නමුත් වඩාත් පහසු ක්රමයක් තිබේ.

අවශ්ය hashpackage ලබා ගැනීම සඳහා, අදියරක් ඇත සුචිගත කිරීම (එය විධානය සමඟ ස්වයංක්‍රීයව ක්‍රියාත්මක වේ --pack) සහ හූරිස්ටික්ස්. සුචිගත කිරීමේදී, හෑෂ්ජෙට් සෑම ගොනුවක්ම ඒ ගැන උනන්දුවක් දක්වන පවතින සියලුම හූරිස්ටික් වලට “පෝෂණය” කරයි. Heuristics හට HashPackage එකක් සෑදීමට ඕනෑම පැකේජයක් සුචිගත කළ හැක.

උදාහරණයක් ලෙස, Debian heuristic ගොනුව /var/lib/dpkg/status වලට ආදරය කරන අතර ස්ථාපිත debian පැකේජ හඳුනා ගනී, ඒවා සුචිගත කර නොමැති නම් (ඒවා සඳහා HashPackage නිර්මාණය කර නොමැත), ඒවා බාගත කර සුචිගත කරයි. ප්‍රතිඵලය ඉතා හොඳ ප්‍රයෝගයකි - නවතම පැකේජ තිබුණත්, Hashget සෑම විටම ඩේබියන් මෙහෙයුම් පද්ධති ඵලදායී ලෙස අඩු කරයි.

ඉඟි ගොනු

ඔබේ ජාලය ඔබේ හිමිකාර පැකේජ භාවිතා කරන්නේ නම් හෝ hashget heuristics හි ඇතුළත් නොවන පොදු පැකේජයක් භාවිතා කරන්නේ නම්, ඔබට එයට සරල 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 සුචිගත කළ යුතුද යන්න තීරණය කරයි, සහ hashget එය සුචිගත කරයි (එය දැනටමත් එසේ කර නොමැති නම්)

HashServer

උපස්ථ නිර්මාණය කිරීමේදී සම්පූර්ණ සුචිගත කිරීම සිදු කිරීම තරමක් ශ්‍රම-දැඩි වනු ඇත. මෙය සිදු කිරීම සඳහා, ඔබ එක් එක් පැකේජය බාගත කර, එය ඉවත් කර, එය සුචිගත කළ යුතුය. එබැවින් hashget සමඟ යෝජනා ක්රමයක් භාවිතා කරයි HashServer. ස්ථාපිත ඩේබියන් පැකේජයක් අනාවරණය වූ විට, එය දේශීය HashPackage හි සොයාගත නොහැකි නම්, Hash සේවාදායකයෙන් HashPackage සරලව බාගත කිරීමට උත්සාහ කරන්න. මෙය ක්‍රියා නොකරන්නේ නම් පමණක්, Hashget විසින්ම පැකේජය බාගත කර හැෂ් කරයි (සහ එය hashserver වෙත උඩුගත කරයි, එවිට එම hashserver එය අනාගතයේදී ලබා දෙයි).

HashServer යනු යෝජනා ක්‍රමයේ විකල්ප මූලද්‍රව්‍යයකි, තීරණාත්මක නොවේ, එය නිධිය මත බර පැටවීම වේගවත් කිරීමට සහ අඩු කිරීමට පමණක් සේවය කරයි. පහසුවෙන් අබල කළ හැක (විකල්ප --hashserver පරාමිතීන් නොමැතිව). ඊට අමතරව, ඔබට පහසුවෙන් කළ හැකිය ඔබේම hashserver එකක් සාදන්න.

වර්ධක සහ අවකල උපස්ථ, සැලසුම් කළ යල්පැන

hashget රූප සටහනක් සෑදීම ඉතා පහසු කරයි වර්ධක සහ අවකල උපස්ථ. අපි අපගේ උපස්ථයම (අපගේ සියලුම අද්විතීය ගොනු සමඟ) සුචිගත නොකරන්නේ මන්ද? එක කණ්ඩායමක් --submit සහ ඔබ අවසන්! Hashget නිර්මාණය කරන මීළඟ උපස්ථයේ මෙම සංරක්ෂිතයේ ගොනු ඇතුළත් නොවේ.

නමුත් මෙය එතරම් හොඳ ප්‍රවේශයක් නොවේ, මන්ද එය ප්‍රතිසාධනය කිරීමේදී අපට සමස්ත ඉතිහාසයේ සියලුම හැෂ්ගෙට් උපස්ථ අදින්නට සිදුවනු ඇති බැවින් (එක් එක් එකකට අවම වශයෙන් එක් අද්විතීය ගොනුවක්වත් තිබේ නම්). මේ සඳහා යාන්ත්රණයක් තිබේ උපස්ථවල සැලසුම්ගත යල්පැන යාම. සුචිගත කිරීමේදී, ඔබට HashPackage හි කල් ඉකුත්වන දිනය නියම කළ හැක --expires 2019-06-01, සහ මෙම දිනයෙන් පසු (00:00 සිට), එය භාවිතා නොකෙරේ. මෙම දිනයෙන් පසුව සංරක්ෂිතය මකා දැමිය නොහැක (හැෂ්ජෙට් හට මේ මොහොතේ හෝ ඕනෑම දිනයක දිරාපත් වී ඇති/පහසු වී ඇති සියලුම උපස්ථවල URL පහසුවෙන් පෙන්විය හැක).

උදාහරණයක් ලෙස, අපි 1 වන දින සම්පූර්ණ උපස්ථයක් සාදා එය මාසය අවසන් වන තෙක් ජීවිත කාලය සමඟ සුචිගත කළහොත්, අපට අවකල්‍ය උපස්ථ ක්‍රමයක් ලැබෙනු ඇත.

අපි නව උපස්ථ එකම ආකාරයෙන් සුචිගත කළහොත්, වර්ධක උපස්ථ යෝජනා ක්‍රමයක් ඇත.

සාම්ප්‍රදායික යෝජනා ක්‍රම මෙන් නොව, Hashget ඔබට යටින් පවතින මූලාශ්‍ර කිහිපයක් භාවිතා කිරීමට ඉඩ සලසයි. පෙර උපස්ථ (ඇත්නම්) සහ පොදු ගොනු (බාගත හැකි දේ) වලින් ගොනු අඩු කිරීමෙන් උපස්ථය අඩු කරනු ලැබේ.

කිසියම් හේතුවක් නිසා අපි Debian සම්පත් වල විශ්වසනීයත්වය විශ්වාස නොකරන්නෙමු නම් (https://snapshot.debian.org/) හෝ වෙනත් බෙදාහැරීමක් භාවිතා කරයි, අපට සියලු පැකේජ සමඟ එක් වරක් සම්පූර්ණ උපස්ථයක් සාදා, පසුව එය මත විශ්වාසය තැබිය හැකිය (හියුරිස්ටික් අක්‍රිය කිරීමෙන්) දැන්, අපගේ බෙදාහැරීම්වල සියලුම සේවාදායකයන් අපට නොපවතී නම් (සමරු අන්තර්ජාලයේ හෝ zombie apocalypse අතරතුර), නමුත් අපගේ උපස්ථ පිළිවෙළට තිබේ නම්, අපගේ පෙර උපස්ථ මත පමණක් රඳා පවතින ඕනෑම කෙටි වෙනස්කම් උපස්ථයකින් අපට ප්‍රකෘතිමත් විය හැක. .

Hashget ඔබේ අභිමතය පරිදි විශ්වාසදායක ප්‍රතිසාධන මූලාශ්‍ර මත පමණක් රඳා පවතී. ඔබ විශ්වාස කරන ඒවා භාවිතා කරනු ඇත.

FilePool සහ Glacier

යාන්ත්රණය FilePool පැකේජ බාගත කිරීම සඳහා බාහිර සේවාදායකයන් සම්බන්ධ කර නොගැනීමට ඔබට ඉඩ සලසයි, නමුත් දේශීය නාමාවලියකින් හෝ ආයතනික සේවාදායකයකින් පැකේජ භාවිතා කරන්න, උදාහරණයක් ලෙස:

$ hashget -u . --pool /tmp/pool

හෝ

$ hashget -u . --pool http://myhashdb.example.com/

දේශීය නාමාවලියක සංචිතයක් සෑදීමට, ඔබට නාමාවලියක් සාදා එයට ගොනු විසි කිරීමට අවශ්‍ය වේ, හැෂ් භාවිතා කර එයට අවශ්‍ය දේ හෑෂ්ගෙට් විසින්ම සොයා ගනු ඇත. HTTP හරහා සංචිතයට ප්‍රවේශ වීමට, ඔබ විශේෂ ආකාරයකින් symlinks සෑදිය යුතුය; මෙය එක් විධානයකින් සිදු කෙරේ (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool) HTTP FilePool යනු ස්ථිතික ගොනු වේ, එබැවින් ඕනෑම සරල වෙබ් සේවාදායකයකට එය සේවය කළ හැකිය, සේවාදායකයේ පැටවීම පාහේ ශුන්‍ය වේ.

FilePool වලට ස්තූතියි, ඔබට මූලික සම්පත් ලෙස http(s) සම්පත් පමණක් භාවිතා කළ හැක, නමුත් උදාහරණයක් ලෙස,ඇමසන් ග්ලැසියරය.

ග්ලැසියරයට උපස්ථය උඩුගත කිරීමෙන් පසුව, අපි එහි උඩුගත කිරීමේ හැඳුනුම්පත ලබාගෙන එය URL එකක් ලෙස භාවිතා කරමු. උදාහරණ වශයෙන්:

hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01

දැන් නව (අවකල) උපස්ථ මෙම උපස්ථය මත පදනම් වන අතර කෙටි වනු ඇත. Diffbackup තාර ඉවත් කිරීමෙන් පසුව, එය රඳා පවතින සම්පත් මොනවාදැයි අපට දැක ගත හැක:

hashget --info /tmp/unpacked/ list

මෙම ගොනු සියල්ල ග්ලැසියරයේ සිට තටාකයට බාගත කර සාමාන්‍ය ප්‍රතිසාධනය ක්‍රියාත්මක කිරීමට ෂෙල් ස්ක්‍රිප්ට් එකක් භාවිතා කරන්න: hashget -u /tmp/unpacked —pool /tmp/pool

ක්රීඩාව ඉටිපන්දම වටිනවාද?

සරලම අවස්ථාවෙහිදී, ඔබ උපස්ථ සඳහා අඩු මුදලක් ගෙවනු ඇත (ඔබ මුදල් සඳහා වලාකුළෙහි කොතැනක හෝ ගබඩා කරන්නේ නම්). සමහර විට බොහෝ, බොහෝ අඩු.

නමුත් එය එකම දෙය නොවේ. ප්‍රමාණය ගුණාත්මක බවට හැරේ. ඔබගේ උපස්ථ යෝජනා ක්‍රමයට උසස් තත්ත්වයේ උත්ශ්‍රේණියක් ලබා ගැනීමට ඔබට මෙය භාවිතා කළ හැක. උදාහරණයක් ලෙස, අපගේ උපස්ථ දැන් කෙටි බැවින්, අපට මාසික උපස්ථ නොව දෛනික ඒවා සෑදිය හැක. ඒවා පෙර මෙන් මාස හයක් නොව වසර 5ක් ගබඩා කරන්න. මීට පෙර, ඔබ එය මන්දගාමී නමුත් ලාභ "සීතල" ගබඩා (ග්ලැසියර්) තුළ ගබඩා කර ඇත, දැන් ඔබට එය උණුසුම් ගබඩා තුළ ගබඩා කළ හැකිය, ඔබට සෑම විටම ඉක්මනින් උපස්ථයක් බාගත කර විනාඩි කිහිපයකින් එය යථා තත්වයට පත් කළ හැකිය, දිනකට නොවේ.

ඔබට උපස්ථ ගබඩාවේ විශ්වසනීයත්වය වැඩි කළ හැකිය. අපි දැනට ඒවා එක් ගබඩා පහසුකමක ගබඩා කරන්නේ නම්, උපස්ථ පරිමාව අඩු කිරීමෙන්, ගබඩා පහසුකම් 2-3 ක ගබඩා කර ඒවායින් එකක් හානි වුවහොත් වේදනා රහිතව ජීවත් වීමට අපට හැකි වේ.

උත්සාහ කර භාවිතා කිරීම ආරම්භ කරන්නේ කෙසේද?

gitlab පිටුවට යන්න https://gitlab.com/yaroslaff/hashget, එක් විධානයකින් ස්ථාපනය කරන්න (pip3 install hashget[plugins]) සහ ඉක්මන් ආරම්භය කියවා ක්‍රියාත්මක කරන්න. සියලුම සරල දේවල් කිරීමට මිනිත්තු 10-15 ක් ගතවනු ඇතැයි මම සිතමි. එවිට ඔබට ඔබේ අතථ්‍ය යන්ත්‍ර සම්පීඩනය කිරීමට උත්සාහ කළ හැකිය, සම්පීඩනය ශක්තිමත් කිරීමට අවශ්‍ය නම් ඉඟි ගොනු සාදන්න, ඔබ කැමති නම් තටාක සමඟ සෙල්ලම් කරන්න, දේශීය හැෂ් දත්ත සමුදායක් සහ හැෂ් සේවාදායකයක්, සහ ඊළඟ දවසේ බලන්න වර්ධක උපස්ථයේ ප්‍රමාණය ඊයේට වඩා ඉහළින් පවතිනු ඇත.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න