Cuprins:

OrangeBOX: Dispozitiv de stocare securizat de rezervă pe bază de OrangePI: 5 pași
OrangeBOX: Dispozitiv de stocare securizat de rezervă pe bază de OrangePI: 5 pași

Video: OrangeBOX: Dispozitiv de stocare securizat de rezervă pe bază de OrangePI: 5 pași

Video: OrangeBOX: Dispozitiv de stocare securizat de rezervă pe bază de OrangePI: 5 pași
Video: SIREN HEAD în VIAȚA REALĂ ! - NU VETI CREDE CE S-A INTAMPLAT ! 2024, Noiembrie
Anonim
OrangeBOX: Dispozitiv de stocare de rezervă securizat bazat pe OrangePI
OrangeBOX: Dispozitiv de stocare de rezervă securizat bazat pe OrangePI
OrangeBOX: Dispozitiv de stocare de rezervă securizat bazat pe OrangePI
OrangeBOX: Dispozitiv de stocare de rezervă securizat bazat pe OrangePI

OrangeBOX este o casetă de rezervă de stocare la distanță all-in-one pentru orice servere.

Serverul dvs. poate fi infectat, corupt, șters și toate datele dvs. sunt încă sigure pe OrangeBOX și cărora nu le-ar plăcea o misiune imposibilă, cum ar fi dispozitivul de rezervă, ceea ce doar conectați și vedeți un indicator de progres fără a face nimic mai mult (sperați pur și simplu magia fumul nu va ieși la final:)).

OrangeBOX este primul meu proiect, care este în mare parte un software, nu un hack hardware. Este practic un NAS construit la comandă, cu un LCD atașat.

Pasul 1: Piese hardware

Piese hardware
Piese hardware
Piese hardware
Piese hardware
Piese hardware
Piese hardware

Orange PI zero este un computer open-source cu o singură placă. Poate rula Android 4.4, Ubuntu, Debian. Folosește AllWinner H2 SoC și are 256 MB / 512 MB DDR3 SDRAM (versiunea 256 MB este versiunea standard. Orange Pi Zero este pentru oricine dorește să înceapă să creeze cu tehnologie - nu doar să o consume. Este un instrument simplu, distractiv, util pe care îl aveți poate folosi pentru a începe să preia controlul asupra lumii din jurul tău (https://www.orangepi.org/orangepizero/). Deci este exact pentru noi să continuăm cu asta:)

  • Cutie metalică / din plastic / lemn (am folosit o cutie externă de cd-rw Yamaha veche)
  • Orange PI Zero sau mai bun (pinout-ul GPIO s-ar putea schimba dacă utilizați un alt model)
  • Ecrane LCD 2x20 RGB
  • Orice unitate USB SFF 3.5 / LFF 2.55
  • Sata -> adaptor USB. Rețineți că, deși OrangePI nu impune o limită superioară pentru capacitatea maximă a unității, totuși o mulțime de punți USB-la-SATA (2TB max). PI Zero portocaliu pe care îl folosesc are doar un singur port USB 2.0 cu o rată de transfer efectivă de maxim 28 MB / s. Am ales un USB3.0 (pregătit pentru viitoarele upgrade-uri) -> SATA bridge (marca nu va fi menționată) și depășește limita, așa că este mai bine să alegi un bridge dovedit a fi compatibil cu unități mai mari, cum ar fi JMicron JMS567 bridge-based bridge. Faceți propriile cercetări înainte de a cumpăra una. Pot trăi cu limita de viteză și hard disk folosind o unitate sata de 2 TB în acest proiect (dacă introduceți unități mai mari, va fi recunoscut, dar sistemul de operare va vedea doar primii 2 TB din acesta, astfel încât restul capacității va fi pierdut).
  • Adaptor de 12V 2,5 A sau mai mare. Calculați aproximativ 500mA utilizare normală pentru OPI Zero și 1,5A de vârf pentru o unitate LFF SATA standard. Supradimensionarea nu doare niciodată. În configurația mea, Yamaha psu (ceea ce ar fi putut furniza curent mai mult decât suficient pe ambele șine de 12 + 5V) din păcate a explodat: (datorită sortării comutatorului principal la GND pentru o secundă, așa că a trebuit să lipesc un adaptor obișnuit, la cel puțin a făcut cutia cu câteva grame mai ușoară.
  • Convertor Buck DC-DC 12V-> 5V. Am folosit același mini buck reglabil ca și IronForge, funcționează perfect.

Opțional

Dacă doriți să cheltuiți + 10 $, puteți obține Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), care este un factor de formă similar și vă oferă Gbe și SATA3. Pentru aceasta, biblioteca de cabluri Libra PI poate fi utilizată: https://github.com/OrangePiLibra/WiringPi, dar, deoarece pinout-ul GPIO este diferit, este în afara scopului acestei scrieri.

Puteți face această construcție și cu noul Orange PI Plus2 care are conector SATA și puteți sări peste utilizarea convertoarelor sata-> USB, împreună cu limitările lor. Dacă intenționați să utilizați FreeBSD sau alte BSD-uri, seria Orange PI ar putea să nu fie cea mai bună alegere, deoarece suportul lor hardware este limitat (de exemplu, trebuie să utilizați stick USB pentru a porni). Pentru BSD-uri, este cel mai bun sfat să utilizați Raspberry PI. Atât codul C pentru ecranul LCD, cât și toate scripturile shell sunt portabile pentru orice alte sisteme UNIX.

Pasul 2: Proiectare hardware

Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware
Proiectare hardware

Cutia Yamaha a fost suficientă pentru a stoca toate acestea, nu ar avea suficient spațiu pentru un PC Orange PI sau o placă cu factor de formă Raspi obișnuită.

Ethernet a fost scos cu un extensor în partea din spate a cutiei. Amintiți-vă că Orange PI zero are o interfață Ethernet 100mbit / s numai dacă doriți mai repede, va trebui să utilizați o altă placă, cum ar fi Asus Tinkerboard / RPI3B + / Alte modele Orange PI.

Codul PIN greșit este singura greșeală pe care o puteți face în acest proiect, prin urmare merită să aplicați câteva principii ale regulii generale:

1, Încercați întotdeauna să utilizați același cablu colorat de la END la END. Eu însumi comit aceeași „greșeală” în unele proiecte în care nu o fac, pur și simplu pentru că nu am la îndemână cabluri bărbat-bărbat / bărbat-femeie / femeie-femeie la îndemână și împachetez 2 împreună doar pentru a continua circuitul. Dacă nu vă documentați corect munca, acest lucru poate duce la dureri de cap ani mai târziu, în cazul în care trebuie să faceți o reparație, actualizați.

2, Aplicați un anumit adeziv la conectori. În cazul utilizării acestor cabluri de tip arduino-starter stil mm / mf / ff care nu sunt de calitate superioară, este destul de obișnuit (mai ales dacă vă deplasați / transportați dispozitivul) ca conectorii să alunece. Dacă știți că va fi un dispozitiv de utilizare pe termen lung (eventual folosiți până când se sparge ?!), atunci este mai bine să aplicați un pic de hotglue atât pe partea OrangePI cât și pe partea LCD a conectorilor pentru a le menține împreună. Acest lucru poate fi ușor topit / zgâriat mai târziu, dacă este necesar.

3, cablarea zero OrangePI Vestea proastă este că pin-ul Orange PI NU este același cu Raspberry PI 0/1/2/3 și există chiar diferență între alte modele Orange PI. Cel mai bun mod de a merge este să obțineți biblioteca de cabluri (versiunea Orange PI Zero). Imaginea ar putea fi un pic confuză, dar acestea au fost cele mai bune pe care le-am putut găsi. Una este o oglindă de 180 de grade a celeilalte. Deși imaginea CLF non-grafică ar putea fi mai dificil de înțeles, este cea mai simplă.

Puteți diferi oricând de capătul 2 al soclurilor, considerând un capăt ca fiind capătul POZITIV cu (+ 3.3 / + 5V) și altul ca capătul NEGATIV (un GND) -> acesta este capătul conectorului orientat spre portul ETHERNET.

Din tabelul Wiring PI Zero veți avea nevoie doar de o singură coloană, wPI uită de celelalte, ca și cum nu ar fi acolo.

De exemplu, pentru a conecta LCD_E 15 (adică wPI 15!) Și LCD_RS 16 (adică wPI 16!) Numărați pinii de la capătul POSITIV al conectorului (ușor de făcut cu un stilou sau o șurubelniță mică). Aceasta va scădea fizic cu 4 pini și 5 pini.

4, grupați-vă. Dacă există posibilitatea de a pune pinii folosiți unul lângă celălalt (grupându-i) alegeți întotdeauna acest lucru, îi face să aibă un punct unul de celălalt chiar și fără adeziv și, de asemenea, în alte proiecte când aveți conectori 2x 4x 6x molex puteți trebuie doar să profitați de pinii unul lângă altul. Aici cel mai bun lucru pe care îl puteți face este grupul de 2-3 (ideal atunci când utilizați cabluri jumper recuperate de pe PC-uri vechi).

Pinii folosiți pentru conexiunea ecranului LCD OrangePI:

// UTILIZAȚI NUMERE PIN WIRINGPI

#define LCD_E 15 // Activați pinul #define LCD_RS 16 // Înregistrați selectați pinul #define LCD_D4 5 // Pinul de date 4 #define LCD_D5 6 // Pinul de date 5 #define LCD_D6 10 // Pinul de date 6 #define LCD_D7 11 // Pinul de date 7

Pinii folosiți pentru controlul luminii de fundal RGB

$ G scrie 1 0

$ G scrie 4 1 $ G scrie 7 1

Orange PI zero wPI pinii 1, 4, 7. Singura magie pe care o poate face acest LCD în comparație cu ecranul LCD fix albastru sau verde fix în care aveți un singur catod care trebuie tras în jos la GND, care are 3 pentru cei 3 culori. Roșu, verde și albastru. Schimbând combinația dintre care este activată, puteți amesteca culori diferite din aceste culori de bază, dar numai capetele înalte nu au nuanțe, deoarece nu puteți controla luminozitatea unei culori (este activată sau dezactivată).

Amestecarea culorii aditive: adăugarea roșu la verde produce galben; adăugarea de roșu la albastru produce magenta; adăugarea de verde la albastru produce cyan; adăugând toate cele trei culori primare împreună se obține alb.

Pasul 3: Sistem de operare

Sistem de operare
Sistem de operare

OrangeBOX pornește și Armbian linux (bazat pe Debian Stretch) 4.14.18-sunxi kernel cu un mediu securizat firewall, se conectează la un VPN și așteaptă comenzile de rezervă de la distanță de la server.

Principii de proiectare:

-Criptare completă a discului bazată pe luks (dispozitivul în sine nu conține cheia pentru deschiderea unității de rezervă. Va fi copiat temporar de pe serverul de la distanță pe ram / dev / shm, unitatea s-a deschis și cheia a fost ștearsă. După finalizarea backupului unitatea este închisă și OrangeBox se oprește automat în 1 minut.)

-Toate comenzile și tastele sunt trimise de pe serverul de la distanță (dispozitivul în sine conține doar un certificat VPN) nu are niciun acces la serverul de la distanță, chiar și ssh de pe acest dispozitiv este firewall

-Sistemele de fișiere locale necriptate pentru a putea porni, dar nu conține nimic util și din moment ce legătura ascendentă VPN este extrem de restricționată la celălalt capăt, chiar și cu pierderea completă a dispozitivului, un atacator nu poate face nimic

Descărcați Armbian Stretch de pe

Puneți sistemul în funcțiune:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Editați / etc / inittab, toată consola poate fi dezactivată, deoarece caseta va fi folosită ca fără cap. Comentează următoarea secțiune:

# 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

Reporniți caseta și eliminați systemd pentru a avea un sistem open source real și gratuit.

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

Instalați câteva pachete

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

Instalați biblioteca wiringpi

cd / usr / src

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

Creați un utilizator portocaliu pentru afișajul LCD

groupadd -g 1000 portocaliu

useradd -m -d / home / orange -s / bin / bash -u 1000 -g orange orange

Câinele de pază care nu te supraveghează

apt-get install watchdog

Privind la / etc / default / watchdog # Porniți watchdog la momentul pornirii? 0 sau 1 run_watchdog = 1 # Porniți wd_keepalive după oprirea câinelui de pază? 0 sau 1 run_wd_keepalive = 1 # Încărcați modulul înainte de a începe watchdog watchdog_module = "none" # Specificați aici opțiuni suplimentare pentru watchdog (vezi pagina de mana).

Privind la /etc/watchdog.conf

# Activați-le cel puțin

sarcină maximă-1 = 24 sarcină maximă-5 = 18 sarcină maximă-15 = 12

/etc/init.d/watchdog start

Ar trebui să existe cel puțin 1 fir de nucleu și 1 proces:

rădăcină 42 0,0 0,0 0 0? I <10:50 0:00 [watchdogd] root 14613 0,0 0,2 1432 1080? SL 13:31 0:00 / usr / sbin / watchdog

Testare:

Asigurați-vă că opriți totul și efectuați o sincronizare && sincronizare && sincronizare pentru a scrie restul datelor pe disc. Apoi, ca problemă rădăcină:

ecou 1> / dev / watchdog

După câteva secunde, aparatul ar trebui să repornească.

După cum se precizează în manual:

o Este tabelul de proces plin?

o Există suficientă memorie liberă? o Există suficientă memorie alocabilă? o Sunt accesibile unele fișiere? o S-au schimbat unele fișiere într-un anumit interval? o Sarcina medie de lucru este prea mare? o A avut loc o revărsare a tabelului de fișiere? o Mai rulează un proces? Procesul este specificat de un fișier pid. o Unele adrese IP răspund la ping? o Interfețele de rețea primesc trafic? o Este temperatura prea ridicată? (Datele de temperatură nu sunt întotdeauna disponibile.) O Executați o comandă definită de utilizator pentru a efectua teste arbitrare. o Executați una sau mai multe comenzi de testare / reparare găsite în /etc/watchdog.d. Aceste comenzi sunt apelate cu testul sau repararea argumentului. Dacă oricare dintre aceste verificări eșuează, câinele de pază va provoca o oprire. În cazul în care oricare dintre aceste teste, cu excepția binarului definit de utilizator, durează mai mult de un minut, aparatul va fi repornit și el.

Acest câine de pază ar putea funcționa OK pe arhitecturile obișnuite x86, dar pe plăcile bazate pe ARM, cum ar fi Raspberry PIs, Orange PI, mi-a eșuat de nenumărate ori. Sistemul poate intra în stări de agățare în care atârnă chiar și câinele de pază. Să-l configurăm oricum, poate va fi îmbunătățit cu un upgrade apt-get de-a lungul anilor:(

Pasul 4: Proiectare software

Proiectare software
Proiectare software

Procesul de backup în sine este bazat pe rsync (cel mai bun instrument de backup inventat vreodată), datele fiind împinse de la SERVER-> OrangeBOX.

Extragerea datelor din rsync a fost singura parte provocatoare a proiectului de a avea o bară de progres despre copierea de rezervă tipărită pe ecranul LCD.

Au existat 3 modalități posibile de a calcula progresul backupului:

1, folosind formule precum https://wintelguy.com/transfertimecalc.pl pentru a determina durata aproximativă a transferului

Timp de transfer (d: h: m: s): 0: 02: 44: 00

Pentru comparație: Timp estimat pentru transferul fișierului de 123 GB pe diferite legături de rețea (d: h: m: s): linie T1 / DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Fast Ethernet (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38

Dacă rsync se termină, acesta semnalează scriptul pentru a opri calculul. Această metodă este doar una aproximativă și nu este fiabilă, de asemenea, viteza legăturii nu este fixă, poate încetini, accelera din nou. Acesta este doar un calcul teoretic.

2, Efectuând verificări de dimensiune în director pentru a determina cât de multe date am sincronizat deja. Poate deveni foarte lent cu sute de fișiere mici GB (deși du -s în Linux face unele cache dacă îl reexecutați)

Gazdă A -> Datele serverului care urmează să fie făcute backup Dir. Date: 235 GB

Gazda B -> datele clientului Orange Box pe care le avem în acest moment Direcția datelor: 112 GB

Delta este de 123 GB.

3, Dacă sistemul de fișiere este dedicat ca în cazul nostru / dev / mapper / backup, putem profita de indicatorul general de utilizare a sistemului de fișiere pentru a determina cum progresează backupul nostru și acest lucru este cu adevărat al naibii de rapid. În acest caz, nici măcar nu este nevoie să conectăm rsync stdout oriunde, pur și simplu rulați un rsync uscat, așteptați până se finalizează, calculați delta în octeți și controlați acest lucru cu spațiul liber ce avem pe unitatea de rezervă și voila putem acum faceți un grafic de bare frumos. Aceasta a fost metoda pe care am ales-o și iată scriptul meu pentru aceasta:

#! / bin / bash

# Backup Progress Calculator for OrangeBOX by NLD # Versiune: 0.2 (2018/03/05) # # Rulați-l ca utilizator neprivilegiat din cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Acest script este responsabil doar pentru afișarea datelor pe LCD, comunică # cu programul principal indirect prin fișiere de poziție și blocare. BACKUP_DRIVE = "/ dev / mapper / backup" VFILE = "$ HOME / start.pos" # utilizarea discului la începutul backupului TFILE = "$ HOME / trans.size" # dimensiunea totală a transferului precalculată BFILE = "$ HOME / backup.lck "# determină starea inițiată FFILE =" $ HOME / backup.fin "# determină starea terminată LFILE1 =" $ HOME / lcd1.bar "# LCD indicator indicator data LFILE2 =" $ HOME / lcd2.bar "# LCD progress date indicator SHUTDOWN = "1" # Dacă 1 va iniția un alt script care închide caseta la sfârșitul backupului BACKUP_CURRENT = "0" # Trebuie inițializat, dar va fi calculat DRIVE_SIZE = "" # Dimensiunea unității în octeți (secundar verifica) LCD = "sudo / bin / lcd" function is_mount () {grep -q "$ 1" / proc / mounts status = $? } funcție roșu () {sudo / bin / lcdcolor roșu} funcție verde () {sudo / bin / lcdcolor verde} funcție albastru () {sudo / bin / lcdcolor albastru} # Stare clară (setată la boot de bootup_display.sh). Nu există nicio copie de rezervă în curs de desfășurare, NU încurcați LCD-ul # status. Afișați progresul numai în cazul în care există o copie de rezervă în curs => Fără fișier de pornire ȘI Fără fișier fin = ieșiți dacă [! -f $ BFILE] && [! -f $ FFILE]; apoi ieșiți 1 fi # Dacă copia de rezervă a terminat, acest script va afișa acest lucru și va elimina blocările # pentru a nu putea rula din nou până la următoarea inițiere. dacă [-f $ FFILE]; apoi verde $ LCD "Backup" "** Finalizat **" echo "Backup Finalizat" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Backup terminat de curățat dacă [$ SHUTDOWN == "1"]; apoi ecou "Executing shutdown script …" /home/orange/shutdown.sh & fi exit 0 fi # Din acest moment scriptul se execută DOAR dacă există o copie de siguranță PERSOANĂ # de aceea toate erorile vor fi tipărite pe LCD și vor cauza scriptul # pentru a anula totuși nu va elimina fișierul backup.lck, așa că va intra aici # iar și iar și va evaula condițiile. is_mount $ BACKUP_DRIVE dacă [$ status -ne 0]; apoi roșu $ LCD "ERR: Unitatea de rezervă" "nu este montată!" echo "Unitatea de rezervă nu este montată" ieșirea 1 fi dacă [! -s $ TFILE]; apoi roșu $ LCD "ERR: transfile" "este gol" ecou "Fișierul de calcul al dimensiunii transportului este gol." exit 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; apoi roșu $ LCD "ERR: Redare dimensiune" "de pe server nevalidă" ecou "Redarea dimensiunii generale a copiei de rezervă este nevalidă 1" ieșire 1 fi dacă!

Deși codul este simplu, iată câteva descrieri ce face:

1, dacă BFILE sau FFILE nu există (care este starea după o pornire clară) care indică faptul că nu există un proces de backup, deci NU faceți nimic, pur și simplu renunțați. În acest fel, puteți grafica orice informații frumoase doriți cu privire la pornire, cum ar fi numele gazdei, ip-ul, timpul de funcționare etc. și nu vor fi deranjate.

2, Să trecem la secțiunea is_mount $ BACKUP_DRIVE. Doar un memento, singurul mod în care am ajuns aici este că a fost pornită o copie de rezervă, astfel încât să existe BFILE. Acum, codul face doar diferite verificări de eroare, cum ar fi unitatea de rezervă montată? sau alte erori. Amintiți-vă că acesta este un program numai DISPLAY, chiar dacă dimensiunea ar depăși copiile de rezervă, nu va anula nimic.

3, OK toate verificările de eroare au eliminat timpul pentru a calcula graficul procentual. În primul rând, scriptul ia o „instantaneu” a spațiului utilizat în octeți pe sistemul de fișiere de rezervă chiar acum și îl stochează în VFILE. Care este scopul acestui lucru: un script bash este apatrid, pierde date între execuții, așa că, dacă doriți să „amintiți” unele date din execuția anterioară, trebuie să le stocați undeva. În cazul nostru, acesta este doar un simplu fișier text. Pentru a simplifica, să presupunem că START_POS-ul nostru este de 1 GB (datele pe care le avem), ceea ce dorim să facem backup este de + 2 GB și capacitatea totală a unității este de 10 GB.

4, Data viitoare când scriptul rulează VFILE există și acesta va fi citit înapoi (deci știm care a fost poziția de pornire în cazul în care unitatea nu a fost goală) pentru a calcula BACKUP_CURRENT, care este în esență o deltă a spațiului utilizat acum pe unitatea de rezervă minus poziția de pornire ceea ce am salvat în VFILE în ultima rundă (din nou acestea sunt datele pe care le aveam pe unitate când a început backupul). Scriptul funcționează intern cu octeți, dar pentru a-l simplifica după o jumătate de oră am făcut backup pentru 500 MB date, atunci formula ar fi BACKUP_CURRENT = 1,5 GB - 1 GB (stare inițială) => ceea ce ne redă exact datele reale 500 MB, adică ceea ce am susținut până acum. Puteți vedea că, fără a ține evidența datelor originale la începutul copierii de rezervă, acest calcul al dimensiunii ar eșua, deoarece ar vedea că spațiul utilizat în acest moment este de 1,5 GB fără să știți că datele de 1 gig erau acolo pe disc tot timpul provenind dintr-o copie de rezervă anterioară, deci ar presupune că serverul ne-a trimis date de 1,5 GB în loc de 500 MB.

5, BACKUP_OVERALL va fi citit, aceste date au fost calculate de server când a efectuat rsync-ul uscat inițial (deci aceasta este o sursă de date externă care conține cantitatea de octeți care va fi copiată de pe Server-> OrangeBOX). Această valoare va fi comparată cu spațiul GRATUIT general pe disc în acest moment și dacă o depășește, atunci va fi afișat un mesaj de eroare pe ecranul LCD și scriptul oprește executarea. Amintiți-vă din nou că tot acest script este afișat DOAR, nu interferează cu procesul de backup. Dacă curățați fișierele de pe disc sau cantitatea de fișiere se modifică de la distanță și, prin urmare, BACKUP_OVERALL se schimbă la un moment dat, va continua.

6, În cele din urmă, am terminat cu verificările de al doilea nivel, este timpul să afișăm ceva. Scriptul afișează atât datele pe consolă, cât și pe ecranul LCD folosind o aplicație simplă C. Fundalul este comutat pe ALBASTRU indicând faptul că backupul a început în cele din urmă și progresul calculat de următoarea formulă PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Acesta este un calcul procentual de bază, luăm suma curentă, în exemplul nostru 0,5 GB * 100/2 GB = 25%.

7, numerele sunt, de asemenea, convertite de la octeți la octeți Mega / Giga și ecranul se afișează automat în MB dacă este mai mic de 1 GB.

8, Un lucru rămas pentru cartografierea acestui lucru în cazul nostru este 25% pe un LCD cu 20 de coloane. Aceasta ar fi 25 * 20/100 = 5 în exemplul nostru. În prezent, este implementată reîmprospătarea cu programul LCD, de fiecare dată când apelați programul, va redesena întregul ecran. Deci, în acest caz, ar rula o buclă for de 5 ori pentru a desena 5 hashmarks # pe ecran, acest lucru ar apărea ca un pâlpâit urât în fiecare rundă, așa că în schimb scriu datele calculate ale barei de progres în LFILE1 și 2, care în acest caz după cele 5 runde ar conține ##### și acest lucru este citit înapoi și afișat pe ecranul LCD. S-ar putea să puneți și LFILE1 și 2 pe ramdisk pentru a salva cardul sd din operații de scriere suplimentare, nu mi-a cauzat probleme, scriptul rulează o dată în fiecare minut de la cron.

9, Când copia de rezervă a terminat, celălalt script de pe serverul care rulează rsync va atinge FFILE (Fișier final). La următoarea buclă backup_progress.sh va afișa apoi că backup-ul este finalizat și opțional apelează un alt script pentru a închide OrangeBOX. Șterge fișierele de blocare în acest moment, ceea ce face imposibile alte execuții, astfel încât, chiar dacă nu activați oprirea în minutul următor când rulează acest script, acesta se va închide imediat, deoarece BFILE nu este acolo și FFILE nu este acolo. Prin urmare, va afișa mesajul de copiere completat la nesfârșit, cu excepția cazului în care copia de rezervă este repornită din nou.

Script de backup la distanță (orange-remote.sh):

Va trebui să generați o cheie ssh pentru backup și o cheie pentru criptarea luks pentru unitate. Când executați manual backupul la distanță pentru prima dată, acesta va salva amprenta gazdă a casetelor portocalii în fișierul gazdă (din acest moment poate fi rulat automat de cron).

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

Pentru a afla identificatorul dvs. de hard disk, rulați uuid, blkid sau căutați directoare / dev / disk / corespunzătoare.

Un director cu excludere poate fi configurat dacă nu doriți să faceți backup pentru toate. Acesta este un proces destul de enervant, deoarece pentru rsync, dacă doriți să excludeți un singur subdirector adânc în structură, trebuie să faceți:

+ / a

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

Deoarece acest script execută comenzi pe OrangeBOX de la distanță, nu are nici o supraveghere a variabilelor de returnare din acea parte, prin urmare, folosesc câteva trucuri inteligente, cum ar fi mesajul de deschidere a unității de la distanță în /tmp/contmsg.txt, apoi analizează pentru a vedea dacă a avut succes, dacă nu, atunci schimbă binarul rsync în neexecutabil, astfel încât rsync nu va încerca să încarce date în rootfs-urile OrangePIs umplând cardul SD. De asemenea, o bună practică pentru a seta bitul imuabil pe chattr + i / mnt / backup pentru a face acest lucru imposibil.

Precalcularea dimensiunii are loc local pe server, prin urmare acest fișier trebuie trimis la OrangeBOX în pasul următor.

Backupul principal este inițiat ca o buclă pentru ((i = 0; i <100; i ++)); face pentru că, în cazul conexiunilor de internet DSL / cablu de calitate scăzută, rsync se poate întrerupe adesea, expirând. Dacă se finalizează cu succes, bucla se va rupe fără a încerca mai multe iterații. Acest lucru funcționează ireproșabil cu sisteme de operare bune, cu toate acestea, dacă dintr-un motiv oarecare, cutia de la distanță ar fi Windows și ar fi refuzat accesul ca în mod regulat pe NTUSER. DAT, atunci rsync ar returna un cod de eroare și această buclă s-ar executa de 100 de ori și apoi va eșua.

Pasul 5: închidere și listă de activități

Închidere și listă de activități
Închidere și listă de activități
Închidere și listă de activități
Închidere și listă de activități

Instrucțiunile mele demonstrează încă o dată cum poți crea ceva mai bun și mai personalizabil de pe un computer de 10 $ pe cont propriu, care bate naibii din Buffalo cu dispozitivele NAS blocate, cu partiționarea internă ciudată, cu linia ocupată cu cutii ocupate, cu instrumente separate, gestionate prin software-ul lor Windows, firmware-ul închis, documentație și asistență proaste și indiferent de cât de mulți bani veți cheltui, nu veți primi niciodată un indicator de progres care să arate copie de rezervă, ca să nu mai vorbim de cât de cool arată OrangeBox (folosesc chiar și cablu portocaliu CAT5 cu el: D).

Cu mini computere care devin din ce în ce mai puternice, menținând în același timp linia de preț <100 $, le putem folosi pentru tot mai multe sarcini. Deoarece porturile Gbe Ethernet sunt destul de frecvente în aceste zile în 1-2 ani, memoria de pe aceste plăci va crește dramatic și pot fi folosite și pentru sistemele de backup bazate pe ZFS.

-Indicator de progres fin al cerealelor prin programul C (vezi WasserStation unul din celelalte proiecte ale mele). În acest moment, doar # hashmark # caractere utilizate în modul de caractere cu lcdPuts (lcd, line1), acest lucru ar putea fi îmbunătățit chiar și atunci când se utilizează LCD-uri de caractere pentru a împărți 1 coloană la 5 părți, iar programul C principal ar putea lua doar un număr întreg ca 25 și să extragă bara de progres corect sau îmbunătățită în continuare utilizând un ecran LCD grafic

-Posibilitatea de a avea un HDD detașabil pentru crearea de copii de rezervă noi și noi și mutarea acestora în locații diferite (dacă caseta detectează o unitate goală, atunci ar trebui să o formateze automat cu cheia de criptare după ce a fost primită).

-Dacă doriți să imprimați propria carcasă cu makerbot, OrangeNAS ar putea fi interesant pentru dvs.:

Recomandat: