فهرست مطالب:

OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI: 5 مرحله
OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI: 5 مرحله

تصویری: OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI: 5 مرحله

تصویری: OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI: 5 مرحله
تصویری: Technology Stacks - Computer Science for Business Leaders 2016 2024, نوامبر
Anonim
OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI
OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI
OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI
OrangeBOX: دستگاه ذخیره سازی پشتیبان امن مبتنی بر OrangePI

OrangeBOX یک جعبه پشتیبان ذخیره سازی از راه دور همه کاره برای هر سرور است.

سرور شما می تواند آلوده ، خراب ، پاک شود و همه داده های شما هنوز در OrangeBOX ایمن است و چه کسی مأموریتی غیرممکن مانند دستگاه پشتیبان را که فقط به آن وصل می کنید و بدون پیشرفت کار مشاهده می کنید دوست ندارد (فقط امیدوارم جادو باشد دود در پایان خارج نمی شود:)).

OrangeBOX اولین پروژه من است که بیشتر یک نرم افزار است نه هک سخت افزاری. این اساساً یک NAS سفارشی با LCD متصل شده است.

مرحله 1: قطعات سخت افزاری

قطعات سخت افزاری
قطعات سخت افزاری
قطعات سخت افزاری
قطعات سخت افزاری
قطعات سخت افزاری
قطعات سخت افزاری

Orange PI zero یک رایانه تک صفحه ای منبع باز است. می تواند اندروید 4.4 ، اوبونتو ، دبیان را اجرا کند. از AllWinner H2 SoC استفاده می کند و دارای 256 مگابایت/512 مگابایت DDR3 SDRAM (نسخه 256 مگابایتی نسخه استاندارد است. Orange Pi Zero برای هرکسی است که می خواهد با فناوری شروع به کار کند - نه فقط آن را مصرف کند. این یک ابزار ساده ، سرگرم کننده و مفید است. می توانید از آن برای کنترل جهان اطراف خود استفاده کنید (https://www.orangepi.org/orangepizero/). بنابراین دقیقاً برای ماست که اجازه دهیم با آن کار کنیم:)

  • جعبه فلزی/پلاستیکی/چوبی (من از جعبه cd-rw خارجی خارجی یاماها استفاده کرده ام)
  • نارنجی PI صفر یا بهتر (در صورت استفاده از مدل دیگر ممکن است Pinout GPIO تغییر کند)
  • صفحه نمایش LCD 2x20 RGB
  • هر درایو usb SFF 3.5/ LFF 2.55
  • Sata -> آداپتور usb. به خاطر داشته باشید که اگرچه OrangePI محدودیت بالایی برای حداکثر ظرفیت درایو اعمال نمی کند ، اما بسیاری از پل های USB-to-SATA این کار را انجام می دهند (حداکثر 2 ترابایت). نارنجی PI Zero که من استفاده می کنم تنها دارای یک پورت USB 2.0 با سرعت انتقال موثر حداکثر 28 مگابایت بر ثانیه است. من USB3.0 را انتخاب کرده ام (برای ارتقاء آینده آماده شده است) -> پل SATA (نام تجاری ذکر نخواهد شد) و این حد را محدود می کند ، بنابراین بهتر است پلی را انتخاب کنید که ثابت کند از درایوهای بزرگتر مانند پل های مبتنی بر تراشه JMicron JMS567 پشتیبانی می کند به قبل از خرید ، تحقیقات خود را انجام دهید. من می توانم با استفاده از درایو 2 ترابایتی sata در این پروژه با سرعت و هارد دیسک زندگی کنم (اگر درایوهای بزرگتری قرار دهید ، شناخته می شود اما سیستم عامل تنها 2 ترابایت اول آن را می بیند ، بنابراین بقیه ظرفیت کم شده).
  • آداپتور 12V 2.5 A یا بالاتر حدود 500 میلی آمپر میزان مصرف معمولی را برای OPI Zero و حداکثر 1.5A برای درایو استاندارد LFF SATA محاسبه کنید. بزرگنمایی هرگز ضرری ندارد. متاسفانه در تنظیمات من ، یاماها 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 اما از آنجایی که pinout GPIO متفاوت است ، خارج از محدوده این نوشتار است.

همچنین می توانید این ساخت را با Orange PI Plus2 جدید که دارای اتصال SATA است انجام دهید و می توانید از استفاده از مبدل های sata-> usb به همراه محدودیت های آنها صرف نظر کنید. اگر قصد دارید از FreeBSD یا سایر BSD ها استفاده کنید ، سری Orange PI ممکن است بهترین انتخاب نباشد زیرا پشتیبانی سخت افزاری آنها محدود است (به عنوان مثال برای بوت شدن باید از USB stick استفاده کنید). برای BSD ها بهترین توصیه استفاده از Raspberry PI است. کد C برای LCD و تمام اسکریپت های پوسته برای هر سیستم UNIX دیگر قابل حمل است.

مرحله 2: طراحی سخت افزار

طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار
طراحی سخت افزار

جعبه یاماها فقط برای ذخیره همه اینها کافی بود ، فضای کافی برای رایانه نارنجی PI یا بورد معمولی Raspi نداشت.

اترنت با یک افزونه به پشت جعبه آورده شد. به یاد داشته باشید که Orange PI zero فقط دارای رابط اترنت 100 مگابیت بر ثانیه است اگر می خواهید سریعتر نیاز به استفاده از برد دیگری مانند Asus Tinkerboard/RPI3B+/سایر مدلهای نارنجی PI داشته باشید.

PIN Out اشتباه تنها و تنها اشتباهی است که می توانید در این پروژه مرتکب شوید ، بنابراین ارزش استفاده از برخی از قوانین اصول انگشت شست را دارد:

1 ، همیشه سعی کنید از کابل رنگی از END تا END استفاده کنید. من خودم در "پروژه" هایی که انجام نمی دهم همین "اشتباه" را مرتکب می شوم ، فقط به این دلیل که کابل های مرد-مرد/زن-زن/زن-زن به اندازه کافی در دست ندارم و فقط 2 را وصله می کنم. مدار اگر کار خود را به درستی مستند نکنید ، ممکن است سالها بعد منجر به سردرد شود ، جایی که باید تعمیر و ارتقا دهید.

2 ، مقداری چسب داغ را به کانکتورها بمالید. در صورت استفاده از این کابل های آردوینو-استارتر به سبک mm/mf/ff که از کیفیت بالایی برخوردار نیستند ، بسیار متداول است (مخصوصاً اگر دستگاه را جابجا کنید یا آن را جابجا کنید) اتصالات به بیرون لغزش می کنند. اگر می دانید که از یک دستگاه استفاده طولانی مدت استفاده خواهد کرد (احتمالاً تا زمانی که خراب شود ؟!) ، بهتر است کمی از هات چسب را در طرف OrangePI و LCD اتصالات بکار ببرید تا آنها را در کنار هم نگه دارید. در صورت لزوم بعداً به راحتی ذوب می شود/خراشیده می شود.

3 ، سیم کشی صفر OrangePI خبر بد این است که pinout Orange PI با رزبری PI 0/1/2/3 یکسان نیست و حتی بین سایر مدل های Orange PI تفاوت وجود دارد. بهترین راه برای تهیه کتابخانه سیم کشی (نسخه نارنجی PI Zero) است. ممکن است تصویر کمی گیج کننده باشد ، اما اینها بهترین هایی بودند که می توانستم پیدا کنم. یکی آینه 180 درجه دیگری است. اگرچه درک تصویر غیر گرافیکی CLI ممکن است دشوارتر باشد ، اما مستقیم ترین تصویر است.

شما همیشه می توانید 2 سر سوکت ها را با در نظر گرفتن یک سر به عنوان انتهای مثبت با (+3.3/+5V) و دیگری به عنوان انتهای منفی (یک GND) -> این انتهای کانکتور رو به پورت ETHERNET است ، متفاوت کنید. به

از جدول Wiring PI Zero شما فقط به یک ستون احتیاج دارید که wPI بقیه موارد را فراموش کند ، مانند اینکه آنها در آنجا نباشند.

به عنوان مثال برای اتصال LCD_E 15 (یعنی wPI 15!) و LCD_RS 16 (یعنی wPI 16!) پین ها را از انتهای مثبت کانکتور بشمارید (این کار به راحتی با قلم یا پیچ گوشتی کوچک انجام می شود). این از نظر فیزیکی 4 پین و 5 پین پایین می آید.

4 ، گروه بندی کنید اگر این امکان وجود دارد که پین های استفاده شده را در کنار یکدیگر قرار دهید (گروه بندی آنها) همیشه این را انتخاب می کنید ، این امر باعث می شود که آنها حتی بدون چسب داغ در کنار یکدیگر قرار بگیرند و همچنین در پروژه های دیگر هنگامی که کانکتورهای 2x 4x 6x molex دارید ، می توانید فقط از پین هایی که در کنار یکدیگر هستند استفاده کنید. در اینجا بهترین کاری که می توانید انجام دهید گروه 2-3 نفره است (هنگام استفاده از کابل های بلوز نجات یافته از رایانه های قدیمی ایده آل است).

پین های مورد استفاده برای اتصال صفحه نمایش OrangePI LCD:

// از اعداد پین WIRINGPI استفاده کنید

#define LCD_E 15 // فعال کردن پین #تعریف LCD_RS 16 // ثبت پین انتخاب شده #تعریف LCD_D4 5 // پین داده 4 #تعریف LCD_D5 6 // پین داده 5 #تعریف LCD_D6 10 // پین داده 6 #تعریف LCD_D7 11 // پین داده 7

پین هایی که برای کنترل نور پس زمینه RGB استفاده می شوند

$ G 10 بنویسید

$ G بنویسید 4 1 $ G بنویسید 7 1

نارنجی PI صفر پین wPI 1 ، 4 ، 7. تنها جادویی که این LCD می تواند انجام دهد در مقایسه با LCD استاندارد آبی ثابت یا سبز نور پس زمینه سبز است که در آن شما یک کاتد دارید که باید به GND کشیده شود که دارای 3 برای 3 است رنگها قرمز ، سبز و آبی. با تغییر ترکیبی که یکی از آنها روشن است می توانید رنگهای مختلف را از این رنگهای اصلی مخلوط کنید ، اما فقط انتهای بالای آن سایه ندارد زیرا نمی توانید روشنایی یک رنگ را کنترل کنید (روشن یا خاموش است).

اختلاط رنگ افزودنی: افزودن قرمز به سبز ، زرد را ایجاد می کند. افزودن رنگ قرمز به آبی سرخابی را به ارمغان می آورد. افزودن رنگ سبز به آبی رنگ فیروزه ای ایجاد می کند. افزودن هر سه رنگ اصلی به هم سفید می دهد.

مرحله 3: سیستم عامل

سیستم عامل
سیستم عامل

OrangeBOX راه اندازی می شود و لینوکس Armbian (بر اساس Debian Stretch) 4.14.18-sunxi kernel با محیط امن فایروال ، به VPN متصل می شود و منتظر دستورات پشتیبان گیری از راه دور از سرور می ماند.

اصول طراحی:

رمزگذاری کامل دیسک بر اساس لوک (دستگاه خود شامل کلید باز کردن درایو پشتیبان نیست. به طور موقت از سرور راه دور به ram /dev /shm کپی می شود ، درایو باز می شود و کلید پاک می شود. پس از اتمام پشتیبان گیری درایو بسته می شود و OrangeBox به طور خودکار در عرض 1 دقیقه خاموش می شود.)

-همه دستورات و کلیدها از سرور راه دور ارسال می شوند (دستگاه فقط دارای گواهی vpn است) هیچ دسترسی به سرور راه دور ندارد حتی ssh از این دستگاه فایروال می شود

سیستم های فایل محلی رمزگذاری نشده اند تا بتوانند بوت شوند اما هیچ چیز مفیدی ندارند و از آنجا که پیوند VPN در طرف دیگر بسیار محدود است ، حتی با از دست دادن کامل دستگاه ، مهاجم نمی تواند کاری انجام دهد

برنامه Armbian Stretch را از https://www.armbian.com/orange-pi-zero/ بارگیری کنید

سیستم را راه اندازی کنید:

apt-get update && apt-get upgrade

apt-get sysvinit-core sysvinit-utils را نصب کنید

/etc /inittab را ویرایش کنید ، تمام کنسول را می توان غیرفعال کرد زیرا از جعبه به عنوان بدون سر استفاده می شود. قسمت زیر را کامنت کنید:

#1: 2345: respawn:/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

جعبه خود را مجدداً راه اندازی کنید و systemd را حذف کنید تا یک سیستم رایگان منبع باز واقعی bloatware داشته باشید.

apt-get remove --purge-auto-remove systemd

برخی از بسته ها را نصب کنید

apt-get cryptsetup vim htop rsync screen gcc install git را نصب کنید

کتابخانه wiringpi را نصب کنید

cd /usr /src

git clone https://github.com/xpertsavenue/WiringOP-Zero.git cd Wiring OP-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 # شروع به مراقبت در زمان بوت؟ 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 max-load-15 = 12

/etc/init.d/watchdog شروع کنید

باید حداقل 1 نخ هسته و 1 فرآیند وجود داشته باشد:

ریشه 42 0.0 0.0 0 0؟ من <10:50 0:00 [watchdogd] root 14613 0.0 0.2 1432 1080؟ SLs 13:31 0:00/usr/sbin/watchdog

آزمایش کردن:

اطمینان حاصل کنید که همه چیز را متوقف کرده و همگام سازی و & همگام سازی و همگام سازی را انجام می دهید تا بقیه داده ها را روی دیسک بنویسید. سپس به عنوان مسئله اصلی:

echo 1> /dev /watchdog

پس از چند ثانیه دستگاه باید راه اندازی مجدد شود.

همانطور که در دفترچه راهنما آمده است:

o آیا جدول فرایند پر است؟

o آیا حافظه کافی کافی وجود دارد؟ o آیا حافظه قابل تخصیص کافی وجود دارد؟ o آیا برخی از فایل ها قابل دسترسی هستند؟ o آیا برخی از فایلها در بازه زمانی مشخص تغییر کرده اند؟ o آیا میانگین بار کاری زیاد است؟ o آیا سرریز جدول فایل رخ داده است؟ o آیا فرآیندی هنوز در حال اجرا است؟ این فرآیند توسط یک فایل pid مشخص می شود. o آیا برخی از آدرس های IP به پینگ پاسخ می دهند؟ o آیا رابط های شبکه ترافیک دریافت می کنند؟ o آیا درجه حرارت خیلی زیاد است؟ (داده های دما همیشه در دسترس نیست.) o اجرای دستور تعریف شده توسط کاربر برای انجام آزمایشات دلخواه. o یک یا چند دستور آزمایش/تعمیر موجود در /etc/watchdog.d را اجرا کنید. این دستورات با argument argument یا repair فراخوانی می شوند. در صورت شکست هر یک از این بررسی ها ، ناظر باعث تعطیلی می شود. اگر هر یک از این آزمایشها بجز باینری تعریف شده توسط کاربر بیش از یک دقیقه طول بکشد ، دستگاه نیز راه اندازی مجدد می شود.

این نگهبان ممکن است در معماری های معمولی x86 خوب کار کند ، اما در تخته های مبتنی بر ARM مانند Raspberry PIs ، Orange PIs چندین بار برای من شکست خورد. این سیستم می تواند به حالت هایی که حتی نگهبان در آن آویزان است نیز برسد. بیایید فقط آن را به هر حال پیکربندی کنیم شاید در طول سالها با ارتقاء apt-get بهبود یابد:(

مرحله 4: طراحی نرم افزار

طراحی نرم افزار
طراحی نرم افزار

فرآیند پشتیبان گیری خود بر اساس 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 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 اترنت سریع (100 مگابیت بر ثانیه) - 0: 02: 44: 00 اترنت گیگابیتی (1000 مگابیت بر ثانیه) - 0: 00: 16: 24 10 گیگابیت اترنت (10 گیگابیت بر ثانیه) - 0: 00: 01: 38

اگر rsync به پایان برسد ، به اسکریپت سیگنال می دهد که محاسبه را متوقف کند. این روش فقط یک روش تقریبی است و قابل اعتماد نیست ، همچنین سرعت پیوند ثابت نیست ، می تواند سرعت را کاهش دهد ، دوباره سرعت بخشد. این فقط یک محاسبه نظری است.

2 ، انجام بررسی اندازه در دایرکتوری برای تعیین میزان همگام سازی داده ها در حال حاضر. با صدها گیگابایت فایل کوچک بسیار کند می شود (هرچند اگر دوبار در لینوکس مجدداً آن را ذخیره کنید)

میزبان A -> داده های سرور برای پشتیبان گیری داده داده ها: 235 گیگابایت

میزبان B -> داده های سرویس گیرنده جعبه نارنجی ما در حال حاضر دیتای داده: 112 گیگابایت

حجم دلتا 123 گیگابایت است.

3 ، اگر سیستم فایل مانند مورد/dev/mapper/backup ما اختصاص داده شده باشد ، می توانیم از شاخص کلی استفاده از سیستم فایل استفاده کنیم تا تعیین کنیم چگونه پشتیبان گیری ما پیشرفت می کند و این واقعا سریع است. در این مورد ما حتی نیازی نداریم که rsync stdout را در هر جایی لوله کنیم ، فقط یک rsync خشک را اجرا کرده ، منتظر بمانید تا کامل شود ، دلتا را در بایت محاسبه کنید و این را با فضای خالی آنچه در درایو پشتیبان و voila داریم ، متقاطع کنید. حالا یک نمودار میله ای زیبا بسازید این روشی بود که من انتخاب کردم و در اینجا اسکریپت من برای آن است:

#!/bin/bash

# پشتیبان گیری ماشین حساب پیشرفت برای 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 data data SHUTDOWN = "1" # در صورت 1 اسکریپت دیگری را آغاز می کند که در پایان پشتیبان کادر را خاموش می کند BACKUP_CURRENT = "0" # باید مقداردهی شود اما محاسبه می شود DRIVE_SIZE = "" # اندازه درایو بر حسب بایت (ثانویه بررسی کنید) تابع LCD = "sudo /bin /lcd" is_mount () {grep -q "$ 1" /proc /mounts status = $؟ } function red () {sudo /bin /lcdcolor red} تابع سبز () {sudo /bin /lcdcolor green} تابع آبی () {sudo /bin /lcdcolor blue} # وضوح پاک (تنظیم در بوت توسط bootup_display.sh). پشتیبان گیری در حال انجام نیست ، LCD وضعیت # را خراب نکنید. فقط در صورت پشتیبان گیری مداوم => بدون فایل شروع و بدون فایل fin = اگر [! -f $ BFILE] && [! -f $ FFILE]؛ سپس خروج 1 fi # اگر پشتیبان گیری به پایان رسید این اسکریپت نمایش داده می شود و قفل های # را حذف می کند تا تا شروع بعدی مجدداً اجرا نشود. اگر [-f $ FFILE] ؛ سپس سبز $ LCD "پشتیبان گیری" "** تکمیل شده **" پژواک "پشتیبان گیری تکمیل شد" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # پشتیبان گیری در صورت [$ SHUTDOWN == "1"] پاک می شود. سپس "اجرای اسکریپت خاموش کردن …" /home/orange/shutdown.sh & fi خروج 0 fi # از این مرحله ، اسکریپت فقط در صورت پشتیبان گیری مداوم # اجرا می شود ، بنابراین همه خطاها بر روی LCD چاپ می شوند و باعث ایجاد اسکریپت می شوند # برای سقط کردن با این وجود فایل backup.lck را حذف نمی کند بنابراین بارها و بارها وارد اینجا شده و شرایط را روشن کنید. is_mount $ BACKUP_DRIVE if [$ status -ne 0]؛ سپس $ LCD LCD "ERR: درایو پشتیبان" "نصب نشده است!" echo "درایو پشتیبان گیری نصب نشده است" خروج 1 fi اگر [! -s $ TFILE]؛ سپس قرمز $ LCD "ERR: transfile" "خالی است" echo "فایل محاسبه اندازه حمل و نقل خالی است." خروج 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') اگر [-z $ BACKUP_OVERALL] ؛ سپس قرمز $ LCD "ERR: اندازه بازخوانی" "از سرور نامعتبر است" echo "پشتیبان گیری اندازه کلی بازخوانی نامعتبر است 1" خروج 1 fi اگر!

اگرچه کد ساده است اما در اینجا توضیحاتی در مورد عملکرد آن ارائه شده است:

1 ، اگر BFILE یا FFILE وجود ندارد (که وضعیت پس از راه اندازی روشن است) که نشان می دهد هیچ فرایند پشتیبان گیری وجود ندارد ، بنابراین هیچ کاری را انجام ندهید. به این ترتیب شما می توانید هرگونه اطلاعات خوبی را که در مورد راه اندازی می خواهید مانند نام میزبان ، ip ، uptime و غیره نمودار کنید و به هم نخورد.

2 ، بیایید به بخش is_mount $ BACKUP_DRIVE برویم. فقط یک یادآوری تنها راهی که به اینجا رسیدیم این است که پشتیبان گیری شروع شده است تا BFILE وجود داشته باشد. اکنون کد فقط خطاهای مختلفی را بررسی می کند مانند اینکه آیا درایو پشتیبان نصب شده است؟ یا خطاهای دیگر به یاد داشته باشید که این فقط یک برنامه DISPLAY است ، حتی اگر اندازه آنها از نسخه پشتیبان بیشتر باشد ، هیچ چیزی را لغو نمی کند.

3 ، OK همه چک های خطا زمان محاسبه شده برای محاسبه درصد نمودار. ابتدا اسکریپت یک "عکس فوری" از فضای مورد استفاده در بایت در سیستم فایل پشتیبان گرفته و آن را در VFILE ذخیره می کند. هدف از این کار چیست: یک اسکریپت bash بدون حالت است ، داده ها را بین اجرا از بین می برد ، بنابراین اگر می خواهید برخی از داده های مربوط به اجرای قبلی را "به خاطر بسپارید" باید آن را در جایی ذخیره کنید. در مورد ما این فقط یک فایل متنی ساده است. برای ساده تر گفتن ، START_POS ما 1 گیگابایت (داده های موجود) است ، آنچه می خواهیم پشتیبان گیری کنیم +2 گیگابایت و ظرفیت کلی درایو 10 گیگابایت است.

4 ، دفعه بعد که اسکریپت اجرا می شود VFILE وجود دارد و این مورد باز خوانده می شود (بنابراین ما می دانیم در صورت خالی نبودن درایو در چه وضعیتی بود) برای محاسبه BACKUP_CURRENT که اساساً یک دلتا از فضای مورد استفاده در حال حاضر است در درایو پشتیبان منهای موقعیت اولیه آنچه در VFILE در دور گذشته ذخیره کرده ایم (دوباره این اطلاعاتی است که هنگام شروع پشتیبان گیری روی درایو داشتیم). اسکریپت به صورت داخلی با بایت کار می کند ، اما برای ساده سازی بعد از نیم ساعت ما از اطلاعات 500 مگابایتی پشتیبان گرفتیم ، سپس فرمول BACKUP_CURRENT = 1.5 گیگابایت - 1 گیگابایت (حالت اولیه) => که دقیقاً اطلاعات واقعی 500 مگابایت را به ما باز می گرداند ، یعنی آنچه تا کنون پشتیبان آن بوده ایم می توانید مشاهده کنید که بدون پیگیری اطلاعات اولیه در ابتدای تهیه نسخه پشتیبان ، این محاسبه اندازه با شکست مواجه می شود زیرا می بینید که فضای مورد استفاده در حال حاضر 1.5 گیگابایت است بدون این که بدانید 1 گیگ داده روی دیسک وجود داشته است. از پشتیبان قبلی گرفته می شود بنابراین فرض می شود که سرور به جای 500 مگابایت 1.5 گیگابایت داده برای ما ارسال کرده است.

5 ، BACKUP_OVERALL در آن خوانده می شود ، این داده ها توسط سرور هنگام انجام rsync خشک اولیه محاسبه می شوند (بنابراین این یک منبع داده خارجی است که حاوی مقدار بایت هایی است که از Server-> OrangeBOX پشتیبان گیری می شود). این مقدار در حال حاضر با فضای کلی رایگان دیسک بررسی می شود و اگر از آن بیشتر شود ، پیغام خطا در LCD نمایش داده می شود و اسکریپت اجرا را متوقف می کند. دوباره به یاد داشته باشید که تمام این اسکریپت فقط نمایش داده می شود ، در روند پشتیبان گیری تداخلی ایجاد نمی کند. اگر فایلها را بر روی دیسک پاک کنید یا مقدار فایلها از راه دور تغییر کند و بنابراین BACKUP_OVERALL در یک نقطه تغییر کند ، ادامه می یابد.

6 ، در نهایت ما با بررسی سطح دوم کار خود را به پایان رساندیم ، زمان نمایش چیزی است. اسکریپت هم داده ها را روی کنسول و هم روی LCD با استفاده از یک برنامه ساده C نمایش می دهد. پس زمینه به آبی تغییر می کند و نشان می دهد که پشتیبان گیری بالاخره آغاز شد و پیشرفت با فرمول زیر PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)) محاسبه شد. این یک محاسبه درصد اولیه است که ما مقدار فعلی را در نظر می گیریم ، در مثال ما 0.5 گیگابایت*100/2 گیگابایت = 25٪.

7 ، اعداد نیز از بایت به مگا/گیگابایت تبدیل می شوند و اگر کمتر از 1 گیگابایت باشد ، صفحه به طور خودکار بر مگابایت نمایش داده می شود.

8 ، یک مورد برای ترسیم این مورد در مورد ما 25٪ روی LCD 20 ستونی است. این در مثال ما 25 * 20 /100 = 5 خواهد بود. در حال حاضر تازه سازی با برنامه LCD پیاده سازی شده است که هر بار که با برنامه تماس می گیرید کل صفحه را دوباره ترسیم می کند. بنابراین در این حالت 5 بار یک حلقه for اجرا می شود تا 5 hashmarks # روی صفحه ترسیم شود که در هر دور به صورت سوسو زشت ظاهر می شود ، بنابراین من داده های محاسبه شده نوار پیشرفت را در LFILE1 و 2 می نویسم ، که در این مورد پس از 5 دور شامل ##### است و این را بخوانید و روی LCD نمایش دهید. شما همچنین می توانید LFILE1 و 2 را بر روی ramdisk قرار دهید تا کارت sdcard را از عملیات نوشتن اضافی نجات دهید ، هیچ مشکلی برای من ایجاد نکرد ، اسکریپت هر دقیقه یک بار از cron اجرا می شود.

9 ، هنگامی که پشتیبان گیری اسکریپت دیگر سرور را که rsync اجرا می کند به پایان رساند ، FFILE (Finish File) را لمس می کند. در حلقه بعدی backup_progress.sh سپس نشان می دهد که پشتیبان گیری کامل شده است و به صورت اختیاری اسکریپت دیگری را برای خاموش کردن OrangeBOX فراخوانی می کند. در این مرحله فایل های قفل خود را حذف می کند و اجرای بیشتر را غیرممکن می کند ، حتی اگر خاموش شدن را در دقیقه بعد فعال نکنید این اسکریپت بلافاصله متوقف می شود زیرا BFILE در آنجا نیست و FFILE در آنجا نیست. بنابراین پیام پشتیبان تکمیل شده را به طور نامحدود نمایش می دهد مگر اینکه نسخه پشتیبان مجدداً راه اندازی مجدد شود.

اسکریپت پشتیبان گیری از راه دور (orange-remote.sh):

شما باید یک کلید ssh برای پشتیبان گیری و یک کلید برای رمزگذاری luks برای درایو ایجاد کنید. هنگامی که پشتیبان گیری از راه دور را برای اولین بار به صورت دستی اجرا می کنید ، اثر انگشت میزبان جعبه های نارنجی در فایل میزبان ذخیره می شود (از این نقطه می تواند توسط cron به طور خودکار اجرا شود).

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

برای یافتن شناسه هارد دیسک خود ، uuid ، blkid را اجرا کنید یا فقط فهرستهای مربوطه/dev/disk/را جستجو کنید.

اگر نمی خواهید همه چیز را پشتیبان گیری کنید ، فهرست راهنمای شامل حذف موارد می تواند راه اندازی شود. این روند کاملاً آزاردهنده است زیرا برای rsync اگر می خواهید یک زیر شاخه فرعی را در عمق ساختار حذف کنید ، باید این کار را انجام دهید:

+ /a

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

از آنجا که این اسکریپت دستوراتی را در OrangeBOX از راه دور اجرا می کند ، هیچ نظارتی بر متغیرهای برگشتی از آن طرف ندارد ، بنابراین من از برخی ترفندهای هوشمندانه استفاده می کنم ، مانند اینکه پیام باز کردن درایو از راه دور را به /tmp/contmsg.txt ارسال می کند ، سپس تجزیه می کند برای اینکه ببینیم آیا موفق بوده است یا خیر ، باینری rsync را به غیرقابل اجرا تغییر می دهد ، بنابراین rsync سعی نخواهد کرد داده ها را در ریشه های OrangePIs که SDcard را پر می کند بارگذاری کند. همچنین یک تمرین خوب برای تنظیم بیت تغییرناپذیر در chattr +i /mnt /backup است تا این کار غیرممکن شود.

پیش محاسبه اندازه به صورت محلی در سرور انجام می شود ، بنابراین این فایل باید در مرحله بعدی به OrangeBOX ارسال شود.

پشتیبان اصلی به عنوان یک حلقه برای ((i = 0 ؛ i <100؛ i ++)) آغاز می شود. انجام دهید زیرا در صورت وجود کیفیت پایین DSL/کابل اتصال به اینترنت ، rsync اغلب می تواند خراب شود. اگر با موفقیت کامل شود ، حلقه بدون تلاش بیشتر تکرار می شود. این با سیستم عامل های خوب بی عیب و نقص کار می کند ، اما اگر به دلایلی جعبه راه دور پنجره باشد و دسترسی به آن به طور معمول در NTUSER. DAT قطع شود ، rsync یک کد خطا را باز می گرداند و این حلقه 100 بار اجرا می شود و سپس همچنان خراب می شود.

مرحله 5: فهرست بستن و انجام کارها

بسته شدن و فهرست کارها
بسته شدن و فهرست کارها
بسته شدن و فهرست کارها
بسته شدن و فهرست کارها

دستورالعمل من یکبار دیگر نشان می دهد که چگونه می توانید از رایانه 10 دلاری به تنهایی دستگاهی بهتر و قابل تنظیم تر بسازید که بوفالو را با استفاده از دستگاه های NAS منحصر به فرد قفل شده ، پارتیشن بندی داخلی عجیب و غریب ، لینوکس مشغول جعبه با ابزارهای پیش فرض مدیریت شده ، مدیریت می کند. با نرم افزار ویندوز ، سیستم عامل بسته ، اسناد و پشتیبانی بد و صرف نظر از این که چقدر پول خرج می کنید ، هرگز یک شاخص پیشرفت را که پشتیبان شما را نشان می دهد ، به دست نخواهید آورد ، حتی اگر از کابل نارنجی CAT5 با آن استفاده می کنم: D)

با قدرتمندتر شدن مینی کامپیوترها در عین حفظ خط قیمت کمتر از $ 100 ، می توانیم از آنها برای کارهای بیشتر و بیشتر استفاده کنیم. از آنجا که پورت های Gbe Ethernet این روزها در 1-2 روز بسیار رایج هستند ، حافظه روی این بردها به طرز چشمگیری افزایش می یابد و می توان از آنها برای سیستم های پشتیبان ZFS نیز استفاده کرد.

-شاخص پیشرفت دانه ریز توسط برنامه C (به WasserStation یکی از پروژه های دیگر من مراجعه کنید). در حال حاضر فقط # hashmark # کاراکتر در حالت کاراکتر با lcdPuts (lcd ، line1) استفاده می شود ، این می تواند حتی در هنگام استفاده از LCD های کاراکتر برای تقسیم 1 ستون به 5 قسمت بهبود یابد و برنامه اصلی C فقط می تواند یک عدد صحیح مانند 25 را گرفته و بیرون بکشد نوار پیشرفت به درستی یا بیشتر با استفاده از LCD گرافیکی بهبود یافته است

-امکان داشتن یک hdd قابل جابجایی برای ایجاد پشتیبان های جدید و جدید و انتقال آنها به مکان های مختلف (اگر جعبه درایو خالی را تشخیص داد ، پس از دریافت آن باید آن را با کلید رمزگذاری به صورت خودکار فرمت کند).

اگر می خواهید کیس خود را با makerbot چاپ کنید ، OrangeNAS ممکن است برای شما جالب باشد:

توصیه شده: