विषयसूची:

ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस: 5 कदम
ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस: 5 कदम

वीडियो: ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस: 5 कदम

वीडियो: ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस: 5 कदम
वीडियो: don't move!!!!!! #squidgame 2024, नवंबर
Anonim
ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस
ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस
ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस
ऑरेंजबॉक्स: ऑरेंजपीआई आधारित सुरक्षित बैकअप स्टोरेज डिवाइस

ऑरेंजबॉक्स किसी भी सर्वर के लिए एक ऑल-इन-वन रिमोट स्टोरेज बैकअप बॉक्स है।

आपका सर्वर संक्रमित, दूषित, मिटाया जा सकता है और आपका सारा डेटा ऑरेंजबॉक्स पर अभी भी सुरक्षित है और बैकअप डिवाइस जैसा असंभव मिशन कौन पसंद नहीं करेगा जिसे आप अभी प्लग इन करते हैं और कुछ और किए बिना प्रगति संकेतक देखते हैं (बस जादू की उम्मीद करें अंत में धुआं नहीं निकलेगा:))।

ऑरेंजबॉक्स मेरी पहली परियोजना है जो ज्यादातर एक सॉफ्टवेयर है, हार्डवेयर हैक नहीं। यह मूल रूप से एक एलसीडी संलग्न के साथ एक कस्टम निर्मित NAS है।

चरण 1: हार्डवेयर पार्ट्स

हार्डवेयर पार्ट्स
हार्डवेयर पार्ट्स
हार्डवेयर पार्ट्स
हार्डवेयर पार्ट्स
हार्डवेयर पार्ट्स
हार्डवेयर पार्ट्स

