جدول المحتويات:
- الخطوة 1: أجزاء الجهاز
- الخطوة الثانية: تصميم الأجهزة
- الخطوة الثالثة: نظام التشغيل
- الخطوة الرابعة: تصميم البرمجيات
- الخطوة 5: الإغلاق وقائمة المهام
فيديو: OrangeBOX: جهاز تخزين النسخ الاحتياطي الآمن المستند إلى OrangePI: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
إن OrangeBOX عبارة عن صندوق تخزين احتياطي عن بُعد متعدد الإمكانات لأي خوادم.
يمكن أن يكون خادمك مصابًا أو تالفًا أو محو بياناتك ولا تزال جميع بياناتك آمنة على OrangeBOX ومن لا يرغب في مهمة مستحيلة مثل جهاز النسخ الاحتياطي الذي قمت للتو بتوصيله وشاهد مؤشر التقدم دون القيام بأي شيء آخر (فقط أتمنى السحر لن يخرج الدخان في النهاية:)).
إن OrangeBOX هو مشروعي الأول وهو في الغالب عبارة عن برنامج ، وليس اختراقًا للأجهزة. إنه أساسًا NAS مصمم خصيصًا مع شاشة LCD مرفقة.
الخطوة 1: أجزاء الجهاز
إن Orange PI zero هو كمبيوتر مفتوح المصدر أحادي اللوحة. يمكنه تشغيل Android 4.4 و Ubuntu و Debian. إنه يستخدم AllWinner H2 SoC ، ويحتوي على 256 ميجابايت / 512 ميجابايت DDR3 SDRAM (إصدار 256 ميجابايت هو الإصدار القياسي. إن Orange Pi Zero مخصصة لأي شخص يريد البدء في الإنشاء باستخدام التكنولوجيا - وليس فقط استهلاكها. إنها أداة بسيطة وممتعة ومفيدة يمكنك يمكن استخدامها لبدء السيطرة على العالم من حولك (https://www.orangepi.org/orangepizero/).
- صندوق معدني / بلاستيكي / خشبي (لقد استخدمت صندوق ياماها الخارجي cd-rw القديم)
- Orange PI Zero أو أفضل (قد يتغير دبوس GPIO إذا كنت تستخدم طرازًا آخر)
- 2x20 RGB شاشات الكريستال السائل
- أي محرك أقراص USB SFF 3.5 / LFF 2.55
- ساتا -> محول USB. ضع في اعتبارك أنه على الرغم من أن OrangePI لا تفرض حدًا أعلى على سعة محرك الأقراص القصوى ، إلا أن الكثير من جسور USB إلى SATA تفعل (2 تيرابايت كحد أقصى). يحتوي PI Zero I البرتقالي الذي يستخدمه فقط على منفذ USB 2.0 واحد مع معدل نقل فعال يبلغ 28 ميجابايت / ثانية كحد أقصى. لقد اخترت USB3.0 (مُعد للترقيات المستقبلية) -> جسر SATA (لن يتم ذكر العلامة التجارية) وهو يحد من الحد الأقصى لذلك من الأفضل اختيار جسر ثبت أنه يدعم محركات أقراص أكبر مثل الجسور القائمة على رقاقة JMicron JMS567. قم بالبحث الخاص بك قبل شراء واحدة. يمكنني التعايش مع السرعة والحد الأقصى لمحرك الأقراص الثابتة باستخدام محرك أقراص sata سعة 2 تيرابايت في هذا المشروع (إذا قمت بوضع محركات أقراص أكبر ، فسيتم التعرف عليه ، لكن نظام التشغيل سيشاهد أول 2 تيرابايت فقط منه ، لذا فإن بقية السعة ستكون ضائع).
- محول أمبير 12 فولت 2.5 أمبير أو أعلى. احسب حوالي 500 مللي أمبير من الاستخدام العادي لمحرك OPI Zero و 1.5 أمبير لمحرك الأقراص LFF SATA القياسي. تضخم الحجم لا يؤلم أبدا. في الإعداد الخاص بي ، تم تفجير Yamaha psu (ما كان يمكن أن يوفر أكثر من تيار كافٍ على كلا القضبان 12 + 5V) للأسف: (بسبب فرز المفتاح الرئيسي إلى GND لمدة ثانية ، لذلك اضطررت إلى الغراء في محول عادي ، في على الأقل جعل الصندوق أخف وزنًا بجرامين.
- محول باك DC-DC 12V-> 5V. لقد استخدمت نفس المصغر القابل للتعديل كما هو الحال مع IronForge ، وهو يعمل بشكل مثالي.
اختياري
إذا كنت على استعداد لإنفاق + 10 دولارات ، فيمكنك الحصول على Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) وهو عامل شكل مماثل ويحصل على Gbe و SATA3. لهذا الغرض ، يمكن استخدام مكتبة الأسلاك Libra PI: https://github.com/OrangePiLibra/WiringPi ولكن نظرًا لأن GPIO pinout مختلف ، فهو خارج نطاق هذه الكتابة.
يمكنك أيضًا القيام بهذا التصميم باستخدام Orange PI Plus2 الجديد الذي يحتوي على موصل SATA ويمكنك تخطي استخدام محولات sata-> USB كلها مع قيودها. إذا كنت تخطط لاستخدام FreeBSD أو BSDs أخرى ، فقد لا تكون سلسلة Orange PI هي الخيار الأفضل نظرًا لأن دعمها للأجهزة محدود (على سبيل المثال ، تحتاج إلى استخدام عصا USB للتمهيد). بالنسبة إلى BSDs ، من الأفضل استخدام Raspberry PI. كل من كود C الخاص بشاشات الكريستال السائل وجميع البرامج النصية للقذيفة قابلة للنقل إلى أي أنظمة أخرى من أنظمة UNIX.
الخطوة الثانية: تصميم الأجهزة
كان صندوق Yamaha كافيًا لتخزين كل هذا ، ولن يحتوي على مساحة كافية لجهاز كمبيوتر Orange PI أو لوحة عامل شكل Raspi العادية.
تم إحضار Ethernet مع موسع إلى الجزء الخلفي من الصندوق. تذكر أن Orange PI zero لا تحتوي إلا على واجهة إيثرنت 100 ميجابت / ثانية إذا كنت تريد أسرع ، فستحتاج إلى استخدام لوحة أخرى مثل Asus Tinkerboard / RPI3B + / طرز Orange PI الأخرى.
رقم التعريف الشخصي الخاطئ هو الخطأ الوحيد الذي يمكن أن ترتكبه في هذا المشروع ، وبالتالي فإنه يستحق تطبيق بعض القواعد من مبادئ الإبهام:
1 ، حاول دائمًا استخدام نفس الكبل الملون من النهاية إلى النهاية. أنا بنفسي أرتكب نفس "الخطأ" في بعض المشاريع التي لا أفعل فيها ، وذلك ببساطة لأنني لا أمتلك كبلات طويلة كافية للذكور / الذكور / الإناث / الإناث / الإناث وأقوم بالتصحيح 2 معًا لمجرد متابعة الدائرة. إذا لم تقم بتوثيق عملك بشكل صحيح ، فقد يؤدي ذلك إلى حدوث صداع بعد سنوات حيث يتعين عليك إجراء إصلاح ، قم بالترقية.
2 ، قم بتطبيق بعض الغراء الساخن على الموصلات. في حالة استخدام كبلات mm / mf / ff ذات نمط عدة اردوينو والتي ليست أعلى جودة للخط ، فمن الشائع جدًا (خاصةً إذا كنت تتحرك / تنقل الجهاز) أن الموصلات تخرج. إذا كنت تعلم أنه سيكون جهاز استخدام طويل المدى (ربما يستخدم حتى ينكسر ؟!) ، فمن الأفضل تطبيق القليل من hotglue على جانب OrangePI و LCD من الموصلات للحفاظ عليها معًا. يمكن صهر / خدش هذا بسهولة لاحقًا إذا لزم الأمر.
3 ، أسلاك OrangePI الصفرية والخبر السيئ هو أن دبوس Orange PI ليس هو نفسه Raspberry PI 0/1/2/3 وهناك فرق حتى بين طرز Orange PI الأخرى. أفضل طريقة للذهاب هي الحصول على مكتبة الأسلاك (إصدار Orange PI Zero). قد تكون الصورة مربكة بعض الشيء ولكن هذه كانت أفضل ما يمكن أن أجده. أحدهما مرآة بزاوية 180 درجة للآخر. على الرغم من أن صورة CLI غير الرسومية قد يكون من الصعب فهمها ، إلا أنها الأكثر وضوحًا.
يمكنك دائمًا التمييز بين طرفي المقابس من خلال اعتبار أحد الطرفين على أنه الطرف الإيجابي مع (+ 3.3 / + 5 فولت) والآخر مثل الطرف السلبي (واحد GND) -> هذا هو نهاية الموصل الذي يواجه منفذ ETHERNET.
من جدول Wiring PI Zero ، ستحتاج فقط إلى عمود واحد ينسى wPI الآخرين كما لو أنهم لن يكونوا هناك.
على سبيل المثال ، لتوصيل LCD_E 15 (أي wPI 15!) و LCD_RS 16 (أي wPI 16!) قم بحساب المسامير من الطرف الإيجابي للموصل (من السهل القيام بذلك باستخدام قلم أو مفك براغي صغير). سيكون ذلك فعليًا ينخفض 4 دبابيس و 5 دبابيس.
4 ، المجموعة. إذا كانت هناك إمكانية لوضع المسامير المستخدمة بجانب بعضها البعض (تجميعها في مجموعات) ، فاختر ذلك دائمًا ، فهذا يجعلها ممسكة ببعضها البعض حتى بدون الغراء الساخن وأيضًا في المشاريع الأخرى عندما يكون لديك موصلات موليكس 2x 4x 6x يمكنك ذلك فقط استفد من وجود الدبابيس بجانب بعضها البعض. هنا أفضل ما يمكنك فعله هو مجموعة من 2-3s (مثالية عند استخدام كبلات التوصيل التي تم إنقاذها من أجهزة الكمبيوتر القديمة).
الدبابيس المستخدمة لاتصال شاشة OrangePI LCD:
// استخدام أرقام PIN WIRINGPI
#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Register select pin #define LCD_D4 5 // Data pin 4 #define LCD_D5 6 // Data pin 5 #define LCD_D6 10 // Data pin 6 #define LCD_D7 11 // دبوس البيانات 7
تستخدم الدبابيس للتحكم في الإضاءة الخلفية RGB
$ G اكتب 1 0
$ G اكتب 4 1 $ G اكتب 7 1
دبابيس Orange PI zero wPI 1 ، 4 ، 7. السحر الوحيد الذي يمكن أن تفعله شاشة LCD هذه مقارنةً بإصلاح شاشة LCD ذات الإضاءة الخلفية الزرقاء القياسية أو إصلاح شاشة LCD ذات الإضاءة الخلفية الخضراء حيث يكون لديك كاثود واحد يجب سحبه إلى GND الذي يحتوي على 3 لـ 3 الألوان. الأحمر والأخضر والأزرق. من خلال تغيير التركيبة التي يتم تشغيلها ، يمكنك مزج ألوان مختلفة من هذه الألوان الأساسية ولكن النهايات العالية فقط لا توجد ظلال لأنك لا تستطيع التحكم في سطوع اللون (سواء كان في وضع التشغيل أو الإيقاف).
خلط اللون الإضافي: إضافة اللون الأحمر إلى الأخضر ينتج الأصفر ؛ إضافة الأحمر إلى الأزرق الغلة الأرجواني ؛ إضافة غلة خضراء إلى زرقاء سماوي ؛ إضافة الألوان الأساسية الثلاثة معًا ينتج عنها اللون الأبيض.
الخطوة الثالثة: نظام التشغيل
يقوم OrangeBOX بالتمهيد ونواة Armbian linux (استنادًا إلى Debian Stretch) 4.14.18-sunxi kernel مع بيئة محمية بجدار حماية آمن ، ويتصل بشبكة VPN وينتظر أوامر النسخ الاحتياطي عن بُعد من الخادم.
مبادئ التصميم:
- تشفير القرص الكامل luks (لا يحتوي الجهاز نفسه على مفتاح لفتح محرك النسخ الاحتياطي. سيتم نسخه مؤقتًا من الخادم البعيد إلى ram / dev / shm ، وفتح محرك الأقراص ومسح المفتاح. بعد انتهاء النسخ الاحتياطي تم إغلاق محرك الأقراص ويتم إيقاف تشغيل OrangeBox تلقائيًا خلال دقيقة واحدة.)
- يتم إرسال جميع الأوامر والمفاتيح من الخادم البعيد (الجهاز نفسه يحتوي فقط على شهادة vpn) ولا يمتلك أي وصول إلى الخادم البعيد حتى أن ssh من هذا الجهاز محجوب بجدار ناري
- أنظمة الملفات المحلية غير مشفرة لتتمكن من التمهيد ولكنها لا تحتوي على أي شيء مفيد ، وبما أن ارتباط VPN الصاعد مقيد للغاية على الطرف الآخر حتى مع فقدان الجهاز بالكامل ، لا يستطيع المهاجم فعل أي شيء
قم بتنزيل Armbian Stretch من
احصل على النظام وتشغيله:
apt-get update && apt-get Upgrade
apt-get install 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: rebawn: / sbin / getty 38400 tty6
أعد تشغيل الصندوق الخاص بك وقم بإزالة systemd للحصول على نظام حقيقي مفتوح المصدر خالٍ من bloatware.
apt-get remove --purge - auto-remove systemd
قم بتثبيت بعض الحزم
apt-get install cryptsetup vim htop rsync screen gcc make git
قم بتثبيت مكتبة wiringpi
cd / usr / src
بوابة استنساخ https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod + x./build./build
إنشاء مستخدم برتقالي لشاشة LCD
groupadd -g 1000 برتقال
useradd -m -d / home / orange -s / bin / bash -u 1000 -g برتقالي
الرقيب الذي لا يراقبك
apt-get install watchdog
النظر في / etc / default / watchdog # Start watchdog في وقت التمهيد؟ 0 أو 1 run_watchdog = 1 # بدء wd_keepalive بعد إيقاف المراقبة؟ 0 أو 1 run_wd_keepalive = 1 # تحميل الوحدة النمطية قبل بدء watchdog watchdog_module = "none" # حدد خيارات المراقبة الإضافية هنا (انظر صفحة manpage).
انظر إلى /etc/watchdog.conf
# على الأقل تمكين هذه
max-load-1 = 24 max-load-5 = 18 أقصى حمل -15 = 12
/etc/init.d/watchdog بدء
يجب أن يكون هناك خيط kernel واحد على الأقل وعملية واحدة:
جذر 42 0.0 0.0 0 0؟ أنا <10:50 0:00 [حراسة] جذر 14613 0.0 0.2 1432 1080؟ SLs 13:31 0:00 / usr / sbin / watchdog
اختبارات:
تأكد من إيقاف كل شيء وإجراء مزامنة && مزامنة && مزامنة لكتابة بقية البيانات على القرص. ثم كمسألة جذرية:
صدى 1> / ديف / حراسة
بعد بضع ثوان ، يجب إعادة تشغيل الجهاز.
كما ينص الدليل:
س هل جدول العملية ممتلئ؟
س هل هناك ذاكرة خالية كافية؟ س هل هناك ذاكرة كافية للتخصيص؟ س هل يمكن الوصول إلى بعض الملفات؟ س هل تغيرت بعض الملفات خلال فترة زمنية معينة؟ س هل متوسط عبء العمل مرتفع للغاية؟ س هل حدث تجاوز جدول الملفات؟ س هل العملية لا تزال جارية؟ يتم تحديد العملية بواسطة ملف pid. س هل بعض عناوين IP تجيب على ping؟ س هل واجهات الشبكة استقبال حركة المرور؟ س هل درجة الحرارة مرتفعة للغاية؟ (بيانات درجة الحرارة غير متوفرة دائمًا.) o تنفيذ أمر يحدده المستخدم لإجراء اختبارات عشوائية. o قم بتنفيذ أمر اختبار / إصلاح واحد أو أكثر موجود في /etc/watchdog.d. يتم استدعاء هذه الأوامر مع اختبار الوسيطة أو الإصلاح. إذا فشلت أي من هذه الفحوصات ، فسوف يتسبب ذلك في إيقاف التشغيل. في حالة استمرار أي من هذه الاختبارات باستثناء الفترة الثنائية التي حددها المستخدم لأكثر من دقيقة واحدة ، فسيتم إعادة تشغيل الجهاز أيضًا.
قد تعمل هذه الوكالة الرقابية بشكل جيد على معماريات x86 العادية ولكن على اللوحات القائمة على ARM مثل Raspberry PIs و Orange PIs فقد فشلت مرات لا تحصى. يمكن للنظام الدخول في حالات تعليق حيث يتم تعليق حتى كلب المراقبة. دعنا فقط نقوم بتكوينه على أي حال ، فربما يتم تحسينه من خلال ترقية apt-get على مر السنين:(
الخطوة الرابعة: تصميم البرمجيات
تعتمد عملية النسخ الاحتياطي نفسها على rsync (أفضل أداة نسخ احتياطي تم اختراعها على الإطلاق) يتم دفع البيانات من SERVER-> OrangeBOX.
كان استخراج البيانات من rsync هو الجزء الصعب الوحيد في المشروع للحصول على شريط تقدم حول النسخة الاحتياطية المطبوعة على شاشة LCD.
كانت هناك 3 طرق ممكنة لحساب تقدم النسخ الاحتياطي:
1 ، باستخدام صيغ مثل https://wintelguy.com/transfertimecalc.pl لتحديد الوقت التقريبي الذي يمكن أن يستغرقه النقل
وقت النقل (d: h: m: s): 0: 02: 44: 00
للمقارنة: الوقت المقدر لنقل ملف بحجم 123 جيجابايت عبر روابط شبكة مختلفة (d: h: m: s): خط T1 / DS1 (1.544 ميجابت في الثانية) - 7: 09: 01: 46 Ethernet (10 ميجابت في الثانية) - 1:03: 20:00 إيثرنت سريع (100 ميجابت في الثانية) - 0: 02: 44: 00 جيجابت إيثرنت (1000 ميجابت في الثانية) - 0: 00: 16: 24 10 جيجابت إيثرنت (10 جيجابت في الثانية) - 0: 00: 01: 38
إذا انتهى rsync ، فإنه يشير إلى البرنامج النصي لإيقاف الحساب. هذه الطريقة هي مجرد طريقة تقريبية وغير موثوقة ، كما أن سرعة الارتباط ليست ثابتة ، ويمكن أن تبطئ وتسرع مرة أخرى. هذا مجرد حساب نظري.
2 ، القيام بفحص الحجم في الدليل لتحديد مقدار البيانات التي قمنا بمزامنتها بالفعل. يمكن أن يصبح بطيئًا جدًا مع مئات الجيجابايت من الملفات الصغيرة (على الرغم من أن du -s في Linux تقوم ببعض التخزين المؤقت إذا قمت بإعادة تشغيله)
المضيف أ -> بيانات الخادم المراد نسخها احتياطيًا Data dir: 235 جيجا بايت
Host B -> بيانات عميل Orange box لدينا الآن Data dir: 112GB
دلتا 123 جيجا بايت.
3 ، إذا كان نظام الملفات مخصصًا كما في حالتنا / dev / mapper / backup ، فهل يمكننا الاستفادة من مؤشر استخدام نظام الملفات العام لتحديد كيفية تقدم النسخ الاحتياطي لدينا وهذا سريع جدًا حقًا. في هذه الحالة ، لا نحتاج حتى إلى توجيه rsync stdout في أي مكان ، فقط قم بتشغيل rsync الجاف ، وانتظر حتى يكتمل ، واحسب دلتا بالبايت ، وقم بالتحقق من ذلك باستخدام المساحة الخالية التي لدينا على محرك النسخ الاحتياطي وفويلا يمكننا الآن قم بعمل رسم بياني شريطي جميل. كانت هذه هي الطريقة التي اخترتها وإليك النص الخاص بي لها:
#! / بن / باش
# حاسبة تقدم النسخ الاحتياطي لـ OrangeBOX بواسطة NLD # الإصدار: 0.2 (2018/03/05) # # تشغيله كمستخدم غير مميز من cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # هذا البرنامج النصي مسؤول فقط عن عرض البيانات على شاشة LCD ، ويتواصل # مع البرنامج الرئيسي بشكل غير مباشر من خلال ملفات الموضع والقفل. BACKUP_DRIVE = "/ dev / mapper / backup" VFILE = "$ HOME / start.pos" # استخدام القرص في بداية النسخة الاحتياطية TFILE = "$ HOME / trans.size" # إجمالي حجم النقل المحسوب مسبقًا BFILE = "$ HOME / backup.lck "# يحدد حالة البدء FFILE =" $ HOME / backup.fin "# يحدد الحالة النهائية LFILE1 =" $ HOME / lcd1.bar "# بيانات مؤشر تقدم شاشة LCD LFILE2 =" $ HOME / lcd2.bar "# تقدم شاشة LCD بيانات المؤشر SHUTDOWN = "1" # إذا 1 سيبدأ برنامج نصي آخر يغلق المربع في نهاية النسخ الاحتياطي BACKUP_CURRENT = "0" # يجب تهيئته ولكن سيتم حسابه DRIVE_SIZE = "" # حجم محرك الأقراص بالبايت (ثانوي check) LCD = الوظيفة "sudo / bin / lcd" is_mount () {grep -q "$ 1" / proc / mounts status = $؟ } function red () {sudo / bin / lcdcolor red} function green () {sudo / bin / lcdcolor green} function blue () {sudo / bin / lcdcolor blue} # Clear state (set on boot by bootup_display.sh). لا يوجد نسخ احتياطي قيد التقدم ، لا تعبث في شاشة LCD الحالة #. عرض التقدم فقط في حالة وجود نسخة احتياطية جارية => لا يوجد ملف بدء ولا يوجد ملف نهائي = إنهاء إذا [! -f $ BFILE] && [! -f $ ملف] ؛ ثم قم بإنهاء 1 fi # إذا انتهى النسخ الاحتياطي ، فسيعرض هذا البرنامج النصي ذلك ويزيل الأقفال # حتى لا يتمكن من التشغيل مرة أخرى حتى البدء التالي. إذا [-f $ FFILE] ؛ ثم الأخضر $ LCD "النسخ الاحتياطي" "** اكتمل **" echo "Backup Complete" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # انتهى تنظيف النسخ الاحتياطي إذا [$ SHUTDOWN == "1"]؛ ثم صدى "تنفيذ البرنامج النصي للإغلاق …" /home/orange/shutdown.sh & fi exit 0 fi # من هذه النقطة يتم تنفيذ البرنامج النصي فقط إذا كان هناك نسخة احتياطية مستمرة # لذلك ستتم طباعة جميع الأخطاء على شاشة LCD وتسبب البرنامج النصي # للإحباط ولكن لن يقوم بإزالة ملف backup.lck لذلك سوف يدخل هنا # مرارًا وتكرارًا ويلغي الشروط. is_mount $ BACKUP_DRIVE إذا [$ status -ne 0] ؛ ثم الأحمر LCD $ "ERR: محرك النسخ الاحتياطي" "غير مثبت!" صدى "لم يتم تثبيت محرك النسخ الاحتياطي" خروج 1 fi إذا [! -s $ TFILE] ؛ ثم أحمر LCD $ "ERR: transfile" "فارغ" echo "ملف حساب حجم النقل فارغ." خروج 1 fi BACKUP_OVERALL = $ (رأس -1 $ TFILE | tr -d '\ n') إذا [-z $ BACKUP_OVERALL] ؛ ثم الأحمر $ LCD "خطأ: إعادة الحجم" "من الخادم غير صالح" صدى "إعادة قراءة الحجم الكلي للنسخ الاحتياطي غير صالحة 1" خروج 1 fi إذا!
على الرغم من أن الكود بسيط ، إليك بعض الوصف لما يفعله:
1 ، في حالة عدم وجود ملف BFILE أو FFILE (وهي الحالة بعد بدء التشغيل الواضح) التي تشير إلى عدم وجود عملية نسخ احتياطي ، فلا تفعل أي شيء. بهذه الطريقة يمكنك رسم أي معلومات لطيفة تريدها بخصوص التمهيد مثل اسم المضيف ، IP ، الجهوزية وما إلى ذلك ولن يتم العبث بها.
2 ، دعنا ننتقل إلى قسم is_mount $ BACKUP_DRIVE. مجرد تذكير بالطريقة الوحيدة التي وصلنا بها إلى هنا هي أن النسخ الاحتياطي قد بدأ حتى يوجد ملف BFILE. الآن يقوم الرمز بإجراء فحوصات أخطاء مختلفة مثل هل تم تركيب محرك النسخ الاحتياطي ؟، هل الحجم الإجمالي لما نحن بصدد نسخه احتياطيًا يتجاوز محرك الأقراص؟ أو أخطاء أخرى. تذكر أن هذا برنامج DISPLAY فقط حتى إذا تجاوز الحجم النسخ الاحتياطية ، فلن يتم إجهاض أي شيء.
3 ، حسنًا ، تم مسح جميع عمليات التحقق من الأخطاء في الوقت المناسب لحساب الرسم البياني للنسبة المئوية. أولاً ، يأخذ البرنامج النصي "لقطة" للمساحة المستخدمة بالبايت على نظام ملفات النسخ الاحتياطي الآن ويخزنها في VFILE. ما الغرض من هذا: سكربت bash عديم الحالة ، فهو يفقد البيانات بين عمليات الإعدام ، لذلك إذا كنت تريد "تذكر" بعض البيانات من التنفيذ السابق ، فأنت بحاجة إلى تخزينها في مكان ما. في حالتنا هذا مجرد ملف نصي بسيط. لتبسيط الأمر ، لنفترض أن START_POS الخاص بنا هو 1 غيغابايت (البيانات المتوفرة لدينا) ، وما نريد نسخه احتياطيًا هو + 2 غيغابايت وسعة محرك الأقراص الإجمالية هي 10 غيغابايت.
4 ، في المرة التالية التي يتم فيها تشغيل البرنامج النصي ، يوجد VFILE وستتم إعادة قراءته (لذلك نعرف ما كان موضع البداية في حالة عدم وجود محرك الأقراص فارغًا) لحساب BACKUP_CURRENT وهو في الأساس دلتا من المساحة المستخدمة الآن على محرك النسخ الاحتياطي مطروحًا منه موضع البداية ما حفظناه في VFILE في الجولة الأخيرة (مرة أخرى ، هذه هي البيانات التي كانت لدينا على محرك الأقراص عند بدء النسخ الاحتياطي). يعمل البرنامج النصي داخليًا بالبايت ولكن لتبسيط الأمر بعد نصف ساعة ، قمنا بعمل نسخة احتياطية من بيانات 500 ميجابايت ، فستكون الصيغة BACKUP_CURRENT = 1.5 جيجابايت - 1 جيجابايت (الحالة الأولية) => مما يعيدنا تمامًا إلى البيانات الحقيقية 500 ميجابايت ، أي ما قمنا بنسخه احتياطيًا حتى الآن. يمكنك أن ترى أنه بدون تتبع البيانات الأصلية في بداية النسخ الاحتياطي ، فإن حساب الحجم هذا سيفشل لأنه سيرى أن المساحة المستخدمة الآن هي 1.5 جيجابايت دون معرفة أن بيانات 1 gig كانت موجودة على القرص طوال الوقت قادمًا من نسخة احتياطية سابقة ، لذا يفترض أن الخادم أرسل لنا بيانات 1.5 جيجابايت بدلاً من 500 ميجابايت.
5 ، سيتم قراءة BACKUP_OVERALL ، تم حساب هذه البيانات بواسطة الخادم عندما قام بإجراء rsync الجاف الأولي (لذلك هذا مصدر بيانات خارجي يحتوي على مقدار البايت الذي سيتم نسخه احتياطيًا من Server-> OrangeBOX). سيتم التحقق من هذه القيمة مقابل المساحة الخالية الإجمالية على القرص في الوقت الحالي ، وإذا تجاوزتها ، فسيتم عرض رسالة خطأ على شاشة LCD ويتوقف البرنامج النصي عن التنفيذ. تذكر مرة أخرى أن كل هذا البرنامج النصي يتم عرضه فقط ، ولا يتداخل مع عملية النسخ الاحتياطي. إذا قمت بتنظيف الملفات الموجودة على القرص أو تغير حجم الملفات عن بعد ، وبالتالي يتغير BACKUP_OVERALL في مرحلة ما ، فسيستمر.
6 ، أخيرًا انتهينا من اختبارات المستوى الثاني ، حان الوقت لعرض شيء ما. يعرض البرنامج النصي البيانات الموجودة على وحدة التحكم وعلى شاشة LCD باستخدام تطبيق C بسيط. تم تبديل الخلفية إلى BLUE مما يشير إلى أن النسخ الاحتياطي بدأ أخيرًا والتقدم المحسوب بالصيغة التالية PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). هذا حساب النسبة المئوية الأساسية نأخذ المبلغ الحالي ، في مثالنا 0.5 جيجابايت * 100/2 جيجابايت = 25٪.
7 ، يتم تحويل الأرقام أيضًا من بايت إلى ميغا / جيجا بايت ويتم عرض الشاشة تلقائيًا بالميجابايت إذا كانت أقل من 1 جيجابايت.
8 ، الشيء الوحيد المتبقي لتعيين هذا في حالتنا هو 25٪ على شاشة LCD ذات 20 عمودًا. سيكون ذلك 25 * 20/100 = 5 في مثالنا. حاليًا ، يتم تنفيذ التحديث باستخدام برنامج LCD بحيث أنه في كل مرة تتصل فيها بالبرنامج ، فإنه سيعيد رسم الشاشة بالكامل. لذلك في هذه الحالة ، سيتم تشغيل حلقة for 5 مرات لرسم 5 علامات تجزئة # على الشاشة ، سيظهر هذا على شكل وميض قبيح في كل جولة ، لذا بدلاً من ذلك ، أكتب بيانات شريط التقدم المحسوبة إلى LFILE1 و 2 ، والتي في هذه الحالة بعد ستحتوي الجولات الخمس على ##### ويتم قراءتها مرة أخرى وعرضها على شاشة LCD. يمكنك وضع LFILE1 و 2 على ramdisk أيضًا لحفظ بطاقة sdcard من عمليات الكتابة الإضافية ، ولم يتسبب ذلك في أي مشكلات بالنسبة لي ، حيث يتم تشغيل البرنامج النصي مرة واحدة كل دقيقة من cron.
9 ، عند انتهاء النسخ الاحتياطي ، سيقوم البرنامج النصي الآخر من الخادم الذي يقوم بتشغيل rsync بلمس FFILE (إنهاء الملف). في الحلقة التالية ، سيعرض backup_progress.sh أن النسخ الاحتياطي قد اكتمل واستدعاء برنامج نصي آخر اختياريًا لإغلاق OrangeBOX. يقوم بحذف ملفات القفل الخاصة به في هذه المرحلة مما يجعل عمليات التنفيذ الإضافية مستحيلة ، لذا حتى إذا لم تقم بتمكين إيقاف التشغيل في الدقيقة التالية عند تشغيل هذا النص البرمجي ، فسيتم إنهاء العمل على الفور لأن BFILE ليس موجودًا وملف FFILE غير موجود. لذلك سيعرض رسالة اكتمال النسخ الاحتياطي إلى أجل غير مسمى ما لم يتم إعادة تشغيل النسخ الاحتياطي مرة أخرى.
برنامج نصي للنسخ الاحتياطي عن بعد (orange-remote.sh):
ستحتاج إلى إنشاء مفتاح ssh للنسخ الاحتياطي ومفتاح لتشفير luks لمحرك الأقراص. عند تشغيل النسخ الاحتياطي عن بُعد يدويًا لأول مرة ، فإنه سيحفظ بصمة مضيف المربعات البرتقالية في ملف المضيفين (من هذه النقطة يمكن تشغيله تلقائيًا بواسطة cron).
قرص = "/ dev / disk / by-id / …"
لمعرفة معرف القرص الثابت الخاص بك ، قم بتشغيل uuid أو blkid أو ابحث فقط عن الدلائل المقابلة / dev / disk /.
يمكن إعداد استثناء تضمين دليل إذا كنت لا تريد نسخ كل شيء احتياطيًا. هذه عملية مزعجة للغاية لأنه بالنسبة لـ rsync إذا كنت تريد استبعاد دليل فرعي واحد عميق في الهيكل ، عليك القيام به:
+ / أ
+ / أ / ب + / أ / ب / ج + / أ / ب / ج / د - / أ / ب / ج / د / ه + / دير 2
نظرًا لأن هذا البرنامج النصي ينفذ أوامر على OrangeBOX عن بُعد ، فإنه لا يشرف على متغيرات الإرجاع من هذا الجانب ، لذلك أستخدم بعض الحيل الذكية مثل أنها ستخرج رسالة فتح محرك الأقراص البعيد إلى /tmp/contmsg.txt ، ثم التحليل لمعرفة ما إذا كان ناجحًا ، إذا لم يكن الأمر كذلك ، فإنه يغير ملف rsync الثنائي إلى غير قابل للتنفيذ ، لذلك لن يحاول rsync تحميل البيانات إلى ملفات rootfs الخاصة بـ OrangePI التي تملأ SDcard. من الممارسات الجيدة أيضًا تعيين البت الثابت على chattr + i / mnt / backup لجعل هذا الأمر مستحيلًا.
يتم إجراء الحساب المسبق للحجم محليًا على الخادم ، لذلك يجب إرسال هذا الملف إلى OrangeBOX في الخطوة التالية.
يتم بدء النسخ الاحتياطي الرئيسي كحلقة لـ ((i = 0 ؛ i <100 ؛ i ++)) ؛ القيام بذلك لأنه في حالة انخفاض جودة اتصالات الإنترنت DSL / الكبل ، يمكن أن ينقطع rsync غالبًا ، أو انتهاء المهلة. إذا اكتملت بنجاح ، فسوف تنقطع الحلقة دون محاولة المزيد من التكرارات. يعمل هذا بشكل لا تشوبه شائبة مع أنظمة التشغيل الجيدة ، ولكن إذا كان الصندوق البعيد لسبب ما هو windows وسيكون هناك رفض الوصول كما هو معتاد على NTUSER. DAT فإن rsync سيعيد رمز خطأ وستنفذ هذه الحلقة 100 مرة ثم تفشل.
الخطوة 5: الإغلاق وقائمة المهام
يوضح تعليمي مرة أخرى كيف يمكنك إنشاء جهاز أفضل وأكثر قابلية للتخصيص من جهاز كمبيوتر بقيمة 10 دولارات بمفردك والذي يتغلب على الجحيم من Buffalo من خلال أجهزة NAS المقفلة الخاصة به ، والتقسيم الداخلي الغريب ، و Busybox المعطل بنظام Linux باستخدام أدوات segfaulting ، من خلال برامج Windows والبرامج الثابتة المغلقة والتوثيق السيئ والدعم وبغض النظر عن مقدار الأموال التي ستنفقها ، فلن تحصل أبدًا على مؤشر تقدم يوضح نسختك الاحتياطية ناهيك عن مدى روعة مظهر OrangeBox (حتى أنني أستخدم كابل CAT5 البرتقالي معه: D).
مع ازدياد قوة أجهزة الكمبيوتر المصغرة مع الحفاظ على نفس السعر الذي يقل عن 100 دولار ، يمكننا استخدامها في المزيد والمزيد من المهام. نظرًا لأن منافذ Gbe Ethernet شائعة جدًا هذه الأيام خلال 1-2 سنوات ، فإن الذاكرة الموجودة على هذه اللوحات ستزداد بشكل كبير ويمكن استخدامها لأنظمة النسخ الاحتياطي القائمة على ZFS أيضًا.
-مؤشر تقدم الحبوب الدقيقة بواسطة برنامج C (انظر WasserStation أحد مشروعي الآخر). الآن فقط # hashmark # الأحرف المستخدمة في وضع الأحرف مع lcdPuts (lcd ، line1) ، يمكن تحسين ذلك حتى عند استخدام شاشات LCD ذات الأحرف لتقسيم عمود واحد إلى 5 أجزاء ويمكن لبرنامج C الرئيسي أن يأخذ عددًا صحيحًا مثل 25 ويستخلص تم تحسين شريط التقدم بشكل صحيح أو تحسينه باستخدام شاشة LCD رسومية
- إمكانية الحصول على قرص صلب قابل للإزالة لإنشاء نسخ احتياطية جديدة وجديدة ونقلها إلى مواقع مختلفة (إذا اكتشف الصندوق وجود محرك أقراص فارغ ، فيجب أن يقوم بتهيئته تلقائيًا باستخدام مفتاح التشفير بمجرد استلامه).
- إذا كنت ترغب في طباعة العلبة الخاصة بك باستخدام makerbot ، فقد تكون OrangeNAS ممتعة بالنسبة لك:
موصى به:
النسخ الاحتياطي لـ Pi: 4 خطوات
قم بعمل نسخة احتياطية من Pi الخاص بك: قد يستغرق الأمر وقتًا طويلاً لإعداد Raspberry PI ، ثم يحدث خطأ ما ، ولا يمكن قراءة البطاقة أو لن يتم تشغيل جهاز التفريغ وستبدأ من جديد. يعد النسخ الاحتياطي (الذي يعني الاستعادة) أحد الحلول لهذا الأمر
كاميرا النسخ الاحتياطي لكاميرا الفيديو المعاد تدويرها: 7 خطوات (بالصور)
كاميرا النسخ الاحتياطي لكاميرا الفيديو المعاد تدويرها: أنا متأكد من أن معظمكم يقرأ هذا يحتوي على درج أو خزانة في مكان ما مليء بالتكنولوجيا التي أحببتها والتي أصبحت قديمة جدًا وعفا عليها الزمن. لدي بالتأكيد نصيبي من التكنولوجيا القديمة ، ومن المحزن أن أرى هذه الإمكانات تذهب سدى. حسنًا ، في هذا الدليل ، أنا
أضف مقياس سرعة الدوران البصري المستند إلى Arduino إلى جهاز التوجيه CNC: 34 خطوة (بالصور)
أضف مقياس سرعة الدوران البصري المستند إلى Arduino إلى جهاز التوجيه CNC: قم ببناء مؤشر RPM بصري لجهاز التوجيه CNC الخاص بك باستخدام Arduino Nano ، ومستشعر IR LED / IR Photodiode وشاشة OLED بأقل من 30 دولارًا. لقد استلهمت الأمر من قياس rPM الخاص بـ eletro18 - مقياس سرعة الدوران البصري Instructable وأردت إضافة مقياس سرعة الدوران
ترقية جهاز Apple MacBook الخاص بك: النسخ الاحتياطي للبيانات والحفاظ عليها: 9 خطوات (بالصور)
قم بترقية جهاز Apple MacBook الخاص بك: النسخ الاحتياطي للبيانات والحفاظ عليها: أصبح قرصي الثابت على جهاز Mac سمينًا وممتلئًا ، وكان مثيرًا للاشمئزاز. تحدث هذه المشكلة للعديد من الأشخاص الذين اشتروا أجهزة MacBooks الأصلية. إنهم يشعرون بضيق واضح لقرص صلب صغير. اشتريت جهاز macbook الخاص بي منذ عامين تقريبًا وكان
النسخ الاحتياطي لأجهزة Mac إلى SAMBA (SMB) شارك: 3 خطوات
النسخ الاحتياطي لأجهزة Mac إلى SAMBA (SMB) Share: في هذا Instructable ، ستتعلم كيفية عمل نسخة احتياطية من جهاز Mac إلى مربع Windows Home Server أو أي مشاركة SAMBA أخرى. ستحتاج إلى: Windows Home Server (أو مشاركة شبكة SMB) مع مساحة خالية كبير مثل محرك الأقراص الثابتة لجهاز Mac الخاص بك يستخدم مساحة ، كمبيوتر Apple يعمل بنظام التشغيل 10.4