هيشٽ سان 99.5٪ تائين بيڪ اپ گھٽايو

hashget - اهو مفت، کليل ذريعو آهي نقل ڪندڙ هڪ آرڪيور وانگر هڪ افاديت آهي جيڪا توهان کي بيڪ اپ جي سائيز کي خاص طور تي گهٽائڻ جي اجازت ڏئي ٿي، انهي سان گڏ وڌندڙ ۽ فرق واري بيڪ اپ اسڪيمن کي منظم ڪرڻ ۽ وڌيڪ.

هي هڪ جائزو مضمون آهي خاصيتون بيان ڪرڻ لاء. hashget جو اصل استعمال (بلڪل سادو) ۾ بيان ڪيو ويو آهي ريڊيو پروجيڪٽ ۽ wiki دستاويز.

مقابلي ۾

صنف جي قانون جي مطابق، مان فوري طور تي سازش سان شروع ڪندس - نتيجن جي مقابلي ۾:

ڊيٽا نموني
پيڪ ٿيل سائيز
.tar.gz
hashget.tar.gz

ورڈپریس-5.1.1
43 ايم
11 Mb (26%)
155 Kb ( 0.3٪ )

لينڪس ڪنٽرل 5.0.4
934 ايم
161 Mb (20%)
4.7 ايم بي ( 0.5٪ )

ديبين 9 (LAMP) LXC VM
724 ايم
165 Mb (23%)
4.1 ايم بي ( 0.5٪ )

پس منظر تي ڇا هڪ مثالي ۽ موثر بيڪ اپ هجڻ گهرجي

هر دفعي مون تازو ٺهيل ورچوئل مشين جو بيڪ اپ ڪيو، مون کي ان احساس کان پريشان ڪيو ويو ته مان ڪجهه غلط ڪري رهيو آهيان. مون کي سسٽم مان هڪ وڏو بيڪ اپ ڇو حاصل ڪيو وڃي، جتي منهنجي انمول، ناقابل فراموش تخليقيت هڪ ون لائين index.html متن سان آهي "Hello World"؟

منهنجي بيڪ اپ ۾ 16 MB /usr/sbin/mysqld ڇو آهي؟ ڇا واقعي ائين ٿي سگهي ٿو ته هن دنيا ۾ مون کي هي اهم فائيل رکڻ جو اعزاز حاصل هجي ۽ جيڪڏهن مان ناڪام ٿي ويس ته اهو انسانيت کان محروم ٿي وڃي؟ گهڻو ڪري نه. اهو محفوظ ڪيو ويو آهي انتهائي قابل اعتماد ڊيبين سرورز (جنهن جي اعتبار ۽ اپ ٽائم ان جي مقابلي ۾ نه ٿو ٿي سگهي جيڪا مان مهيا ڪري سگهان ٿو)، انهي سان گڏ بيڪ اپ ۾ (انهن مان لکين) ٻين منتظمين جي. ڇا اسان کي واقعي ٺاهڻ جي ضرورت آهي 10+ پهرين ڪاپي هن اهم فائل جي اعتماد کي بهتر ڪرڻ لاءِ؟

عام طور تي hashget ۽ هن مسئلي کي حل ڪري ٿو. جڏهن ڀريل، اهو هڪ تمام ننڍڙو بيڪ اپ ٺاهي ٿو. جڏهن unpacking - هڪ مڪمل طور تي unpacked نظام، ان کي ڇا ٿيندو جيڪڏھن tar -c / tar -x. (ٻين لفظن ۾، هي بيڪار پيڪنگنگ آهي)

ڪيئن hashget ڪم

hashget وٽ Package ۽ HashPackage جا تصور آھن، انھن جي مدد سان اھو نقل ڪري ٿو.

پئڪيج (پلاسٽڪ جي ٿيلھي). هڪ فائل (عام طور تي هڪ .deb يا .tar.gz آرڪائيو) جيڪا محفوظ طور تي انٽرنيٽ تان ڊائون لوڊ ڪري سگهجي ٿي، ۽ جنهن مان هڪ يا وڌيڪ فائلون حاصل ڪري سگھجن ٿيون.

هيش پيڪيج - ھڪڙو ننڍڙو JSON فائل آھي جيڪو ھڪڙي پيڪيج جي نمائندگي ڪري ٿو، بشمول پيڪيج URL ۽ ان مان فائلن جي hash sums (sha256). مثال طور، 5 ميگا بائيٽ mariadb-server-core پيڪيج لاءِ، hashpackage size is only 6 kilobytes. اٽڪل هڪ هزار ڀيرا گهٽ.

نقل ڪرڻ - ڊپليڪيٽ فائلن کان سواءِ آرڪائيو ٺاهڻ (جيڪڏهن ڊيڊپليڪٽر ڄاڻي ٿو ته اصل پيڪيج ڪٿي ڊائون لوڊ ڪري سگهجي ٿو، اهو آرڪائيو مان نقلن کي گھٽائي ٿو).

پيڪنگنگ

پيڪنگ ڪرڻ وقت، ڊاريڪٽري مان سڀني فائلن کي اسڪين ڪيو وڃي ٿو جيڪو پيڪ ڪيو پيو وڃي، انهن جي هيش جي رقم جي حساب سان حساب ڪيو ويو آهي، ۽ جيڪڏهن رقم معلوم ٿئي ٿي HashPackages مان هڪ ۾، پوء فائل بابت ميٽا ڊيٽا (نالو، هيش، رسائي جا حق، وغيره) محفوظ ڪئي وئي آهي. هڪ خاص فائل ۾ .hashget-restore.json، جيڪو پڻ آرڪائيو ۾ شامل ڪيو ويندو.

سادي صورت ۾، پيڪنگنگ پاڻ کي ٽار کان وڌيڪ پيچيده نظر نٿو اچي:

hashget -zf /tmp/mybackup.tar.gz --pack /path/to/data

ٻاھر ڪingڻ

Unpacking ٻن مرحلن ۾ ڪيو ويندو آهي. پهرين عام ٽار پيڪنگ:

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. انڊيڪس ڪرڻ وقت، هيشٽ “فيڊز” هر فائل کي مليا سڀ موجود هيرسٽسٽس جيڪي ان ۾ دلچسپي رکن ٿا. Heuristics وري انڊيڪس ڪري سگھي ٿو ڪنھن به پيڪيج کي HashPackage ٺاھڻ لاءِ.

مثال طور، Debian heuristic فائل سان پيار ڪندو آهي /var/lib/dpkg/status ۽ انسٽال ٿيل ڊيبين پيڪيجز کي ڳولي ٿو، ۽ جيڪڏهن اهي انڊيڪس نه ڪيا ويا آهن (انهن لاءِ ڪو HashPackage ٺاهيل ناهي)، انهن کي ڊائون لوڊ ۽ انڊيڪس ڪري ٿو. نتيجو هڪ تمام سٺو اثر آهي - هيشٽ هميشه مؤثر طريقي سان ڊيبين او ايسز کي نقل ڪندو، جيتوڻيڪ انهن وٽ جديد پيڪيجز آهن.

اشارو فائلون

جيڪڏهن توهان جو نيٽ ورڪ توهان جي ملڪيت جا ڪجهه پيڪيجز يا عوامي پيڪيج استعمال ڪري ٿو جيڪو hashget heuristics ۾ شامل نه آهي، توهان ان ۾ هڪ سادي hashget-hint.json hint فائل شامل ڪري سگهو ٿا هن طرح:

{
    "project": "wordpress.org",
    "url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}

اڳيون، هر دفعي هڪ آرڪائيو ٺاهيو ويندو، پيڪيج کي ترتيب ڏنو ويندو (جيڪڏهن اهو اڳ ۾ نه ڪيو ويو آهي)، ۽ پيڪيج فائلن کي آرڪائيو مان ڪڍيو ويندو. ڪا به پروگرامنگ جي ضرورت ناهي، سڀ ڪجهه ٿي سگهي ٿو ويم کان ۽ هر بيڪ اپ ۾ محفوظ ڪريو. مهرباني ڪري نوٽ ڪريو ته هيش سم اپروچ جي مهرباني، جيڪڏهن پيڪيج مان ڪجهه فائلون مقامي طور تي تبديل ڪيون وينديون آهن (مثال طور، هڪ ترتيب واري فائيل تبديل ڪئي وئي آهي)، پوء تبديل ٿيل فائلون محفوظ ڪيون وينديون آرڪائيو "جيئن آهي" ۽ ڪٽي نه وينديون.

جيڪڏهن توهان جا پنهنجا پيڪيجز وقتي طور تي اپڊيٽ ڪيا ويندا آهن، پر تبديليون تمام وڏيون نه هونديون آهن، توهان صرف وڏن ورزن لاءِ اشارو ڪري سگهو ٿا. مثال طور، ورزن 1.0 ۾ هنن هڪ اشارو ڪيو mypackage-1.0.tar.gz ڏانهن اشارو ڪيو، ۽ اهو مڪمل طور تي نقل ڪيو ويندو، پوءِ هنن ورجن 1.1 جاري ڪيو، جيڪو ٿورو مختلف آهي، پر اشارو اپڊيٽ نه ڪيو ويو. ٺيڪ آهي. صرف فائلون جيڪي ملن ٿيون (بحال ڪري سگھجن ٿيون) ورجن 1.0 کي نقل ڪيو ويو آهي.

هيورسٽڪ جيڪو اشاري واري فائل کي پروسيس ڪري ٿو اهو اندروني ميڪانيزم کي سمجهڻ لاءِ هڪ سٺو مثال آهي ته هيورسٽڪس ڪيئن ڪم ڪري ٿو. اهو صرف hashget-hint.json فائلن تي عمل ڪري ٿو (يا .hashget-hint.json ڊٽ سان) ۽ ٻين سڀني کي نظرانداز ڪري ٿو. هن فائل مان، اهو طئي ڪري ٿو ته ڪهڙي پيڪيج URL کي ترتيب ڏيڻ گهرجي، ۽ هيشٽ ان کي ترتيب ڏئي ٿو (جيڪڏهن اهو اڳ ۾ ئي نه ڪيو آهي)

HashServer

بيڪ اپ ٺاهڻ دوران مڪمل انڊيڪسنگ انجام ڏيڻ لاءِ اهو ڪافي محنت وارو هوندو. هن کي ڪرڻ لاء، توهان کي هر پيڪيج کي ڊائون لوڊ ڪرڻ جي ضرورت آهي، ان کي کوليو، ۽ ان کي ترتيب ڏيو. تنهن ڪري hashget استعمال ڪري هڪ اسڪيم سان HashServer. جڏهن هڪ نصب ٿيل ڊيبين پيڪيج معلوم ٿئي ٿو، جيڪڏهن اهو مقامي HashPackage ۾ نه مليو آهي، پهرين ڪوشش ڪئي وئي آهي ته صرف هش سرور تان HashPackage ڊائون لوڊ ڪريو. ۽ صرف جيڪڏهن اهو ڪم نٿو ڪري، هيشٽ پاڻ کي ڊائون لوڊ ڪري ٿو ۽ پيڪيج کي هٽائي ٿو (۽ ان کي هش سرور تي اپلوڊ ڪري ٿو، انهي ڪري ته هيش سرور مستقبل ۾ مهيا ڪري ٿو).

HashServer اسڪيم جو هڪ اختياري عنصر آهي، نازڪ ناهي، اهو صرف ڪم ڪري ٿو رفتار کي تيز ڪرڻ ۽ مخزن تي لوڊ کي گهٽائڻ. آساني سان بند ٿيل (اختياري --hashserver بغير پيٽرولر). ان کان سواء، توهان آساني سان ڪري سگهو ٿا پنهنجو هيش سرور ٺاهيو.

واڌارو ۽ فرق واري بيڪ اپ، منصوبابندي ڪيل غير معمولي

hashget اهو هڪ خاڪو ٺاهڻ تمام آسان بڻائي ٿو واڌارو ۽ فرق واري بيڪ اپ. اسان پنهنجي بيڪ اپ کي انڊيڪس ڇو نٿا ڪريون (اسان جي سڀني منفرد فائلن سان)؟ ھڪڙي ٽيم --submit ۽ توهان ڪيو آهي! ايندڙ بيڪ اپ جيڪو هيشٽ ٺاهي ٿو ان ۾ هن آرڪائيو مان فائلون شامل نه هونديون.

پر اهو هڪ تمام سٺو طريقو ناهي، ڇاڪاڻ ته اهو ٿي سگهي ٿو ته بحال ڪرڻ وقت اسان کي سڄي تاريخ ۾ سڀني هيشٽ بيڪ اپ ڪڍڻو پوندو (جيڪڏهن هر هڪ ۾ گهٽ ۾ گهٽ هڪ منفرد فائل هجي). هن لاء هڪ ميکانيزم آهي بيڪ اپ جي منصوبابندي ڪيل غير معمولي. جڏهن ترتيب ڏيڻ، توهان HashPackage جي ختم ٿيڻ جي تاريخ بيان ڪري سگهو ٿا --expires 2019-06-01، ۽ هن تاريخ کان پوءِ (00:00 کان)، اهو استعمال نه ڪيو ويندو. هن تاريخ کان پوءِ آرڪائيو پاڻ کي ختم نه ٿو ڪري سگهجي (جيتوڻيڪ هيشٽ آساني سان سڀني بيڪ اپ جا URL ڏيکاري سگهي ٿو جيڪي هن وقت يا ڪنهن به تاريخ تي سڙيل هوندا).

مثال طور، جيڪڏهن اسان پهرين تي مڪمل بيڪ اپ ٺاهيون ٿا ۽ ان کي انڊيڪس ڪريون ٿا زندگيءَ سان گڏ مهيني جي آخر تائين، اسان کي حاصل ڪنداسين هڪ مختلف بيڪ اپ اسڪيم.

جيڪڏهن اسان نئين بيڪ اپ کي ساڳئي طريقي سان ترتيب ڏيون ٿا، اتي واڌارو بيڪ اپ جو هڪ منصوبو هوندو.

روايتي اسڪيمن جي برعڪس، هيشٽ توهان کي ڪيترن ئي بنيادي ذريعن کي استعمال ڪرڻ جي اجازت ڏئي ٿي. اڳئين بيڪ اپ (جيڪڏهن ڪو به هجي) ۽ عوامي فائلن (جيڪا ڊائون لوڊ ڪري سگهجي ٿي) جي فائلن کي گهٽائڻ سان ٻنهي جي بيڪ اپ کي گهٽائي ويندي.

جيڪڏهن ڪجهه سببن لاءِ اسان ڊيبين وسيلن جي اعتبار تي ڀروسو نٿا ڪريون (https://snapshot.debian.org/(heuristics کي غير فعال ڪرڻ سان). هاڻي، جيڪڏهن اسان جي تقسيم جا سڀئي سرور اسان لاءِ دستياب نه آهن (سووينيئر انٽرنيٽ تي يا زومبي اپوڪلپس جي دوران)، پر اسان جا بيڪ اپ ترتيب ۾ آهن، اسان ڪنهن به مختصر مختلف بيڪ اپ مان حاصل ڪري سگهون ٿا جيڪو صرف اسان جي اڳوڻي بيڪ اپ تي ڀاڙي ٿو. .

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 فائل پول خود جامد فائلون آهن، تنهنڪري ڪو به سادو ويب سرور ان جي خدمت ڪري سگهي ٿو، سرور تي لوڊ تقريبا صفر آهي.

FilePool جي مهرباني، توهان استعمال ڪري سگهو ٿا نه صرف http(s) وسيلن کي بنيادي وسيلن طور، پر پڻ مثال طور، Amazon Glacier.

گليشيئر تي بيڪ اپ اپ لوڊ ڪرڻ کان پوء، اسان ان جي اپلوڊ 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

۽ صرف هڪ شيل اسڪرپٽ استعمال ڪريو انهن سڀني فائلن کي Glacier کان پول تائين ڊائون لوڊ ڪرڻ ۽ معمول جي بحالي کي هلائڻ لاءِ: 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

تبصرو شامل ڪريو