ऑरेंज पीआई शून्य एक ओपन-सोर्स सिंगल-बोर्ड कंप्यूटर है। यह एंड्रॉइड 4.4, उबंटू, डेबियन चला सकता है। यह AllWinner H2 SoC का उपयोग करता है, और इसमें 256MB/512MB DDR3 SDRAM (256MB संस्करण मानक संस्करण है। ऑरेंज पाई ज़ीरो उन सभी के लिए है जो तकनीक के साथ निर्माण शुरू करना चाहते हैं - न कि केवल इसका उपभोग करना। यह एक सरल, मजेदार, उपयोगी उपकरण है जिसे आप अपने आस-पास की दुनिया पर नियंत्रण शुरू करने के लिए उपयोग कर सकते हैं (https://www.orangepi.org/orangepizero/)। तो यह हमारे लिए बिल्कुल सही है:)

  • धातु/प्लास्टिक/लकड़ी का डिब्बा (मैंने एक पुराने यामाहा बाहरी सीडी-आरडब्ल्यू बॉक्स का उपयोग किया है)
  • ऑरेंज पीआई शून्य या बेहतर (यदि आप किसी अन्य मॉडल का उपयोग करते हैं तो जीपीआईओ पिनआउट बदल सकता है)
  • 2x20 आरजीबी एलसीडी स्क्रीन
  • कोई भी एसएफएफ 3.5/एलएफएफ 2.55 यूएसबी ड्राइव
  • सटा -> यूएसबी एडाप्टर। ध्यान रखें कि जबकि ऑरेंजपीआई अधिकतम ड्राइव क्षमता पर ऊपरी सीमा नहीं लगाता है, हालांकि बहुत सारे यूएसबी-टू-एसएटीए ब्रिज (2TB अधिकतम) करते हैं। मेरे द्वारा उपयोग किए जाने वाले नारंगी PI ज़ीरो में केवल 28 MB/s अधिकतम की प्रभावी अंतरण दर के साथ एक एकल USB 2.0 पोर्ट है। मैंने एक USB3.0 (भविष्य के उन्नयन के लिए तैयार) -> SATA ब्रिज (ब्रांड का उल्लेख नहीं किया जाएगा) चुना है और यह सीमा को पूरा करता है इसलिए बेहतर है कि JMicron JMS567 चिप आधारित ब्रिज जैसे बड़े ड्राइव को सपोर्ट करने वाले ब्रिज को चुना जाए।. एक खरीदने से पहले अपना खुद का शोध करें। मैं इस परियोजना में 2TB sata ड्राइव का उपयोग करके गति और हार्ड ड्राइव की सीमा के साथ रह सकता हूं (यदि आप बड़ी ड्राइव में डालते हैं, तो इसे पहचाना जाएगा, लेकिन OS केवल इसका पहला 2TB ही देखेगा, इसलिए शेष क्षमता होगी खोया)।
  • 12 वी 2.5 ए या उच्चतर amp एडाप्टर। ओपीआई ज़ीरो के लिए लगभग 500mA सामान्य उपयोग और एक मानक LFF SATA ड्राइव के लिए 1.5A शिखर की गणना करें। ओवरसाइज़िंग कभी दर्द नहीं देता। मेरे सेटअप में यामाहा पीएसयू (जो 12 + 5 वी रेल दोनों पर पर्याप्त से अधिक आपूर्ति कर सकता था) दुर्भाग्य से उड़ा:(एक सेकंड के लिए जीएनडी में मुख्य स्विच को सॉर्ट करने के कारण मुझे एक नियमित एडाप्टर में गोंद करना पड़ा, पर कम से कम इसने बॉक्स को दो ग्राम हल्का कर दिया।
  • बक कनवर्टर DC-DC 12V->5V। मैंने आयरनफोर्ज के समान ही समायोज्य मिनी हिरन का उपयोग किया, पूरी तरह से काम करता है।

ऐच्छिक

यदि आप + 10$ खर्च करने को तैयार हैं तो आप ऑरेंज पाई प्लस (https://www.armbian.com/orange-pi-one-plus/) प्राप्त कर सकते हैं जो समान फॉर्म फैक्टर है और आपको Gbe और SATA3 मिलता है। इसके लिए लिब्रा पीआई वायरिंग लाइब्रेरी का उपयोग किया जा सकता है: https://github.com/OrangePiLibra/WiringPi लेकिन चूंकि GPIO पिनआउट अलग है इसलिए यह इस लेखन के दायरे से बाहर है।

आप इस निर्माण को नए ऑरेंज पीआई प्लस2 के साथ भी कर सकते हैं जिसमें सैटा कनेक्टर है और आप sata-> यूएसबी कन्वर्टर्स के उपयोग को उनकी सीमाओं के साथ छोड़ सकते हैं। यदि आप फ्रीबीएसडी या अन्य बीएसडी का उपयोग करने की योजना बना रहे हैं तो ऑरेंज पीआई श्रृंखला सबसे अच्छा विकल्प नहीं हो सकता है क्योंकि उनका हार्डवेयर समर्थन सीमित है (उदाहरण के लिए आपको बूट करने के लिए यूएसबी स्टिक का उपयोग करने की आवश्यकता है)। बीएसडी के लिए रास्पबेरी पीआई का उपयोग करना सबसे अच्छी सलाह है। LCD के लिए C कोड और सभी शेल स्क्रिप्ट दोनों ही किसी अन्य UNIX सिस्टम के लिए पोर्टेबल हैं।

चरण 2: हार्डवेयर डिजाइन

हार्डवेयर डिजाइन
हार्डवेयर डिजाइन
हार्डवेयर डिजाइन
हार्डवेयर डिजाइन
हार्डवेयर डिजाइन
हार्डवेयर डिजाइन

यामाहा बॉक्स यह सब स्टोर करने के लिए पर्याप्त था, इसमें ऑरेंज पीआई पीसी या नियमित रास्पी फॉर्म-फैक्टर बोर्ड के लिए पर्याप्त जगह नहीं होगी।

इथरनेट को एक एक्सटेंडर के साथ बॉक्स के पीछे लाया गया था। याद रखें कि ऑरेंज पीआई शून्य में केवल 100mbit/s ईथरनेट इंटरफेस है यदि आप तेजी से चाहते हैं तो आपको दूसरे बोर्ड जैसे कि Asus Tinkerboard/RPI3B+/Other Orange PI मॉडल का उपयोग करने की आवश्यकता होगी।

गलत पिन आउट एक और एकमात्र गलती है जो आप इस परियोजना में कर सकते हैं इसलिए यह अंगूठे के सिद्धांतों के कुछ नियमों को लागू करने के लायक है:

1, हमेशा END से END तक एक ही रंगीन केबल का उपयोग करने का प्रयास करें। मैं खुद कुछ परियोजनाओं में वही "गलती" करता हूं, जहां मैं नहीं करता, सिर्फ इसलिए कि मेरे पास लंबे समय तक पुरुष-पुरुष/पुरुष-महिला/महिला-महिला केबल नहीं हैं और मैं साथ में आने के लिए एक साथ 2 पैच करता हूं सर्किट। यदि आप अपने काम का सही तरीके से दस्तावेजीकरण नहीं करते हैं तो इससे सालों बाद सिरदर्द हो सकता है जहां आपको मरम्मत, अपग्रेड करना होगा।

2, कनेक्टर्स पर कुछ हॉटग्लू लगाएं। इन आर्डिनो-स्टार्टर किट स्टाइल एमएम/एमएफ/एफएफ केबल्स का उपयोग करने के मामले में जो लाइन गुणवत्ता के शीर्ष पर नहीं हैं, यह काफी सामान्य है (विशेषकर यदि आप डिवाइस को घुमाते/परिवहन करते हैं) कि कनेक्टर फिसल जाते हैं। यदि आप जानते हैं कि यह एक लंबे समय तक उपयोग करने वाला उपकरण होगा (संभवतः इसे तब तक उपयोग करें जब तक यह टूट न जाए ?!) जरूरत पड़ने पर इसे बाद में आसानी से पिघलाया/खरोंच किया जा सकता है।

3, ऑरेंजपीआई शून्य वायरिंग बुरी खबर यह है कि ऑरेंज पीआई पिनआउट रास्पबेरी पीआई 0/1/2/3 के समान नहीं है और अन्य ऑरेंज पीआई मॉडल के बीच भी अंतर है। जाने का सबसे अच्छा तरीका वायरिंग लाइब्रेरी (ऑरेंज पीआई ज़ीरो संस्करण) प्राप्त करना है। छवि थोड़ी भ्रमित करने वाली हो सकती है लेकिन ये सबसे अच्छी थीं जो मुझे मिल सकती थीं। एक दूसरे का 180 डिग्री का दर्पण है। हालांकि सीएलआई गैर ग्राफिकल छवि को समझना अधिक कठिन हो सकता है, यह सबसे सीधा आगे है।

आप हमेशा एक छोर को (+3.3/+5V) के साथ सकारात्मक छोर के रूप में और दूसरे को नकारात्मक अंत (एक GND) के रूप में मान कर सॉकेट के 2 छोर को अलग कर सकते हैं -> यह ईथरनेट पोर्ट का सामना करने वाले कनेक्टर का अंत है.

वायरिंग पीआई ज़ीरो टेबल से आपको केवल एक कॉलम की आवश्यकता होगी, डब्ल्यूपीआई दूसरों के बारे में भूल जाता है जैसे वे वहां नहीं होंगे।

इसलिए उदाहरण के लिए LCD_E 15 (अर्थात wPI 15!) और LCD_RS 16 (अर्थात wPI 16!) कनेक्ट करने के लिए कनेक्टर के पॉज़िटिव सिरे से पिनों को गिनें (पेन या छोटे स्क्रूड्राइवर के साथ करना आसान)। वह शारीरिक रूप से 4 पिन और 5 पिन नीचे जा रहा होगा।

4, समूह बनाना। यदि इस्तेमाल किए गए पिनों को एक-दूसरे के बगल में रखने की संभावना है (उन्हें समूहबद्ध करना) हमेशा उसे चुना जाता है, तो यह उन्हें हॉटग्लू के बिना भी एक-दूसरे से पकड़ लेता है और अन्य परियोजनाओं में भी जब आपके पास 2x 4x 6x मोलेक्स कनेक्टर होते हैं जो आप कर सकते हैं बस पिन एक दूसरे के बगल में होने का लाभ उठाएं। यहां आप जो सबसे अच्छा कर सकते हैं वह है 2-3 का समूह (पुराने पीसी से बचाए गए जम्पर केबल्स का उपयोग करते समय आदर्श)।

ऑरेंजपीआई एलसीडी स्क्रीन कनेक्शन के लिए उपयोग किए जाने वाले पिन:

// वायरिंगपीआई पिन नंबर का उपयोग करें

#define LCD_E 15 // इनेबल पिन #define LCD_RS 16 // रजिस्टर सिलेक्ट पिन #define LCD_D4 5 // डेटा पिन 4 #define LCD_D5 6 // डेटा पिन 5 #define LCD_D6 10 // डेटा पिन 6 #define LCD_D7 11 // डेटा पिन 7

आरजीबी बैकलाइट नियंत्रण के लिए उपयोग किए जाने वाले पिन

$G लिखें 1 0

$G लिखें 4 1 $G लिखें 7 1

ऑरेंज पीआई शून्य डब्ल्यूपीआई पिन 1, 4, 7. एकमात्र जादू यह एलसीडी मानक फिक्स ब्लू या फिक्स ग्रीन बैकलाइट एलसीडी की तुलना में कर सकता है जहां आपके पास एक कैथोड है जिसे जीएनडी तक खींचने की जरूरत है कि इसमें 3 के लिए 3 है रंग की। लाल, हरा और नीला। जिस संयोजन को चालू किया गया है उसे बदलकर आप इन मूल रंगों से अलग-अलग रंगों को मिला सकते हैं लेकिन केवल उच्च अंत कोई रंग नहीं है क्योंकि आप रंग की चमक को नियंत्रित नहीं कर सकते हैं (यह या तो चालू या बंद है)।

योजक रंग मिश्रण: हरे रंग में लाल मिलाने से पीला रंग मिलता है; लाल को नीले रंग में मिलाने से मैजेंटा प्राप्त होता है; हरे से नीले रंग में मिलाने से सियान निकलता है; तीनों प्राथमिक रंगों को एक साथ मिलाने से सफेद रंग प्राप्त होता है।

चरण 3: ऑपरेटिंग सिस्टम

ऑपरेटिंग सिस्टम
ऑपरेटिंग सिस्टम

ऑरेंजबॉक्स बूट होता है और आर्मबियन लाइनक्स (डेबियन स्ट्रेच पर आधारित) 4.14.18-सनक्सी कर्नेल एक सुरक्षित फ़ायरवॉल वातावरण के साथ, एक वीपीएन से जुड़ता है और सर्वर से रिमोट बैकअप कमांड की प्रतीक्षा करता है।

डिज़ाइन सिद्धांत:

-फुल लुक्स आधारित डिस्क एन्क्रिप्शन (डिवाइस में बैकअप ड्राइव को खोलने के लिए कुंजी नहीं है। इसे अस्थायी रूप से दूरस्थ सर्वर से ram /dev/shm में कॉपी किया जाएगा, ड्राइव को खोला जाएगा और कुंजी को मिटा दिया जाएगा। बैकअप समाप्त होने के बाद ड्राइव बंद हो गई और ऑरेंजबॉक्स 1 मिनट में स्वचालित रूप से बंद हो गया।)

-सभी कमांड और चाबियां रिमोट सर्वर से भेजी जाती हैं (डिवाइस में केवल एक वीपीएन सर्टिफिकेट होता है) इसमें रिमोट सर्वर तक कोई पहुंच नहीं होती है, यहां तक कि इस डिवाइस से एसएसएच भी फायरवॉल हो जाता है।

-स्थानीय फाइल सिस्टम बूट करने में सक्षम होने के लिए अन-एन्क्रिप्टेड लेकिन इसमें कुछ भी उपयोगी नहीं है और चूंकि वीपीएन अपलिंक दूसरे छोर पर अत्यधिक प्रतिबंधित है, यहां तक कि डिवाइस के पूर्ण नुकसान के साथ एक हमलावर कुछ भी नहीं कर सकता है

आर्मबियन स्ट्रेच को https://www.armbian.com/orange-pi-zero/ से डाउनलोड करें

सिस्टम को चालू करें और चलाएं:

उपयुक्त-अपडेट प्राप्त करें && उपयुक्त-अपग्रेड प्राप्त करें

उपयुक्त-प्राप्त sysvinit-core sysvinit-utils

/etc/inittab संपादित करें, सभी कंसोल को अक्षम किया जा सकता है क्योंकि बॉक्स को हेडलेस के रूप में उपयोग किया जाएगा। निम्नलिखित अनुभाग पर टिप्पणी करें:

# 1:2345: प्रतिक्रिया:/sbin/getty 38400 tty1

#2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6

अपने बॉक्स को रीबूट करें और एक वास्तविक ओपन सोर्स ब्लोटवेयर मुक्त सिस्टम के लिए सिस्टमड को हटा दें।

उपयुक्त-निकालें --purge --auto-remove systemd

कुछ पैकेज स्थापित करें

apt- cryptsetup vim htop rsync स्क्रीन स्थापित करें gcc मेक git

वायरिंगपी लाइब्रेरी स्थापित करें

सीडी / यूएसआर / src

git क्लोन https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build

एलसीडी डिस्प्ले के लिए ऑरेंज यूजर बनाएं

ग्रुपएड -जी 1000 ऑरेंज

useradd -m -d /home/orange -s /bin/bash -u 1000 -g नारंगी नारंगी

पहरेदार जो आप पर नज़र नहीं रखता

उपयुक्त-प्रहरी स्थापित करें

/etc/default/watchdog देख रहे हैं # बूट समय पर वॉचडॉग शुरू करें? 0 या 1 रन_वॉचडॉग=1 # वॉचडॉग को रोकने के बाद wd_keepalive प्रारंभ करें? 0 या 1 run_wd_keepalive=1 # वॉचडॉग शुरू करने से पहले मॉड्यूल लोड करें watchdog_module="none" # यहां अतिरिक्त वॉचडॉग विकल्प निर्दिष्ट करें (मैनपेज देखें)।

/etc/watchdog.conf को देख रहे हैं

#कम से कम इन्हें सक्षम करें

अधिकतम लोड -1 = 24 अधिकतम लोड -5 = 18 अधिकतम लोड -15 = 12

/etc/init.d/watchdog start

कम से कम 1 कर्नेल थ्रेड और 1 प्रक्रिया होनी चाहिए:

रूट 42 0.0 0.0 0 0? मैं< १०:५० ०:०० [वॉचडॉगड] रूट १४६१३ ०.० ०.२ १४३२ 1080 ? एसएल 13:31 0:00 /usr/sbin/watchdog

परिक्षण:

सुनिश्चित करें कि आपने सब कुछ रोक दिया है और शेष डेटा को डिस्क पर लिखने के लिए सिंक && सिंक && सिंक करें। फिर मूल मुद्दे के रूप में:

इको 1 > /देव/वॉचडॉग

कुछ सेकंड के बाद मशीन को रीबूट करना चाहिए।

जैसा कि मैनुअल कहता है:

क्या प्रक्रिया तालिका भरी हुई है?

ओ क्या पर्याप्त मुक्त स्मृति है? ओ क्या पर्याप्त आवंटन योग्य स्मृति है? ओ क्या कुछ फाइलें सुलभ हैं? o क्या एक निश्चित अंतराल में कुछ फाइलें बदली गई हैं? o क्या औसत कार्य भार बहुत अधिक है? o क्या कोई फ़ाइल तालिका अतिप्रवाह हुई है? o क्या कोई प्रक्रिया अभी भी चल रही है? प्रक्रिया एक pid फ़ाइल द्वारा निर्दिष्ट है। ओ क्या कुछ आईपी पते पिंग का जवाब देते हैं? o क्या नेटवर्क इंटरफेस ट्रैफिक प्राप्त करते हैं? ओ क्या तापमान बहुत अधिक है? (तापमान डेटा हमेशा उपलब्ध नहीं होता है।) o मनमाने ढंग से परीक्षण करने के लिए उपयोगकर्ता परिभाषित आदेश निष्पादित करें। o /etc/watchdog.d में पाए गए एक या अधिक परीक्षण/मरम्मत आदेश निष्पादित करें। इन आदेशों को तर्क परीक्षण या मरम्मत के साथ बुलाया जाता है। यदि इनमें से कोई भी चेक विफल हो जाता है तो वॉचडॉग शटडाउन का कारण बनेगा। उपयोगकर्ता परिभाषित बाइनरी को छोड़कर इनमें से कोई भी परीक्षण एक मिनट से अधिक समय तक चलने पर मशीन को भी रीबूट किया जाएगा।

यह वॉचडॉग नियमित x86 आर्किटेक्चर पर ठीक काम कर सकता है लेकिन एआरएम आधारित बोर्डों जैसे रास्पबेरी पीआई, ऑरेंज पीआई पर इसने मुझे अनगिनत बार विफल कर दिया। सिस्टम हैंग स्टेट्स में जा सकता है जहां वॉचडॉग भी लटका हुआ है। आइए इसे वैसे भी कॉन्फ़िगर करें, हो सकता है कि यह वर्षों से उपयुक्त-अपग्रेड के साथ बेहतर हो जाए:(

चरण 4: सॉफ्टवेयर डिजाइन

सॉफ्टवेर डिज़ाइन
सॉफ्टवेर डिज़ाइन

बैकअप प्रक्रिया स्वयं rsync आधारित है (सर्वश्रेष्ठ बैकअप उपकरण का आविष्कार किया गया) डेटा SERVER->OrangeBOX से पुश हो जाता है।

एलसीडी पर मुद्रित बैकअप के बारे में प्रगति पट्टी रखने के लिए rsync से डेटा निकालना परियोजना का एकमात्र चुनौतीपूर्ण हिस्सा था।

बैकअप प्रगति की गणना करने के 3 संभावित तरीके थे:

1, हस्तांतरण में लगने वाले अनुमानित समय को निर्धारित करने के लिए https://wintelguy.com/transfertimecalc.pl जैसे सूत्रों का उपयोग करना

स्थानांतरण समय (d:h:m:s): 0:02:44:00

तुलना के लिए: विभिन्न नेटवर्क लिंक पर 123 जीबी फ़ाइल स्थानांतरित करने का अनुमानित समय (डी: एच: एम: एस): टी 1/डीएस 1 लाइन (1.544 एमबीपीएस) - 7:09:01:46 ईथरनेट (10 एमबीपीएस) - 1:03: 20:00 फास्ट ईथरनेट (100 एमबीपीएस) - 0:02:44:00 गीगाबिट ईथरनेट (1000 एमबीपीएस) - 0:00:16:24 10 गीगाबिट ईथरनेट (10 जीबीपीएस) - 0:00:01:38

यदि rsync समाप्त हो जाता है तो यह गणना को रोकने के लिए स्क्रिप्ट को संकेत देता है। यह विधि केवल अनुमानित है और विश्वसनीय नहीं है, लिंक की गति भी ठीक नहीं है, यह धीमा हो सकता है, फिर से गति कर सकता है। यह सिर्फ एक सैद्धांतिक गणना है।

2, यह निर्धारित करने के लिए कि हमने पहले से कितना डेटा सिंक किया है, निर्देशिका पर आकार की जाँच करना। सैकड़ों जीबी छोटी फाइलों के साथ बहुत धीमी गति से हो सकता है (हालांकि लिनक्स में डु-एस कुछ कैशिंग करता है यदि आप इसे फिर से चलाते हैं)

होस्ट ए -> सर्वर डेटा का बैकअप लिया जाना है डेटा डीआईआर: 235GB

होस्ट बी -> ऑरेंज बॉक्स क्लाइंट डेटा अभी हमारे पास है डेटा डीआईआर: 112GB

डेल्टा 123 जीबी है।

3, अगर फाइल सिस्टम हमारे मामले में समर्पित है /dev/mapper/backup है तो हम यह निर्धारित करने के लिए समग्र फाइल सिस्टम उपयोग संकेतक का लाभ उठा सकते हैं कि हमारा बैकअप कैसे प्रगति कर रहा है और यह वास्तव में बहुत तेज़ है। इस मामले में हमें कहीं भी rsync स्टडआउट को पाइप करने की आवश्यकता नहीं है, बस एक सूखा rsync चलाएं, इसके पूरा होने तक प्रतीक्षा करें, बाइट्स में डेल्टा की गणना करें और इसे खाली स्थान के साथ क्रॉसचेक करें जो हमारे पास बैकअप ड्राइव और वॉयला पर है। अब एक अच्छा दंड आलेख बनाएं। यह वह तरीका था जिसे मैंने चुना था और यहाँ इसके लिए मेरी स्क्रिप्ट है:

#!/बिन/बैश

# एनएलडी द्वारा ऑरेंजबॉक्स के लिए बैकअप प्रगति कैलकुलेटर # संस्करण: 0.2 (2018/03/05) # # इसे क्रॉन से अनपेक्षित उपयोगकर्ता के रूप में चलाएं # * * * * * /home/orange/backup_progress.sh &> /dev/null # # यह स्क्रिप्ट केवल एलसीडी पर डेटा प्रदर्शित करने के लिए जिम्मेदार है, यह मुख्य कार्यक्रम के साथ अप्रत्यक्ष रूप से स्थिति और लॉक फाइलों के माध्यम से # संचार करती है। BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # बैकअप की शुरुआत में डिस्क का उपयोग TFILE="$HOME/trans.size" # समग्र पूर्व-परिकलित स्थानांतरण आकार BFILE="$HOME/ बैकअप.lck" # प्रारंभ की गई स्थिति को निर्धारित करता है FFILE="$HOME/backup.fin" # समाप्त स्थिति निर्धारित करता है LFILE1="$HOME/lcd1.bar" # LCD प्रगति संकेतक डेटा LFILE2="$HOME/lcd2.bar" # LCD प्रगति संकेतक डेटा SHUTDOWN="1" # यदि 1 यह एक और स्क्रिप्ट आरंभ करेगा जो बैकअप के अंत में बॉक्स को बंद कर देता है BACKUP_CURRENT="0" # आरंभ किया जाना है लेकिन गणना की जाएगी # बाइट्स में ड्राइव का आकार (द्वितीयक) चेक) LCD="sudo /bin/lcd" फंक्शन is_mount() {grep -q "$1" /proc/mounts status=$? } फंक्शन रेड () {सुडो/बिन/एलसीडीकलर रेड} फंक्शन ग्रीन () {सुडो/बिन/एलसीडीकलर ग्रीन} फंक्शन ब्लू () {सुडो/बिन/एलसीडीकलर ब्लू} # क्लियर स्टेट (bootup_display.sh द्वारा बूट पर सेट)। कोई बैकअप नहीं चल रहा है, #स्थिति LCD में गड़बड़ी न करें। चल रहे बैकअप के मामले में केवल प्रगति प्रदर्शित करें => कोई प्रारंभ फ़ाइल नहीं और कोई फिन फ़ाइल नहीं = छोड़ दें अगर [! -f $BFILE] && [! -एफ $ एफएफआईएलई]; फिर 1 फाई से बाहर निकलें # यदि बैकअप समाप्त हो गया है तो यह स्क्रिप्ट उसे प्रदर्शित करेगी और ताले को हटा देगी # अगली दीक्षा तक फिर से चलने में सक्षम नहीं होने के लिए। अगर [-एफ $ एफएफआईएलई]; फिर हरा $LCD "बैकअप" "** पूर्ण **" इको "बैकअप पूर्ण" rm -rf $BFILE $TFILE $FFILE $LFILE1 $LFILE2 $VFILE # बैकअप समाप्त हो गया अगर [$SHUTDOWN == "1"]; फिर गूंज "निष्पादित शटडाउन स्क्रिप्ट …" /home/orange/shutdown.sh & fi बाहर निकलें 0 fi # इस बिंदु से स्क्रिप्ट केवल तभी निष्पादित होती है जब कोई चालू बैकअप होता है # इसलिए सभी त्रुटियों को एलसीडी पर मुद्रित किया जाएगा और स्क्रिप्ट का कारण बन जाएगा # निरस्त करने के लिए हालांकि यह backup.lck फ़ाइल को नहीं हटाएगा, इसलिए यहां # बार-बार जाएगा और शर्तों का मूल्यांकन करेगा। is_mount $BACKUP_DRIVE अगर [$status -ne 0]; फिर लाल $LCD "ERR: बैकअप ड्राइव" "आरोहित नहीं है!" इको "बैकअप ड्राइव माउंटेड नहीं है" 1 फाई से बाहर निकलें अगर [! -एस $TFILE]; फिर लाल $LCD "ERR: transfile" "खाली है" गूंज "परिवहन आकार गणना फ़ाइल खाली है।" 1 से बाहर निकलें BACKUP_OVERALL=$(हेड -1 $TFILE |tr -d '\n') अगर [-z $BACKUP_OVERALL]; फिर लाल $LCD "ERR: साइज रीडबैक" "सर्वर से अमान्य" गूंज "बैकअप समग्र आकार रीडबैक अमान्य है 1" बाहर निकलें 1 फाई अगर!

हालांकि यहां कोड सरल है कुछ विवरण है कि यह क्या करता है:

1, यदि BFILE या FFILE मौजूद नहीं है (जो एक स्पष्ट स्टार्टअप के बाद की स्थिति है) जो इंगित करता है कि कोई बैकअप प्रक्रिया नहीं है, इसलिए कुछ भी न करें बस छोड़ दें। इस तरह आप होस्टनाम, आईपी, अपटाइम इत्यादि जैसे बूटअप के संबंध में जो भी अच्छी जानकारी चाहते हैं उसे ग्राफ कर सकते हैं और इसे गड़बड़ नहीं किया जाएगा।

2, आइए is_mount $BACKUP_DRIVE अनुभाग पर जाएं। बस एक अनुस्मारक हमारे यहां पहुंचने का एकमात्र तरीका यह है कि एक बैकअप शुरू किया गया था ताकि BFILE मौजूद हो। अब कोड केवल विभिन्न त्रुटि जांच करता है जैसे कि बैकअप ड्राइव माउंट किया गया है?, क्या हम जिस ड्राइव का बैकअप लेने जा रहे हैं उसका समग्र आकार ड्राइव से अधिक है? या अन्य त्रुटियां। याद रखें कि यह केवल एक प्रदर्शन कार्यक्रम है, भले ही आकार बैकअप से अधिक हो, यह कुछ भी रद्द नहीं करेगा।

3, ठीक है सभी त्रुटि जांच प्रतिशत ग्राफ की गणना करने के लिए समय साफ़ कर दिया। सबसे पहले स्क्रिप्ट बैकअप फाइल सिस्टम पर बाइट्स में उपयोग किए गए स्थान का "स्नैपशॉट" लेती है और इसे VFILE में स्टोर करती है। इसका उद्देश्य क्या है: एक बैश स्क्रिप्ट स्टेटलेस है, यह निष्पादन के बीच डेटा खो देता है, इसलिए यदि आप पिछले निष्पादन से कुछ डेटा "याद रखना" चाहते हैं तो आपको इसे कहीं स्टोर करने की आवश्यकता है। हमारे मामले में यह सिर्फ एक साधारण टेक्स्ट फाइल है। इसे आसान बनाने के लिए मान लें कि हमारा START_POS 1GB है (डेटा हमारे पास है), जो हम बैकअप लेना चाहते हैं वह +2GB है और कुल ड्राइव क्षमता 10GB है।

4, अगली बार जब स्क्रिप्ट चलती है तो VFILE मौजूद होता है और इसे वापस पढ़ा जाएगा (इसलिए हम जानते हैं कि ड्राइव खाली नहीं होने की स्थिति में प्रारंभ स्थिति क्या थी) BACKUP_CURRENT की गणना करने के लिए जो अनिवार्य रूप से अभी उपयोग किए गए स्थान का एक डेल्टा है। बैकअप ड्राइव पर माइनस स्टार्ट पोजीशन जिसे हमने पिछले राउंड में VFILE में सेव किया है (फिर से यह वह डेटा है जो बैकअप शुरू होने पर हमारे पास ड्राइव पर था)। स्क्रिप्ट आंतरिक रूप से बाइट्स के साथ काम करती है लेकिन आधे घंटे के बाद इसे सरल बनाने के लिए हमने 500MB डेटा का बैकअप लिया, तो सूत्र होगा BACKUP_CURRENT=1.5GB - 1GB (प्रारंभिक स्थिति) => जो हमें वास्तविक डेटा 500 एमबी वापस देता है, अर्थात हमने अब तक क्या बैकअप लिया है। आप देख सकते हैं कि बैकअप की शुरुआत में मूल डेटा क्या था, इस पर नज़र रखे बिना यह आकार की गणना विफल हो जाएगी क्योंकि यह देखेगा कि अभी इस्तेमाल किया गया स्थान 1.5GB है, यह जाने बिना कि डिस्क पर 1 गिग डेटा था पिछले बैकअप से आ रहा है, इसलिए यह मान लिया जाएगा कि सर्वर ने हमें 500MB के बजाय 1.5GB डेटा भेजा है।

5, BACKUP_OVERALL में पढ़ा जाएगा, इस डेटा की गणना सर्वर द्वारा की गई थी जब उसने प्रारंभिक शुष्क rsync किया था (इसलिए यह एक बाहरी डेटा स्रोत है जिसमें बाइट्स की मात्रा होती है जिसे सर्वर-> ऑरेंजबॉक्स से बैकअप किया जाएगा)। इस समय डिस्क पर समग्र खाली स्थान के विरुद्ध इस मान की जाँच की जाएगी और यदि यह इससे अधिक हो जाता है तो एलसीडी पर एक त्रुटि संदेश प्रदर्शित होगा और स्क्रिप्ट निष्पादन बंद कर देती है। फिर से याद रखें कि यह सभी स्क्रिप्ट केवल प्रदर्शित करती है, यह बैकअप प्रक्रिया में हस्तक्षेप नहीं करती है। यदि आप डिस्क पर फ़ाइलें साफ़ करते हैं या फ़ाइलों की मात्रा दूरस्थ रूप से बदलती है और इसलिए BACKUP_OVERALL एक बिंदु पर बदल जाता है तो यह आगे बढ़ेगा।

6, अंत में हम दूसरे स्तर की जाँच के साथ कर रहे हैं यह कुछ प्रदर्शित करने का समय है। स्क्रिप्ट दोनों एक साधारण सी ऐप का उपयोग करके कंसोल और एलसीडी पर डेटा प्रदर्शित करती है। पृष्ठभूमि को BLUE पर स्विच किया गया है जो दर्शाता है कि बैकअप अंत में शुरू हुआ और निम्न सूत्र PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL) द्वारा गणना की गई प्रगति)। यह एक बुनियादी प्रतिशत गणना है जिसे हम वर्तमान राशि लेते हैं, हमारे उदाहरण में 0.5GB*100/2GB = 25%।

7, संख्याओं को बाइट से मेगा/गीगा बाइट्स में भी परिवर्तित किया जाता है और स्क्रीन 1GB से कम होने पर स्वचालित रूप से MB में प्रदर्शित होती है।

8, हमारे मामले में इसे मैप करने के लिए एक चीज बची है जो 20 कॉलम एलसीडी पर 25% है। हमारे उदाहरण में यह 25 * 20/100 = 5 होगा। वर्तमान में एलसीडी प्रोग्राम के साथ रिफ्रेश लागू किया गया है कि हर बार जब आप प्रोग्राम को कॉल करेंगे तो यह पूरी स्क्रीन को फिर से तैयार करेगा। तो इस मामले में यह स्क्रीन पर 5 हैशमार्क खींचने के लिए 5 बार लूप के लिए चलाएगा # यह प्रत्येक दौर में बदसूरत झिलमिलाहट के रूप में दिखाई देगा, इसलिए इसके बजाय मैं एलएफआईएलई 1 और 2 को परिकलित प्रगति बार डेटा लिख रहा हूं, जो इस मामले में बाद में 5 राउंड में ##### होगा और इसे वापस पढ़ा जाएगा और एलसीडी पर प्रदर्शित किया जाएगा। एसडीकार्ड को अतिरिक्त लेखन कार्यों से बचाने के लिए आप रैमडिस्क पर एलएफआईएलई 1 और 2 भी डाल सकते हैं, इससे मेरे लिए कोई समस्या नहीं हुई, स्क्रिप्ट क्रॉन से हर मिनट में एक बार चलती है।

9, जब बैकअप सर्वर से दूसरी स्क्रिप्ट समाप्त करता है जो rsync चलाता है तो FFILE (फिनिश फाइल) को स्पर्श करेगा। अगले लूप में backup_progress.sh तब प्रदर्शित करेगा कि बैकअप पूरा हो गया है और ऑरेंजबॉक्स को बंद करने के लिए वैकल्पिक रूप से दूसरी स्क्रिप्ट को कॉल करता है। यह इस बिंदु पर अपनी लॉक फ़ाइलों को हटा देता है जिससे आगे निष्पादन असंभव हो जाता है, भले ही आप अगले मिनट शटडाउन सक्षम न करें जब यह स्क्रिप्ट चलती है तो यह तुरंत निकल जाएगी क्योंकि BFILE वहां नहीं है और FFILE वहां नहीं है। इसलिए यह बैकअप पूर्ण संदेश को अनिश्चित काल तक प्रदर्शित करेगा जब तक कि बैकअप फिर से शुरू न हो जाए।

रिमोट बैकअप स्क्रिप्ट (orange-remote.sh):

आपको बैकअप के लिए एक एसएसएच कुंजी और ड्राइव के लिए लुक्स एन्क्रिप्शन के लिए एक कुंजी उत्पन्न करने की आवश्यकता होगी। जब आप पहली बार रिमोट बैकअप को मैन्युअल रूप से चलाते हैं तो यह ऑरेंज बॉक्स होस्ट फ़िंगरप्रिंट को होस्ट फ़ाइल में सहेज लेगा (इस बिंदु से यह क्रोन द्वारा स्वचालित रूप से चल सकता है)।

DISK="/dev/disk/by-id/…"

अपनी हार्ड डिस्क पहचानकर्ता का पता लगाने के लिए uuid, blkid चलाएं या बस संबंधित /dev/disk/ निर्देशिका देखें।

यदि आप सब कुछ का बैकअप नहीं लेना चाहते हैं तो एक निर्देशिका शामिल बहिष्कृत की जा सकती है। यह काफी कष्टप्रद प्रक्रिया है क्योंकि rsync के लिए यदि आप किसी एकल उप-निर्देशिका को उस संरचना में गहराई से बाहर करना चाहते हैं जो आपको करना है:

+ /ए

+ /a/b + /a/b/c + /a/b/c/d - /a/b/c/d/e + /dir2

चूंकि यह स्क्रिप्ट ऑरेंजबॉक्स पर दूरस्थ रूप से कमांड निष्पादित कर रही है, इसलिए उस तरफ से रिटर्न वेरिएबल्स की कोई निगरानी नहीं है, इसलिए मैं कुछ चतुर चाल का उपयोग करता हूं जैसे कि यह रिमोट ड्राइव को /tmp/contmsg.txt पर खोलने का संदेश आउटपुट करेगा, फिर पार्स करें यह देखने के लिए कि क्या यह सफल था, यदि नहीं, तो यह rsync बाइनरी को गैर-निष्पादन योग्य में बदल देता है, इसलिए rsync SDcard को भरने वाले OrangePIs रूटफ़ पर डेटा अपलोड करने का प्रयास नहीं करेगा। इसे असंभव बनाने के लिए chattr +i /mnt/backup पर अपरिवर्तनीय बिट सेट करने का भी एक अच्छा अभ्यास है।

आकार की पूर्व-गणना स्थानीय रूप से सर्वर पर होती है इसलिए इस फ़ाइल को अगले चरण में ऑरेंजबॉक्स में भेजा जाना है।

मुख्य बैकअप को ((i=0;i<100;i++)) के लिए लूप के रूप में आरंभ किया गया है; ऐसा इसलिए करें क्योंकि निम्न गुणवत्ता वाले डीएसएल/केबल इंटरनेट कनेक्शन के मामले में rsync अक्सर टूट सकता है, समय समाप्त हो सकता है। यदि यह सफलतापूर्वक पूरा हो जाता है तो लूप अधिक पुनरावृत्तियों की कोशिश किए बिना टूट जाएगा। यह अच्छे ऑपरेटिंग सिस्टम के साथ त्रुटिपूर्ण रूप से काम करता है, हालांकि अगर किसी कारण से रिमोट बॉक्स विंडोज़ होगा और NTUSER. DAT पर नियमित रूप से एक्सेस अस्वीकृत हो जाएगा तो rsync एक त्रुटि कोड लौटाएगा और यह लूप 100 बार निष्पादित होगा और फिर भी विफल हो जाएगा।

चरण 5: क्लोजर और टूडू लिस्ट

क्लोजर और टूडू लिस्ट
क्लोजर और टूडू लिस्ट
क्लोजर और टूडू लिस्ट
क्लोजर और टूडू लिस्ट

मेरा निर्देश योग्य एक बार फिर प्रदर्शित करता है कि आप अपने 10 डॉलर के कंप्यूटर से कुछ बेहतर, अधिक अनुकूलन योग्य उपकरण कैसे बना सकते हैं, जो बफ़ेलो से बाहर निकलता है, इसके मालिकाना हक वाले लॉक डाउन एनएएस डिवाइस, अजीब आंतरिक विभाजन, सेगफॉल्टिंग टूल के साथ व्यस्त बॉक्स अपंग लिनक्स, प्रबंधित उनके विंडोज़ सॉफ़्टवेयर, बंद फ़र्मवेयर, खराब दस्तावेज़ीकरण और समर्थन से और आप कितना भी पैसा खर्च कर लें, आपको कभी भी प्रगति संकेतक नहीं मिलेगा, जो आपके बैकअप को दर्शाता है कि ऑरेंजबॉक्स कितना अच्छा दिखता है (मैं इसके साथ नारंगी CAT5 केबल का उपयोग भी कर रहा हूं: डी))

एक ही <100$ मूल्य रेखा को बनाए रखते हुए मिनी कंप्यूटर अधिक से अधिक शक्तिशाली होने के साथ हम उन्हें अधिक से अधिक कार्यों के लिए उपयोग कर सकते हैं। चूंकि Gbe ईथरनेट पोर्ट इन दिनों 1-2 वर्षों में काफी सामान्य हैं, इन बोर्डों पर मेमोरी नाटकीय रूप से बढ़ जाएगी और इनका उपयोग ZFS आधारित बैकअप सिस्टम के लिए भी किया जा सकता है।

सी प्रोग्राम द्वारा -फाइन ग्रेन प्रोग्रेस इंडिकेटर (मेरे अन्य प्रोजेक्ट में से एक WasserStation देखें)। अभी केवल # हैशमार्क # वर्ण LCDPuts (एलसीडी, लाइन 1) के साथ वर्ण मोड में उपयोग किए जाते हैं, इसे तब भी बेहतर बनाया जा सकता है जब 1 कॉलम को 5 भागों में विभाजित करने के लिए वर्ण LCD का उपयोग किया जाता है और मुख्य C प्रोग्राम केवल 25 की तरह एक पूर्णांक ले सकता है और निकाल सकता है ग्राफिकल एलसीडी का उपयोग करके प्रगति पट्टी को ठीक से या और बेहतर बनाया गया है

-नए और नए बैकअप बनाने और उन्हें अलग-अलग स्थानों पर ले जाने के लिए एक हटाने योग्य एचडीडी होने की संभावना (यदि बॉक्स एक खाली ड्राइव का पता लगाता है तो इसे प्राप्त होने के बाद इसे एन्क्रिप्शन कुंजी के साथ स्वत: प्रारूपित करना चाहिए)।

-यदि आप मेकरबॉट के साथ अपना खुद का केस प्रिंट करना चाहते हैं तो ऑरेंजएनएएस आपके लिए दिलचस्प हो सकता है:

सिफारिश की: