Mundarija:

OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi: 5 qadam
OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi: 5 qadam

Video: OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi: 5 qadam

Video: OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi: 5 qadam
Video: The Ubuntu Orange Box 2024, Noyabr
Anonim
OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi
OrangeBOX: OrangePI asosidagi xavfsiz zaxira qurilmasi
OrangeBOX: OrangePI -ga asoslangan xavfsiz zaxira qurilmasi
OrangeBOX: OrangePI -ga asoslangan xavfsiz zaxira qurilmasi

OrangeBOX-bu har qanday server uchun masofadan saqlash uchun zaxira qutisi.

Sizning serveringiz yuqtirilishi, buzilishi, o'chirilishi mumkin va sizning barcha ma'lumotlaringiz hali ham OrangeBOX -da saqlanadi va siz zaxira qurilmasi kabi imkonsiz vazifani yoqtirmaysiz, lekin siz hech narsa qilmasdan, uning bajarilish ko'rsatkichini ko'rasiz (faqat sehrdan umid qiling) oxirida tutun chiqmaydi:)).

OrangeBOX - bu mening birinchi loyiham, u asosan dasturiy ta'minot emas, balki apparat buzilishi. Bu, asosan, LCD o'rnatilgan, maxsus qurilgan NAS.

1 -qadam: Uskuna qismlari

Uskuna qismlari
Uskuna qismlari
Uskuna qismlari
Uskuna qismlari
Uskuna qismlari
Uskuna qismlari

Orange PI zero-ochiq manbali bitta bortli kompyuter. U Android 4.4, Ubuntu, Debian bilan ishlashi mumkin. U AllWinner H2 SoC -dan foydalanadi va 256MB/512MB DDR3 SDRAM (256MB versiyasi - standart versiya. Orange Pi Zero - bu texnologiya bilan yaratishni boshlashni istaganlar uchun - nafaqat uni iste'mol qilish. Bu oddiy, qiziqarli va foydali vosita. Siz atrofingizdagi dunyoni boshqarishni boshlashingiz mumkin (https://www.orangepi.org/orangepizero/). Shunday qilib, biz bilan ishlashni davom ettiring.:)

  • Metall/plastmassa/yog'och quti (men eski Yamaha tashqi cd-rw qutisini ishlatganman)
  • Orange PI Zero yoki undan yaxshiroq (agar siz boshqa modelni ishlatsangiz, GPIO pinout o'zgarishi mumkin)
  • 2x20 RGB LCD displeyli ekranlar
  • Har qanday SFF 3.5/ LFF 2.55 usb disk
  • Sata -> usb adapter. Shuni yodda tutingki, OrangePI haydovchining maksimal sig'imiga yuqori chegara qo'ymaydi, lekin ko'p USB-SATA ko'prigi (maksimal 2 TB). Men ishlatadigan to'q sariq rangli PI Zero faqat bitta USB 2.0 portiga ega, uzatish tezligi maksimal 28 MB/s. Men USB3.0 (bo'lajak yangilanishlar uchun tayyorlangan) -> SATA ko'prigi (tovar nomi aytilmaydi) ni tanladim va bu chegarani yopadi, shuning uchun JMicron JMS567 chipli ko'priklar kabi katta drayverlarni qo'llab -quvvatlaydigan isbotlangan ko'prikni tanlash yaxshidir.. Sotib olishdan oldin, o'zingizning tadqiqotingizni o'tkazing. Men ushbu loyihada 2TB sata disk yordamida tezlik va qattiq disk chegarasi bilan yashay olaman (agar siz kattaroq disklarni joylashtirsangiz, u tan olinadi, lekin OS faqat birinchi 2TB ni ko'radi, shuning uchun qolgan sig'im bo'ladi. yo'qolgan).
  • 12V 2,5 A yoki undan yuqori kuchlanishli adapter. OPI Zero uchun taxminan 500mA normal foydalanishni va standart LFF SATA drayveri uchun 1,5A tepalikni hisoblang. Haddan tashqari o'lcham hech qachon zarar qilmaydi. Mening sozlamamda Yamaha psu (12+5V relslarida ham etarli oqim bera oladigan) afsuski, portlab ketdi: (asosiy kalitni GND ga bir soniya saralash tufayli men oddiy adapterga yopishtirishga majbur bo'ldim. hech bo'lmaganda qutini bir -ikki gramm yengilroq qildi.
  • DC konvertorli DC 12V-> 5V konvertor. Men IronForge bilan bir xil sozlanadigan mini pul ishlatardim, juda yaxshi ishlaydi.

Majburiy emas

Agar siz + 10 $ sarflamoqchi bo'lsangiz, Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) ni olishingiz mumkin, bu sizga Gbe va SATA3 ni beradi. Buning uchun Libra PI simli kutubxonasidan foydalanish mumkin: https://github.com/OrangePiLibra/WiringPi, lekin GPIO pinouti boshqacha bo'lgani uchun bu yozuv doirasidan tashqarida.

Siz shuningdek, SATA ulagichiga ega bo'lgan yangi Orange PI Plus2 yordamida qurilishingiz mumkin va siz cheklovlari bilan birga sata-> usb konvertorlaridan foydalanishni o'tkazib yuborishingiz mumkin. Agar siz FreeBSD yoki boshqa BSDlardan foydalanishni rejalashtirmoqchi bo'lsangiz, Orange PI seriyasi eng yaxshi tanlov bo'lmasligi mumkin, chunki ularning apparat ta'minoti cheklangan (masalan, yuklash uchun USB -tayoqdan foydalanish kerak). BSDlar uchun Raspberry PI dan foydalanishning eng yaxshi tavsiyasi. LCD uchun C kodi va barcha qobiq skriptlari boshqa UNIX tizimlariga ko'chiriladi.

2 -qadam: Uskuna dizayni

Uskuna dizayni
Uskuna dizayni
Uskuna dizayni
Uskuna dizayni
Uskuna dizayni
Uskuna dizayni

Yamaha qutisi bularning barchasini saqlash uchun etarli edi, u Orange PI kompyuteri yoki oddiy Raspi form-faktorli taxtasi uchun etarli joyga ega bo'lmaydi.

Ethernet qutining orqa qismidagi kengaytirgich bilan chiqarildi. Esda tutingki, Orange PI nol faqat 100 mbit/s chekilgan Ethernet interfeysiga ega, agar siz tezroq bo'lishni xohlasangiz, Asus Tinkerboard/RPI3B+/Boshqa Orange PI modellari kabi boshqa kartani ishlatishingiz kerak bo'ladi.

Noto'g'ri PIN -kod - bu loyihada siz qila oladigan yagona va yagona xato, shuning uchun ba'zi qoidalarni qo'llash kerak:

1, har doim ENDdan ENDgacha bir xil rangli kabeldan foydalanishga harakat qiling. Men o'zim qilmagan ba'zi loyihalarda xuddi shunday "xato" qilaman, chunki qo'limda erkak-erkak/erkak-ayol-ayol/ayol-ayol kabeli etarli emas va men 2-bandini yamoqchiman. sxema. Agar siz o'z ishingizni to'g'ri hujjatlashtirmasangiz, bu yillar o'tib bosh og'rig'iga olib kelishi mumkin, bu erda ta'mirlash, yangilash kerak.

2, ulagichlarga bir oz issiq yopishtiruvchi qo'llang. Arduino-starter to'plamidagi mm/mf/ff kabellari yuqori sifatli bo'lmagan holda ishlatilsa, konnektorlar chiqib ketadi. Agar bilsangiz, bu uzoq muddat ishlatiladigan qurilma bo'ladi (ehtimol u buzilmaguncha ishlatasizmi ?!), keyin ularni bir -biriga ulash uchun ulagichlarning OrangePI va LCD tomoniga bir oz issiq yopishtiruvchi surtgan ma'qul. Agar kerak bo'lsa, uni osonlikcha eritish/chizish mumkin.

3, OrangePI nol simlari Yomon xabar shundaki, Orange PI pin Raspberry PI 0/1/2/3 bilan bir xil emas va hatto boshqa Orange PI modellari o'rtasida farq bor. Borishning eng yaxshi usuli - simli kutubxonani olish (Orange PI Zero versiyasi). Rasm biroz chalkash bo'lishi mumkin, lekin bu men topa oladigan eng yaxshi rasmlar edi. Ulardan biri boshqasining 180 graduslik oynasi. CLI grafik bo'lmagan tasvirni tushunish qiyin bo'lsa -da, bu eng to'g'ri.

Siz har doim rozetkalarning 2 uchini bir uchini (+3.3/+5V) POSITIVE, ikkinchisini NEGATIF (bir GND) -> bu ETHERNET portiga qaragan ulagichning oxiri deb hisoblash orqali farq qilishingiz mumkin..

"Wiring PI Zero" jadvalidan sizga faqat bitta ustun kerak bo'ladi, wPI boshqalarni unutadi, chunki ular yo'q edi.

Masalan, LCD_E 15 (ya'ni wPI 15!) Va LCD_RS 16 (ya'ni wPI 16!) Ni ulash uchun ulagichning POSITIVE uchidan pinlarni sanash (qalam yoki kichik tornavida bilan bajarish oson). Bu jismonan 4 pim va 5 pinli pastga tushadi.

4, guruhlash. Agar ishlatilgan pimlarni bir -birining yoniga qo'yish imkoni bo'lsa (ularni guruhlash) har doim shunday tanlagan bo'lsa, bu ularni bir -birining qo'lini yopishtirmasdan ham ushlab turishga majbur qiladi, shuningdek, 2x 4x 6x molex konnektorlari bo'lsa. Bir -birining yonida joylashgan pimlardan foydalaning. Bu erda eng yaxshisi 2-3 soniyalar guruhi (eski kompyuterlardan qutqarilgan o'tish kabellarini ishlatganda ideal).

OrangePI LCD displeyli ulanish uchun ishlatiladigan pinlar:

// WIRINGPI PIN Raqamlaridan foydalaning

#define LCD_E 15 // Pin -ni yoqish #LCD_RS 16 -ni belgilash // Ro'yxatdan o'tish tugmachasini belgilash #LCD_D4 5 -ni belgilash // Ma'lumotlar pimi 4 #LCD_D5 -ni belgilash 6 // Ma'lumotlar pimi 5 #LCD_D6 -ni belgilash // 6 -raqamli ma'lumotni #LCD_D7 11 -ni belgilash // Ma'lumot pin 7

RGB orqa nuri nazorat qilish uchun ishlatiladigan pinlar

$ G yozing 10

$ G yozish 4 1 $ G yozish 7 1

To'q rangli PI nolli wPI pinlari 1, 4, 7. Bu LCD -ni standart ko'k rang bilan taqqoslaganda qila oladigan yagona sehrli yoki orqa yoritgichli yashil yoritgichli LCD, bu erda siz bitta katodga ega bo'lishingiz kerak. ranglar. Qizil, yashil va ko'k. Qaysi kombinatsiyani yoqish kombinatsiyasini o'zgartirish orqali siz asosiy ranglardan turli xil ranglarni aralashtirishingiz mumkin, lekin faqat yuqori uchlari soyasiz, chunki siz rangning yorqinligini boshqarolmaysiz (u yoqilgan yoki o'chirilgan).

Qo'shimcha ranglarni aralashtirish: qizil rangni yashil rangga qo'shish sariq rang beradi; qizil rangni ko'k rangga qo'shish qizil rang beradi; ko'k rangga yashil rang qo'shilsa ko'k bo'ladi; uchta asosiy rangni qo'shganda oq rang paydo bo'ladi.

3 -qadam: Operatsion tizim

Operatsion tizim
Operatsion tizim

OrangeBOX yuklanadi va Armbian linuxi (Debian Stretch asosida) 4.14.18-sunxi yadrosi himoyalangan xavfsizlik devoriga ega, VPN-ga ulanadi va serverdan masofadan zaxiralash buyruqlarini kutadi.

Dizayn printsiplari:

-Diskni to'liq luksga asoslangan shifrlash (qurilmaning o'zida zaxira diskini ochish kaliti yo'q. U vaqtinchalik serverdan ram /dev /shmga ko'chiriladi, disk ochiladi va kalit o'chiriladi. Zaxiralash tugagandan so'ng haydovchi yopiladi va OrangeBox avtomatik ravishda 1 daqiqada o'chadi.)

-Barcha buyruqlar va kalitlar uzoq serverdan yuboriladi (qurilmaning o'zida faqat vpn sertifikati bor), u hech qanday masofaviy serverga kira olmaydi, hatto bu qurilmadan ssh ham xavfsizlik devori bilan himoyalangan.

-Mahalliy fayl tizimlari yuklanishi uchun shifrlanmagan, lekin hech qanday foydali narsani o'z ichiga olmaydi, chunki boshqa tomondan VPN ulanishi juda cheklangan, hatto qurilmani to'liq yo'qotganda ham tajovuzkor hech narsa qila olmaydi.

Armbian Stretch-ni https://www.armbian.com/orange-pi-zero/ saytidan yuklab oling.

Tizimni ishga tushiring:

apt-get update && apt-get upgrade

apt-get sysvinit-core sysvinit-utils-ni o'rnating

/Etc /inittab -ni tahrirlang, barcha konsolni o'chirib qo'yish mumkin, chunki quti boshsiz ishlatiladi. Quyidagi bo'limga sharh bering:

#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

Haqiqiy ochiq kodli bloatware bepul tizimga ega bo'lish uchun qutini qayta ishga tushiring va systemd -ni olib tashlang.

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

Ba'zi paketlarni o'rnating

apt-get install cryptsetup vim htop rsync screen gcc make git

Wiringpi kutubxonasini o'rnating

cd /usr /src

git klon https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build

LCD displey uchun to'q sariq rangli foydalanuvchi yarating

groupadd -g 1000 apelsin

useradd -m -d /home /apelsin -s /bin /bash -u 1000 -g to'q sariq

Sizni kuzatmaydigan qo'riqchi it

apt-get installdog

/Etc/default/watchdog -ga qarang # Kuzatuv itini yuklash vaqtida ishga tushiring? 0 yoki 1 run_watchdog = 1 # qo'riqchi to'xtaganidan keyin wd_keepalive ishga tushirilsinmi? 0 yoki 1 run_wd_keepalive = 1 # Watchdogni ishga tushirishdan oldin modulni yuklash watchdog_module = "none" # Bu erda qo'shimcha qo'riqchi variantlarini ko'rsating (manpaga qarang).

/Etc/watchdog.conf ga qarang

# Hech bo'lmaganda ularni yoqing

maks-load-1 = 24 max-load-5 = 18 max-load-15 = 12

/etc/init.d/watchdog boshlanishi

Kamida 1 ta yadroli ip va 1 ta jarayon bo'lishi kerak:

ildiz 42 0.0 0.0 0 0? Men <10:50 0:00 [qo'riqchi] ildizi 14613 0,0 0,2 1432 1080? SLs 13:31 0:00/usr/sbin/watchdog

Sinov:

Qolgan ma'lumotlarni diskka yozish uchun hamma narsani to'xtatganingizga va sinxronlashtirish va& sinxronlashtirishga ishonch hosil qiling. Keyin ildiz muammosi sifatida:

echo 1> /dev /watchdog

Bir necha soniyadan so'ng, mashina qayta ishga tushishi kerak.

Qo'llanmada aytilganidek:

o Jarayon jadvali to'liqmi?

o Bo'sh xotira etarlimi? o Ajratiladigan xotira etarlimi? o Ba'zi fayllarga kirish mumkinmi? o Belgilangan vaqt ichida ba'zi fayllar o'zgartirilganmi? o O'rtacha ish yuki juda balandmi? o Fayl jadvalining to'lib toshishi yuz berdimi? o Jarayon davom etyaptimi? Jarayon pid fayli bilan belgilanadi. o Ba'zi IP -manzillar pingga javob beradimi? o Tarmoq interfeyslari trafikni qabul qiladimi? o Harorat juda balandmi? (Harorat ma'lumotlari har doim ham mavjud emas.) O Tasodifiy testlarni bajarish uchun foydalanuvchi tomonidan belgilangan buyruqni bajaring. o /etc/watchdog.d saytida topilgan bir yoki bir nechta sinov/ta'mirlash buyruqlarini bajaring. Bu buyruqlar argument sinovi yoki tuzatish bilan chaqiriladi. Agar ushbu tekshiruvlardan birortasi bajarilmasa, qo'riqchi yopiladi. Agar foydalanuvchi belgilagan ikkilikdan tashqari bu testlardan birortasi bir daqiqadan ko'proq davom etsa, mashina ham qayta yuklanadi.

Bu qo'riqchi muntazam x86 arxitekturasida yaxshi ishlagan bo'lishi mumkin, lekin Raspberry PI, Orange PI kabi ARM -ga asoslangan taxtalarda bu menga son -sanoqsiz muvaffaqiyatsiz keldi. Tizim osilgan holatga o'tishi mumkin, u erda hatto qo'riqchi osilgan. Keling, uni konfiguratsiya qilaylik, ehtimol u yillar davomida apt-get yangilanishi bilan yaxshilanadi:(

4 -qadam: dasturiy ta'minot dizayni

Dasturiy ta'minot dizayni
Dasturiy ta'minot dizayni

Zaxira jarayonining o'zi rsync-ga asoslangan (hozirgacha ixtiro qilingan eng yaxshi zaxira vositasi) ma'lumotlar SERVER-> OrangeBOX-dan uzatiladi.

Rsync -dan ma'lumotlarni chiqarib olish, LCD -da chop etilgan zaxira nusxasi borasida harakat paneli bor bo'lgan loyihaning yagona qiyin qismi edi.

Zaxira jarayonini hisoblashning uchta mumkin bo'lgan usuli bor edi:

1, transferning taxminiy vaqtini aniqlash uchun https://wintelguy.com/transfertimecalc.pl kabi formulalar yordamida

Transfer vaqti (d: h: m: s): 0: 02: 44: 00

Taqqoslash uchun: 123 Gb faylni turli tarmoq havolalari (d: h: m: s): T1/DS1 liniyasi (1,544 Mbit/s) - 7: 09: 01: 46 Ethernet (10 Mbit/s) - 1:03: 20:00 Tez Ethernet (100 Mbit / s) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbit / s) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbit / s) - 0: 00: 01: 38

Agar rsync tugasa, skript hisoblashni to'xtatadi. Bu usul faqat taxminiy va ishonchli emas, shuningdek, ulanish tezligi tuzatilmagan, u sekinlashishi, yana tezlashishi mumkin. Bu faqat nazariy hisob.

2, biz qancha ma'lumotlarni sinxronlashtirganimizni aniqlash uchun katalogdagi o'lchovlarni tekshirish. Yuzlab gigabaytli kichik fayllar bilan juda sekinlashishi mumkin (garchi Linuxda du -lar uni qayta ishga tushirsa, ba'zi keshlashni amalga oshiradi)

A xosti -> Zaxiralanadigan server ma'lumotlari Ma'lumotlar: 235 Gb

B xosti -> Bizda hozir to'q sariq rangli mijozlar ma'lumotlari Ma'lumotlar: 112 GB

Delta hajmi - 123 GB.

3, agar fayl tizimi bizning holatimizda/dev/mapper/zaxiralashga bag'ishlangan bo'lsa, biz zaxiramiz qanday ketayotganini aniqlash uchun fayl tizimidan foydalanishning umumiy ko'rsatkichidan foydalanishimiz mumkin va bu juda tez. Bunday holda, biz rsync stdout -ni biron -bir joyga o'tkazishga hojat yo'q, faqat quruq rsync -ni ishga tushiring, u tugaguncha kutib turing, deltani baytda hisoblang va zaxira diskida va voila -da bizda mavjud bo'sh joy bilan tekshiring. Endi chiroyli chiziqli grafik tuzing. Bu men tanlagan usul edi va bu erda mening skriptim:

#!/bin/bash

# OrangeBOX uchun NLD tomonidan # Zaxira taraqqiyoti kalkulyatori # Versiya: 0.2 (2018/03/05) # # Uni cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # dan imtiyozsiz foydalanuvchi sifatida ishga tushiring. Bu skript faqat ma'lumotlarni LCD displeyda aks ettirish uchun javobgardir, u # bilan asosiy dastur bilan joylashuv va blokirovka fayllari orqali bilvosita aloqa qiladi. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # zaxiralash boshida # diskdan foydalanish TFILE = "$ HOME/trans.size" # oldindan hisoblangan transfer hajmi BFILE = "$ HOME/ backup.lck " # boshlangan holatni aniqlaydi FFILE =" $ HOME/backup.fin " # tugallangan holatni aniqlaydi LFILE1 =" $ HOME/lcd1.bar " # LCD ishlanmasi ko'rsatkichi ma'lumotlari LFILE2 =" $ HOME/lcd2.bar " # LCD taraqqiyoti indikator ma'lumotlari SHUTDOWN = "1" # 1 bo'lsa, u boshqa skriptni ishga tushiradi, bu zaxira oxirida qutini o'chiradi BACKUP_CURRENT = "0" # Boshlanishi kerak, lekin hisoblab chiqiladi DRIVE_SIZE = "" # Disk hajmi baytda (ikkilamchi) tekshiring) LCD = "sudo /bin /lcd" funktsiyasi is_mount () {grep -q "$ 1" /proc /mounts status = $? } funktsiya qizil () {sudo /bin /lcdcolor qizil} funktsiya yashil () {sudo /bin /lcdcolor yashil} funksiya ko'k () {sudo /bin /lcdcolor ko'k} # Toza holat (yuklashda bootup_display.sh tomonidan o'rnatiladi). Zaxira qilinmaydi, LCD holatini buzmang. Davom etayotgan zaxira mavjud bo'lganda faqat taraqqiyotni ko'rsating => Boshlang'ich fayl yo'q va fin fayli yo'q = agar [! -f $ BFILE] && [! -f $ FFILE]; keyin 1 fi # dan chiqing, agar zaxira nusxasi tugagan bo'lsa, bu skript buni ko'rsatadi va qulflarni olib tashlaydi # keyingi ishga tushguncha qayta ishga tusha olmaydi. agar [-f $ FFILE]; keyin yashil $ LCD "Zaxiralash" "** Bajarildi **" echo "Zaxiralash tugallandi" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Agar [$ SHUTDOWN == "1"] zaxiralash tugallansa; keyin "O'chirish skriptini ishga tushirmoqdamiz …"/home/orange/shutdown.sh & fi exit 0 fi # Shu nuqtadan buyon skript YO'QOLGAN zaxira bo'lsa bajariladi, shuning uchun barcha xatolar LCD displeyda chop etiladi va skriptga sabab bo'ladi. # abort qilish uchun, lekin u backup.lck faylini olib tashlamaydi, shuning uchun bu yerga qayta -qayta # kirib, shartlarni bekor qiladi. is_mount $ BACKUP_DRIVE, agar [$ status -ne 0]; keyin qizil $ LCD "ERR: zaxira disk" "o'rnatilmagan!" echo "Zaxira drayveri o'rnatilmagan" chiqish 1 fi agar [! -s $ TFILE]; keyin qizil $ LCD "ERR: transfer" "bo'sh" echo "Transport hajmini hisoblash fayli bo'sh." chiqish 1 fi BACKUP_OVERALL = $ (bosh -1 $ TFILE | tr -d '\ n') agar [-z $ BACKUP_OVERALL]; keyin qizil $ LCD "ERR: O'lchamni qayta o'qish" "" serverdan yaroqsiz "echo" Zaxira umumiy hajmini qayta o'qish noto'g'ri 1 "chiqish 1 fi bo'lsa!

Kod oddiy bo'lsa -da, u nima qilayotgani haqida ba'zi ta'riflar:

1, agar BFILE yoki FFILE mavjud bo'lmasa (aniq ishga tushirilgandan keyingi holat), bu zaxira jarayoni yo'qligini bildiradi, shuning uchun hech narsa qilmang. Shunday qilib, siz hostname, ip, uptime va boshqalar kabi yuklash haqida kerakli ma'lumotlarni chizishingiz mumkin va bu buzilmaydi.

2, keling is_mount $ BACKUP_DRIVE bo'limiga o'tamiz. Eslatib o'tamiz, biz bu erga borishning yagona yo'li - BFILE mavjud bo'lishi uchun zaxira nusxasi ishga tushirilgan. Endi kod turli xil xatolarni tekshiradi, masalan, zaxira drayveri o'rnatilganmi? yoki boshqa xatolar. Esda tutingki, bu faqat DISPLAY dasturi, hatto hajmi zaxiradan oshsa ham, u hech narsani bekor qilmaydi.

3, OK barcha xatolar tekshiruvi foiz grafigini hisoblash uchun tozalangan vaqt. Birinchidan, skript hozirda zaxira fayl tizimida baytda ishlatiladigan bo'sh joyning "oniy tasvirini" oladi va uni VFILE -da saqlaydi. Buning maqsadi nima: bash skriptining fuqaroligi yo'q, u qatllar orasidagi ma'lumotlarni yo'qotadi, shuning uchun agar siz oldingi ijrodan ba'zi ma'lumotlarni "eslashni" xohlasangiz, uni biron bir joyda saqlashingiz kerak. Bizning holatimizda bu oddiy matnli fayl. Oddiy qilib aytganda, aytaylik, bizning START_POS - 1 Gb (bizda mavjud ma'lumotlar), biz zaxiralashni xohlaymiz - +2 Gb va umumiy disk hajmi - 10 Gb.

4, Keyingi safar skript VFILE ishlaganda mavjud va bu qayta o'qiladi (shuning uchun biz haydovchi bo'sh bo'lmagan holatda boshlang'ich pozitsiyasi nima ekanligini bilamiz) BACKUP_CURRENT ni hisoblash uchun hozirda ishlatilgan maydonning uchburchagi zaxira drayvida minus boshlang'ich pozitsiyasi, biz oxirgi turda VFILE -da saqlagan narsamiz (yana bu zaxira boshlanganda diskda bo'lgan ma'lumotlar). Skript ichki baytlar bilan ishlaydi, lekin yarim soatdan keyin biz 500 MB ma'lumotni zaxiralashni soddalashtirish uchun formulani BACKUP_CURRENT = 1.5GB - 1GB (boshlang'ich holati) => bo'lar edi, bu bizga 500 MB haqiqiy ma'lumotlarni qaytarib beradi. biz hozirgacha nimani qo'llab -quvvatladik. Siz ko'rishingiz mumkinki, zaxira nusxasining boshida qanday asl ma'lumotlar borligini hisobga olmagan holda, bu hajmni hisoblash muvaffaqiyatsiz bo'lar edi, chunki hozirda diskda 1 gigabayt ma'lumot borligini bilmagan holda, 1,5 gigabayt bo'sh joy ishlatilgan. oldingi zaxira nusxasidan kelgan, shuning uchun server bizga 500 MB o'rniga 1,5 Gb ma'lumot yuborgan deb taxmin qilinadi.

5, BACKUP_OVERALL o'qiladi, bu ma'lumotlar server tomonidan dastlabki rsync amalga oshirilganda hisoblab chiqilgan (shuning uchun bu Server-> OrangeBOX-dan zaxiralanadigan bayt miqdorini o'z ichiga olgan tashqi ma'lumotlar manbai). Bu qiymat diskdagi umumiy BEPUL bo'sh joy bo'yicha tekshiriladi va agar undan oshsa, LCDda xato xabari ko'rsatiladi va skript bajarilishini to'xtatadi. Yana shuni esda tutingki, bu skriptning hammasi faqat ko'rsatiladi, u zaxira jarayoniga xalaqit bermaydi. Agar siz diskdagi fayllarni tozalasangiz yoki fayllar miqdori masofadan o'zgarsa, shuning uchun BACKUP_OVERALL bir nuqtada o'zgaradi.

6, nihoyat, biz ikkinchi darajali tekshiruvlardan o'tdik, biror narsani ko'rsatish vaqti keldi. Skript oddiy C ilovasi yordamida konsolda va LCDda ma'lumotlarni ko'rsatadi. Orqa fon ko'k rangga o'zgartirildi, bu zaxira nihoyat boshlanganini va jarayonni PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL) formulasi bo'yicha hisoblanganligini ko'rsatadi. Bu joriy foizni oladigan asosiy foiz hisobi, bizning misolimizda 0.5GB*100/2GB = 25%.

7, raqamlar ham baytdan Mega/Giga baytiga o'zgartiriladi va agar u 1 Gb dan past bo'lsa, ekran avtomatik ravishda MBda ko'rsatiladi.

8, bizning holatimizda bu xaritada qolishi kerak bo'lgan yagona narsa - bu 20 ustunli LCD displeyda 25%. Bu bizning misolimizda 25 * 20/100 = 5 bo'ladi. Hozirgi vaqtda LCD dasturi yordamida yangilanish amalga oshirilmoqda, har safar qo'ng'iroq qilganingizda u butun ekranni qayta chizadi. Shunday qilib, bu holda, ekranda 5 ta hashmarks # chizish uchun 5 marta "loop" ishga tushadi, bu har bir turda chirkin miltillovchi bo'lib ko'rinadi, buning o'rniga LFILE1 va 2 -ga hisoblangan taraqqiyot paneli ma'lumotlarini yozaman. 5 turda ##### bo'lishi kerak va bu qayta o'qiladi va LCD displeyda ko'rsatiladi. Siz sdcard -ni qo'shimcha yozish operatsiyalaridan qutqarish uchun LFILE1 va 2 -ni ramdisk -ga qo'yishingiz mumkin, bu men uchun hech qanday muammo tug'dirmadi, skript har daqiqada bir marta cron -dan ishlaydi.

9, zaxira nusxasi tugagandan so'ng, rsync ishlaydigan serverdan boshqa skript FFILE (Finish File) ga tegadi. Keyingi loopda backup_progress.sh zaxiralash tugaganligini ko'rsatadi va ixtiyoriy ravishda OrangeBOXni o'chirish uchun boshqa skriptni chaqiradi. U o'z qulflangan fayllarini o'chirib tashlaydi, shuning uchun keyingi bajarishni imkonsiz qiladi, shuning uchun ham, agar siz ushbu skript ishga tushganda keyingi daqiqada o'chirishni yoqmasangiz ham, u darhol o'chadi, chunki BFILE yo'q va FFILE yo'q. Shuning uchun, agar zaxira nusxasi qayta ishga tushirilmasa, u zaxira tugallangan xabarni noma'lum muddatga ko'rsatadi.

Masofaviy zaxira skript (orange-remote.sh):

Siz zaxiralash uchun ssh kalitini va drayv uchun luks shifrlash kalitini yaratishingiz kerak bo'ladi. Masofaviy zaxira nusxasini qo'lda birinchi marta ishga tushirganingizda, u to'q sariq rangli qutilarga mezbon barmoq izlarini xostlar faylida saqlaydi (shu vaqtdan boshlab u avtomatik ravishda cron bilan ishlashi mumkin).

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

Qattiq disk identifikatorini bilish uchun uuid, blkid -ni ishga tushiring yoki tegishli/dev/disk/kataloglarini qidiring.

Agar siz hamma narsani zaxiralashni xohlamasangiz, chiqarib tashlashni o'z ichiga olgan katalogni sozlash mumkin. Bu juda zerikarli jarayon, chunki rsync uchun, agar siz strukturaning tubida bitta kichik katalogni chiqarib tashlamoqchi bo'lsangiz, quyidagilarni qilishingiz kerak:

+ /a

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

Ushbu skript OrangeBOX -da buyruqlarni masofadan turib bajarayotgani uchun, u tomondan qaytariladigan o'zgaruvchilarni nazorat qila olmaydi, shuning uchun men masofadan haydovchini /tmp/contmsg.txt -ga ochish haqidagi xabarni chiqaradigan aqlli fokuslardan foydalanaman, keyin tahlil Muvaffaqiyatli yoki yo'qligini ko'rish uchun, agar bo'lmasa, u rsync ikkilikini bajarilmaydigan qilib o'zgartiradi, shuning uchun rsync ma'lumotlarni SDcard-ni to'ldiruvchi OrangePIs rootfs-ga yuklashga urinmaydi. Buni imkonsiz qilish uchun chattr +i /mnt /backup -da o'zgarmas bitni o'rnatish yaxshi amaliyotdir.

Oldindan hisoblash serverda amalga oshiriladi, shuning uchun keyingi bosqichda bu fayl OrangeBOXga yuborilishi kerak.

Asosiy zaxira ((i = 0; i <100; i ++)); chunki past sifatli DSL/Kabelli Internetga ulanish rsync tez -tez uzilib qolishi mumkin. Agar u muvaffaqiyatli yakunlansa, tsikl yana takrorlanmasdan sinadi. Bu yaxshi operatsion tizimlar bilan bemalol ishlaydi, lekin agar biron sababga ko'ra masofaviy quti derazalar bo'lsa va NTUSER. DAT -da odatdagidek kirish taqiqlangan bo'lsa, rsync xato kodini qaytaradi va bu pastadir 100 marta bajariladi va keyin ham muvaffaqiyatsiz bo'ladi.

5 -qadam: Yopish va bajariladigan ishlar ro'yxati

Yopish va bajariladigan ishlar ro'yxati
Yopish va bajariladigan ishlar ro'yxati
Yopish va bajariladigan ishlar ro'yxati
Yopish va bajariladigan ishlar ro'yxati

Mening ko'rsatmam, 10 dollarlik kompyuterdan qanday qilib yaxshiroq, moslashtiriladigan qurilmani o'zingiz yaratishingiz mumkinligini, Buffalodan do'zaxdan o'tib ketadigan NAS qurilmalari, g'aroyib ichki bo'linishlar, bandbokslar bilan ishlaydigan linuxlarni ajratish asboblari bilan boshqarilishini ko'rsatib beradi. Windows -ning dasturiy ta'minoti, yopiq dasturiy ta'minot, noto'g'ri hujjatlar va qo'llab -quvvatlash va qancha pul sarflasangiz ham, OrangeBox qanchalik zo'r ko'rinishini eslatib o'tmasdan, zaxira nusxasini ko'rsatadigan rivojlanish indikatoriga ega bo'lmaysiz (hatto u bilan to'q sariq CAT5 kabelidan foydalanaman: D).

Kichik kompyuterlar tobora kuchliroq bo'lib, bir xil <100 $ narxlar chizig'ini saqlagan holda, biz ularni ko'proq vazifalar uchun ishlatishimiz mumkin. Hozirgi kunda Gbe Ethernet portlari 1-2 yil ichida juda keng tarqalgan bo'lib, bu taxtalar xotirasi keskin oshadi va ularni ZFS-ga asoslangan zaxira tizimlari uchun ham ishlatish mumkin.

-C dasturi bo'yicha donning yaxshi rivojlanish ko'rsatkichi (qarang WasserStation mening boshqa loyihalarimdan biri). Hozirda lcdPuts (lcd, line1) bilan belgi rejimida ishlatiladigan faqat # hashmark # ta belgi, uni 1 -ustuni 5 qismga bo'lish uchun belgilar LCD -laridan foydalanganda ham takomillashtirish mumkin, va asosiy C dasturi 25 kabi butun sonni olib chiqib ketishi mumkin. harakat paneli grafik LCD yordamida to'g'ri yoki yanada yaxshilandi

-Yangi va yangi zaxira nusxalarini yaratish va ularni boshqa joylarga ko'chirish uchun olinadigan hdd-ga ega bo'lish imkoniyati (agar quti bo'sh diskni aniqlasa, u qabul qilinganidan keyin uni shifrlash kaliti bilan avtomatik formatlashi kerak).

-Agar siz o'z ishingizni makerbot yordamida chop qilmoqchi bo'lsangiz, OrangeNAS siz uchun qiziq bo'lishi mumkin:

Tavsiya: