Sadržaj:

OrangeBOX: OrangePI zasnovan uređaj za skladištenje sigurnosnih kopija: 5 koraka
OrangeBOX: OrangePI zasnovan uređaj za skladištenje sigurnosnih kopija: 5 koraka

Video: OrangeBOX: OrangePI zasnovan uređaj za skladištenje sigurnosnih kopija: 5 koraka

Video: OrangeBOX: OrangePI zasnovan uređaj za skladištenje sigurnosnih kopija: 5 koraka
Video: The Ubuntu Orange Box 2024, Juli
Anonim
OrangeBOX: Uređaj za skladištenje sigurnosnih kopija zasnovanih na OrangePI -u
OrangeBOX: Uređaj za skladištenje sigurnosnih kopija zasnovanih na OrangePI -u
OrangeBOX: Uređaj za skladištenje sigurnosnih kopija zasnovanih na OrangePI -u
OrangeBOX: Uređaj za skladištenje sigurnosnih kopija zasnovanih na OrangePI -u

OrangeBOX je sve-u-jednom rezervna kutija za daljinsko skladištenje za sve servere.

Vaš poslužitelj može biti zaražen, oštećen, obrisan i svi vaši podaci su i dalje zaštićeni na OrangeBOX -u i kome se ne bi svidjela nemoguća misija poput sigurnosnog uređaja koji samo priključite i vidite indikator napretka, a da ne radite ništa više (samo se nadajte čaroliji dim neće izaći na kraju:)).

OrangeBOX je moj prvi projekt koji je uglavnom softver, a ne hardverski hack. To je u osnovi prilagođeni NAS sa priloženim LCD ekranom.

Korak 1: Dijelovi hardvera

Dijelovi hardvera
Dijelovi hardvera
Dijelovi hardvera
Dijelovi hardvera
Dijelovi hardvera
Dijelovi hardvera

Orange PI zero je jednokrilni računar otvorenog koda. Može pokretati Android 4.4, Ubuntu, Debian. Koristi AllWinner H2 SoC i ima 256MB/512MB DDR3 SDRAM (verzija od 256 MB je standardna verzija. Orange Pi Zero je za svakoga tko želi početi stvarati s tehnologijom - ne samo da je konzumira. To je jednostavan, zabavan i koristan alat mogu koristiti za početak preuzimanja kontrole nad svijetom oko sebe (https://www.orangepi.org/orangepizero/). Tako da je to samo za nas da nastavimo s tim:)

  • Metalna/plastična/drvena kutija (koristio sam staru Yamaha vanjsku cd-rw kutiju)
  • Narančasta PI Zero ili bolja (GPIO pinout se može promijeniti ako koristite drugi model)
  • 2x20 RGB LCD ekrana
  • Bilo koji SFF 3.5/ LFF 2.55 USB pogon
  • Sata -> usb adapter. Imajte na umu da iako OrangePI ne nameće gornju granicu maksimalnog kapaciteta pogona, međutim, radi mnogo USB-to-SATA mostova (maksimalno 2TB). Narandžasti PI Zero koji koristim ima samo jedan USB 2.0 port sa efektivnom brzinom prijenosa od 28 MB/s max. Odabrao sam USB3.0 (pripremljen za buduće nadogradnje) -> SATA most (marka se neće spominjati) i on ograničava granicu pa je bolje odabrati most za koji se dokazalo da podržava veće pogone, poput mostova zasnovanih na čipovima JMicron JMS567. Uradite vlastito istraživanje prije nego što ga kupite. Mogu živjeti s ograničenjem brzine i tvrdog diska koristeći 2TB sata pogon u ovom projektu (ako ubacite veće pogone, bit će prepoznat, ali OS će vidjeti samo prvih 2TB, pa će ostatak kapaciteta biti izgubljeno).
  • 12V adapter od 2,5 A ili više. Izračunajte oko 500mA normalne upotrebe za OPI Zero i 1.5A peak za standardni LFF SATA pogon. Prevelika veličina nikada ne boli. U mojim postavkama Yamaha psu (ono što je moglo dati više nego dovoljno struje na obje 12+5V šine) nažalost je eksplodirao: (zbog sortiranja glavnog prekidača na GND na sekundu pa sam morao zalijepiti običan adapter, na bar je kutiju učinilo par grama lakšom.
  • Buck pretvarač DC-DC 12V-> 5V. Koristio sam isti podesivi mini dolar kao i kod IronForgea, savršeno radi.

Opcionalno

Ako ste voljni potrošiti + 10 $, tada možete nabaviti Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) koji je sličnog oblika i dobijate Gbe i SATA3. Za to se može koristiti biblioteka ožičenja Libra PI: https://github.com/OrangePiLibra/WiringPi, ali budući da je GPIO pinout različit, to nije obuhvaćeno ovim pisanjem.

Ovu gradnju možete izvesti i s novim Orange PI Plus2 koji ima SATA konektor, a možete preskočiti upotrebu sata-> usb pretvarača, zajedno s njihovim ograničenjima. Ako planirate koristiti FreeBSD ili druge BSD -ove, Orange PI serija možda neće biti najbolji izbor jer je njihova hardverska podrška ograničena (na primjer, za pokretanje morate koristiti USB stick). Za BSD -ove najbolji je savjet korištenje Raspberry PI. I C kod za LCD i sve ljuske skripte su prenosive na bilo koji drugi UNIX sistem.

Korak 2: Dizajn hardvera

Dizajn hardvera
Dizajn hardvera
Dizajn hardvera
Dizajn hardvera
Dizajn hardvera
Dizajn hardvera

Yamaha kutija bila je taman dovoljna za spremanje svega ovoga, ne bi imala dovoljno prostora za Orange PI PC ili običnu Raspi ploču sa faktorima.

Ethernet je izvučen s produžetkom na stražnjoj strani kutije. Upamtite da Orange PI zero ima samo 100mbit/s Ethernet sučelja, ako želite brže, morat ćete koristiti drugu ploču, poput Asus Tinkerboard/RPI3B+/Drugi Orange PI modeli.

Pogrešan izvlačenje PIN -a je jedina i jedina greška koju možete napraviti u ovom projektu, stoga vrijedi primijeniti neko pravilo principa:

1, Uvijek pokušajte koristiti kabel iste boje od KRAJA do KRAJA. I sam činim istu "grešku" u nekim projektima u kojima to nemam, jednostavno zato što nemam pri ruci dovoljno dugo muško-muško/muško-žensko/žensko-žensko kablove i krpim 2 zajedno samo da nastavim kolo. Ako ne dokumentirate svoj rad na odgovarajući način, to može dovesti do glavobolje godinama kasnije, gdje morate obaviti popravak, nadogradnju.

2, Nanesite malo vrućeg ljepila na konektore. U slučaju korištenja ovih kablova mm/mf/ff tipa arduino starter, koji nisu vrhunske kvalitete, prilično je uobičajeno (pogotovo ako se krećete/transportirate uređaj) da konektori iskliznu. Ako znate da će to biti uređaj za dugotrajnu upotrebu (moguće ga je koristiti dok se ne pokvari ?!), bolje je nanijeti malo vrućeg ljepila na OrangePI i LCD stranu konektora kako biste ih držali zajedno. Ovo se kasnije može lako otopiti/izgrebati ako je potrebno.

3, OrangePI nulto ožičenje Loša vijest je da Orange PI pinout NIJE isti kao Raspberry PI 0/1/2/3 i čak postoji razlika između ostalih Orange PI modela. Najbolji način za to je nabaviti biblioteku ožičenja (narančasta PI Zero verzija). Slika bi mogla biti pomalo zbunjujuća, ali ovo je najbolje što sam uspio pronaći. Jedan je ogledalo od 180 stepeni drugog. Iako CLI ne -grafička slika može biti teža za razumijevanje, ona je najjednostavnija.

Uvijek možete razlikovati dva kraja utičnice uzimajući u obzir jedan kraj kao POZITIVAN kraj sa (+3.3/+5V), a drugi kao NEGATIVNI kraj (jedan GND) -> ovo je kraj konektora okrenut prema ETHERNET priključku.

Iz tablice Wiring PI Zero trebat će vam samo jedna kolona koju će wPI zaboraviti na ostale kao da ih ne bi bilo.

Na primjer, za povezivanje LCD_E 15 (to je wPI 15!) I LCD_RS 16 (to je wPI 16!) Izbrojite pinove s POZITIVNOG kraja konektora (lako se to može učiniti olovkom ili malim odvijačem). To će fizički pasti 4 igle i 5 pinova.

4, Grupiši se. Ako postoji mogućnost stavljanja rabljenih iglica jedan do drugoga (grupiranje ih) uvijek ste to odabrali, to ih čini da drže jedni druge čak i bez vrućeg ljepila, a također i u drugim projektima kada imate 2x 4x 6x molex konektore samo iskoristite iglice jedna do druge. Ovdje najbolje što možete učiniti je grupa od 2-3 osobe (idealno za korištenje spašenih prespojnih kabela sa starih računara).

Igle koje se koriste za povezivanje OrangePI LCD ekrana:

// UPOTREBA WIRINGPI PIN BROJEVA

#define LCD_E 15 // Omogući pin #define LCD_RS 16 // Registrirajte odabir pina #define LCD_D4 5 // Pin za podatke 4 #define LCD_D5 6 // Podaci pin 5 #define LCD_D6 10 // PIN za podatke 6 #define LCD_D7 11 // Podatkovni pin 7

Igle se koriste za kontrolu RGB pozadinskog osvetljenja

$ G napišite 10

$ G pisanje 4 1 $ G pisanje 7 1

Narandžasti PI nula wPI pinovi 1, 4, 7. Jedina magija koju ovaj LCD može učiniti u poređenju sa standardnim fiksnim LCD -om sa fiksnim plavim ili zelenim pozadinskim osvjetljenjem gdje imate jednu katodu koju je potrebno spustiti na GND da ima 3 za 3 boje. Crvena, zelena i plava. Promjenom kombinacije koja je uključena možete miješati različite boje iz ovih osnovnih boja, ali samo visoki krajevi bez nijansi jer ne možete kontrolirati svjetlinu boje (ili je uključena ili isključena).

Aditivno mešanje boja: dodavanjem crvene u zelenu dobija se žuta; dodavanjem crvene u plavu dobiva se magenta; dodavanje zelenog u plavo daje cijan; dodavanjem sve tri osnovne boje dobija se bijela.

Korak 3: Operativni sistem

Operativni sistem
Operativni sistem

OrangeBOX se podiže i Armbian linux (zasnovan na Debian Stretch-u) 4.14.18-sunxi jezgro sa sigurnim okruženjem zaštićenim vatrozidom, povezuje se s VPN-om i čeka na udaljene naredbe za sigurnosno kopiranje sa servera.

Principi dizajna:

-Potpuno šifriranje diska zasnovano na luksu (sam uređaj ne sadrži ključ za otvaranje rezervnog pogona. Privremeno će se kopirati s udaljenog servera na ram /dev /shm, pogon se otvorio i ključ izbrisan. Nakon što je sigurnosna kopija završena pogon se zatvorio i OrangeBox se automatski isključuje za 1 minutu.)

-Sve naredbe i ključevi se šalju s udaljenog servera (sam uređaj sadrži samo vpn certifikat) nema nikakav pristup udaljenom serveru čak i ssh s ovog uređaja je vatrozidom

-Lokalni datotečni sustavi nisu šifrirani kako bi se mogli pokrenuti, ali ne sadrže ništa korisno, a budući da je VPN veza visoko ograničena na drugom kraju, čak i uz potpuni gubitak uređaja, napadač ne može učiniti ništa

Preuzmite Armbian Stretch sa

Pokrenite sistem:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Uredite /etc /inittab, sve konzole se mogu onemogućiti jer će se okvir koristiti kao bez glave. Komentirajte sljedeći odjeljak:

#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

Ponovo pokrenite kutiju i uklonite systemd da biste imali pravi sistem bez softvera otvorenog koda.

apt-get remove --purge --automatsko uklanjanje systemd

Instalirajte neke pakete

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

Instalirajte biblioteku wiringpi

cd /usr /src

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

Kreirajte narandžastog korisnika za LCD ekran

groupadd -g 1000 narančasta

useradd -m -d /home /narančasto -s /bin /bash -u 1000 -g narančasto narančasto

Pas čuvar koji ne pazi na vas

apt-get install watchdog

Gledate u/etc/default/watchdog # Pokrenuti nadzornog psa prilikom pokretanja? 0 ili 1 run_watchdog = 1 # Pokrenuti wd_keepalive nakon zaustavljanja nadzornog psa? 0 ili 1 run_wd_keepalive = 1 # Učitajte modul prije pokretanja čuvara watchdog_module = "none" # Ovdje navedite dodatne opcije nadzora (pogledajte stranicu sa korisnicima).

Gledajući /etc/watchdog.conf

# Omogućite barem ovo

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

/etc/init.d/watchdog start

Trebao bi postojati najmanje 1 nit jezgre i 1 proces:

korijen 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

Testiranje:

Pobrinite se da sve zaustavite i izvršite sinhronizaciju && sinhronizaciju && sinhronizaciju da biste zapisali ostatak podataka na disk. Zatim kao root problem:

echo 1> /dev /watchdog

Nakon nekoliko sekundi mašina bi se trebala ponovo pokrenuti.

Kako navodi priručnik:

o Je li tablica procesa puna?

o Ima li dovoljno slobodne memorije? o Ima li dovoljno memorije koja se može dodijeliti? o Da li su neke datoteke dostupne? o Da li su se neke datoteke promijenile u zadanom intervalu? o Da li je prosječno radno opterećenje preveliko? o Je li došlo do prelijevanja tablice datoteka? o Da li proces još uvijek radi? Proces je specificiran pid datotekom. o Odgovaraju li neke IP adrese na ping? o Da li mrežni interfejsi primaju promet? o Je li temperatura previsoka? (Podaci o temperaturi nisu uvijek dostupni.) O Izvršite naredbu koju je definirao korisnik da biste izvršili proizvoljne testove. o Izvršite jednu ili više naredbi za testiranje/popravak koje se nalaze u /etc/watchdog.d. Ove naredbe se pozivaju s testom argumenata ili popravkom. Ako bilo koja od ovih provjera ne uspije, nadzornik će uzrokovati gašenje. Ako bilo koji od ovih testova, osim binarno definiranog od korisnika, traje duže od jedne minute, stroj će se ponovno pokrenuti.

Ovaj čuvar bi mogao dobro funkcionirati na uobičajenim x86 arhitekturama, ali na pločama zasnovanim na ARM -u, poput Raspberry PI, Orange PI, nije mi uspio bezbroj puta. Sistem može preći u stanja obješenja gdje čak i pas čuvar visi. Samo ga ipak konfigurirajmo, možda će se poboljšati s apt-get nadogradnjom s godinama:(

Korak 4: Dizajn softvera

Dizajn softvera
Dizajn softvera

Sam proces izrade sigurnosne kopije zasnovan je na rsync-u (najbolji alat za izradu sigurnosnih kopija ikada izmišljen) podaci se guraju iz SERVER-> OrangeBOX.

Izvlačenje podataka iz rsync -a bio je jedini izazovni dio projekta da se na LCD -u odštampa traka napretka u vezi sigurnosne kopije.

Postoje tri moguća načina za izračunavanje napretka sigurnosne kopije:

1, koristeći formule kao što je https://wintelguy.com/transfertimecalc.pl za određivanje približno vremena koje prijenos može potrajati

Vrijeme prijenosa (d: h: m: s): 0: 02: 44: 00

Za poređenje: Predviđeno vrijeme za prijenos datoteke od 123 GB preko različitih mrežnih veza (d: h: m: s): T1/DS1 linija (1,544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Brzi Ethernet (100 Mbps) - 0: 02: 44: 00 Gigabitni Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabitni Ethernet (10 Gbps) - 0: 00: 01: 38

Ako rsync završi, signalizira skripti da zaustavi proračun. Ova metoda je samo približna i nije pouzdana, također brzina veze nije fiksna, može se usporiti, ponovo ubrzati. Ovo je samo teoretski proračun.

2, Provjera veličine direktorija radi utvrđivanja koliko smo podataka već sinkronizirali. Može biti jako spor sa stotinama GB datoteka malih datoteka (iako du -s u Linuxu radi malo keširanja ako ga ponovo pokrenete)

Domaćin A -> Podaci servera za izradu sigurnosne kopije Podaci režija: 235 GB

Domaćin B -> Podaci o klijentu narančaste kutije koje trenutno imamo Podaci režija: 112 GB

Delta je 123 GB.

3, Ako je datotečni sistem namjenski, kao u našem slučaju/dev/mapper/backup, možemo iskoristiti ukupni pokazatelj korištenja datotečnog sistema kako bismo utvrdili kako napreduje naša sigurnosna kopija, a to je prokleto brzo. U ovom slučaju ne moramo čak ni prenositi rsync stdout bilo gdje, samo pokrenite suhi rsync, pričekajte da se završi, izračunajte deltu u bajtima i provjerite ovo sa slobodnim prostorom ono što imamo na rezervnom pogonu i voila možemo sada napravite lijep stupčasti grafikon. Ovo je metoda koju sam odabrao i evo moje skripte za nju:

#!/bin/bash

# Kalkulator napretka sigurnosne kopije za OrangeBOX od NLD # Verzija: 0.2 (2018/03/05) # # Pokrenite ga kao neprivilegiranog korisnika iz cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Ova skripta je odgovorna samo za prikaz podataka na LCD -u, komunicira # s glavnim programom posredno putem datoteka položaja i zaključavanja. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # upotreba diska na početku sigurnosne kopije TFILE = "$ HOME/trans.size" # ukupna prethodno izračunata veličina prijenosa BFILE = "$ HOME/ backup.lck " # određuje započeto stanje FFILE =" $ HOME/backup.fin " # određuje završeno stanje LFILE1 =" $ HOME/lcd1.bar " # Podaci o pokazatelju napredovanja LCD -a LFILE2 =" $ HOME/lcd2.bar " # Napredak LCD -a podaci indikatora SHUTDOWN = "1" # Ako 1 će pokrenuti drugu skriptu koja zatvara okvir na kraju sigurnosne kopije BACKUP_CURRENT = "0" # Mora se inicijalizirati, ali će se izračunati DRIVE_SIZE = "" # Veličina pogona u bajtovima (sekundarno provjerite) LCD = "sudo /bin /lcd" funkcija is_mount () {grep -q "$ 1" /proc /mounts status = $? } funkcija crvena () {sudo /bin /lcdcolor crvena} funkcija zelena () {sudo /bin /lcdcolor zelena} funkcija plava () {sudo /bin /lcdcolor blue} # Jasno stanje (postavljeno pri pokretanju od strane bootup_display.sh). Sigurnosno kopiranje nije u toku, NE KVARAJTE LCD sa statusom #. Prikažite napredak samo u slučaju da postoji sigurnosna kopija => Nema početne datoteke I Nema datoteke s perajama = zatvorite ako [! -f $ BFILE] && [! -f $ FFILE]; zatim izađite 1 fi # Ako je sigurnosno kopiranje završeno, ova skripta će to prikazati i ukloniti brave # da se ne bi mogla ponovo pokrenuti do sljedeće inicijacije. if [-f $ FFILE]; zatim zeleno $ LCD "Backup" "** Completed **" echo "Backup Completed" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Sigurnosno kopiranje je završeno čišćenje ako [$ SHUTDOWN == "1"]; zatim odjeknite "Izvršavanje skripte za isključivanje …" /home/orange/shutdown.sh & fi izlaz 0 fi # Od ovog trenutka se skripta izvodi SAMO ako postoji TEKUĆA sigurnosna kopija # stoga će se sve greške ispisati na LCD -u i uzrokovati skriptu # za prekid, međutim, neće ukloniti datoteku backup.lck, pa će ulaziti ovdje # uvijek iznova i evaluirati uvjete. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; tada crveni $ LCD "ERR: Rezervni pogon" "" nije montiran! " echo "Rezervni pogon nije montiran" izlaz 1 fi ako [! -s $ TFILE]; zatim crveno $ LCD "ERR: transfile" "je prazno" echo "Datoteka za proračun transportne veličine je prazna." izlaz 1 fi BACKUP_OVERALL = $ (zaglavlje -1 $ TFILE | tr -d '\ n') ako [-z $ BACKUP_OVERALL]; zatim crveno $ LCD "ERR: Povratak veličine" "" sa servera nevažeći "echo" Vraćanje ukupne veličine rezervne kopije je nevažeće 1 "izlaz 1 fi ako!

Iako je kôd jednostavan, evo nekoliko opisa o tome što radi:

1, Ako BFILE ili FFILE ne postoje (što je stanje nakon jasnog pokretanja), to ukazuje na to da ne postoji postupak izrade sigurnosne kopije, stoga NE NAPUŠTAJTE ništa, samo prestanite. Na ovaj način možete iscrtati sve lijepe informacije koje želite o pokretanju, kao što su ime hosta, ip, vrijeme neprekidnog rada itd. I neće biti zabrljano.

2, Prijeđimo na is_mount $ BACKUP_DRIVE odjeljak. Podsjetnik, jedini način na koji smo došli ovdje je da je sigurnosna kopija pokrenuta tako da BFILE postoji. Sada kôd samo izvršava razne provjere grešaka, poput toga je li rezervni pogon montiran?, Je li ukupna veličina onoga što namjeravamo sigurnosno kopirati veća od pogona? ili druge greške. Upamtite da je ovo program samo za DISPLAY, čak i ako bi veličina premašila rezervne kopije, neće ništa prekinuti.

3, U redu sve provjere grešaka očistile vrijeme za izračunavanje grafikona postotka. Prvo skripta pravi "snimak" prostora koji se trenutno koristi u bajtovima na sigurnosnom sistemu datoteka i pohranjuje ga u VFILE. Koja je svrha ovoga: bash skripta je bez stanja, gubi podatke između izvršavanja, pa ako želite "zapamtiti" neke podatke iz prethodne izvedbe, morate ih negdje spremiti. U našem slučaju ovo je samo jednostavna tekstualna datoteka. Da pojednostavimo, recimo da je naš START_POS 1 GB (podaci koje imamo), ono što želimo sigurnosno kopirati je +2 GB, a ukupni kapacitet pogona je 10 GB.

4, Sljedeći put kada skripta pokreće VFILE postoji i to će se ponovo pročitati (tako da znamo koja je bila početna pozicija u slučaju da pogon nije bio prazan) kako bi se izračunao BACKUP_CURRENT koji je u biti delta prostora koji se trenutno koristi na rezervnom pogonu minus početna pozicija ono što smo sačuvali u VFILE -u u prošlom krugu (opet ovo su podaci koje smo imali na disku kada je sigurnosno kopiranje započelo). Skripta interno radi s bajtovima, ali kako bismo pojednostavili nakon pola sata napravili smo sigurnosnu kopiju podataka od 500 MB, tada bi formula bila BACKUP_CURRENT = 1,5 GB - 1 GB (početno stanje) => što nam vraća točno 500 MB podataka, tj. ono što smo do sada napravili. Možete vidjeti da bez praćenja izvornih podataka na početku izrade sigurnosne kopije, ovaj izračun veličine neće uspjeti jer bi se vidjelo da trenutno iskorišteni prostor iznosi 1,5 GB, a da se ne zna da je na disku cijelo vrijeme bio 1 koncertni podatak dolaze iz prethodne sigurnosne kopije pa bi se pretpostavilo da nam je poslužitelj poslao 1,5 GB podataka umjesto 500 MB.

5, BACKUP_OVERALL će se pročitati, poslužitelj je izračunao ove podatke kada je izvršio početnu suhu rsync (dakle ovo je vanjski izvor podataka koji sadrži količinu bajtova koja će biti sigurnosno kopirana sa Server-> OrangeBOX). Ova vrijednost će se provjeriti u odnosu na ukupni BESPLATNI prostor na disku u ovom trenutku, a ako ga premaši, poruka o grešci će se prikazati na lcd -u i skripta će zaustaviti izvršavanje. Zapamtite još jednom da sve što ova skripta radi prikazuje SAMO, to ne ometa proces izrade sigurnosne kopije. Ako očistite datoteke na disku ili se količina datoteka promijeni na daljinu, pa se BACKUP_OVERALL u jednom trenutku promijeni, nastavit će se.

6, Konačno smo završili s provjerama drugog nivoa, vrijeme je da nešto prikažemo. Skripta prikazuje podatke na konzoli i na LCD -u pomoću jednostavne C aplikacije. Pozadina se prebacuje na PLAVU što označava da je sigurnosno kopiranje konačno počelo i napredak izračunat prema sljedećoj formuli PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Ovo je osnovni izračun postotka uzimamo trenutni iznos, u našem primjeru 0,5 GB*100/2 GB = 25%.

7, brojevi se također pretvaraju iz bajta u mega/gigabajte i ekran se automatski prikazuje u MB ako je manji od 1 GB.

8, Jedna stvar koja je preostala za mapiranje ovoga u našem slučaju je 25% na LCD ekranu sa 20 stupaca. To bi u našem primjeru bilo 25 * 20 /100 = 5. Trenutno je osvježavanje s LCD programom implementirano tako da će svaki put kada pozovete program precrtati cijeli zaslon. Tako bi se u ovom slučaju pet puta pokrenula for petlja za crtanje 5 hashmarkova # na ekranu, ovo bi se pokazalo kao ružno treperenje u svakom krugu pa umjesto toga zapisujem izračunate podatke trake napretka u LFILE1 i 2, koji u ovom slučaju nakon 5 rundi bi sadržalo ##### i ovo se ponovo čita i prikazuje na LCD -u. Možete staviti LFILE1 i 2 i na ramdisk kako biste sačuvali sdcard od dodatnih operacija pisanja, meni to nije uzrokovalo probleme, skripta se pokreće svake minute iz crona.

9, Kada sigurnosno kopiranje završi, druga skripta s poslužitelja na kojem se izvodi rsync dodirnut će FFILE (Finish File). U sljedećoj petlji backup_progress.sh će tada pokazati da je sigurnosna kopija završena i opcionalno poziva drugu skriptu da isključi OrangeBOX. U ovom trenutku briše datoteke zaključavanja onemogućujući daljnja izvođenja pa čak i ako ne omogućite isključivanje u sljedećoj minuti kada se ova skripta pokrene, odmah će se zatvoriti jer BFILE nije tamo i FFILE nije tamo. Stoga će se na neodređeno vrijeme prikazivati poruka o dovršetku sigurnosne kopije, osim ako se sigurnosna kopija ponovno ne pokrene.

Skripta za daljinsko sigurnosno kopiranje (orange-remote.sh):

Morat ćete generirati ssh ključ za sigurnosnu kopiju i ključ za luks šifriranje za pogon. Kada prvi put ručno pokrenete udaljenu sigurnosnu kopiju, spremit će otisak prsta hosta narančastih okvira u datoteku hosts (od sada se može automatski pokrenuti pomoću crona).

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

Da biste saznali svoj identifikator tvrdog diska, pokrenite uuid, blkid ili samo potražite odgovarajuće/dev/disk/direktorije.

Direktorij include exclude može se postaviti ako ne želite sve sigurnosno kopirati. Ovo je prilično dosadan proces jer za rsync ako želite isključiti jedan poddirektorij duboko u strukturi morate učiniti:

+ /a

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

Budući da ova skripta daljinski izvršava naredbe na OrangeBOX -u, nema nadzora nad povratnim varijablama s te strane, stoga koristim neke pametne trikove poput toga da će poslati poruku o otvaranju udaljenog pogona na /tmp/contmsg.txt, a zatim raščlaniti to da vidi da li je bio uspešan, ako ne, onda menja binarnu datoteku rsync u neizvodljivu tako da rsync neće pokušati da otpremi podatke u OrangePIs rootfs koji ispunjavaju SD karticu. Također je dobra praksa postaviti nepromjenjivi bit na chattr +i /mnt /backup kako bi ovo bilo nemoguće.

Predračun veličine se odvija lokalno na serveru, pa se u narednom koraku ova datoteka mora poslati na OrangeBOX.

Glavna sigurnosna kopija se pokreće kao petlja za ((i = 0; i <100; i ++)); učiniti jer u slučaju nekvalitetne DSL/kabelske internetske veze rsync često može prekinuti, istjecanje je isteklo. Ako se uspješno završi, petlja će se prekinuti bez pokušaja više ponavljanja. Ovo funkcionira besprijekorno s dobrim operativnim sistemima, međutim, ako bi iz nekog razloga udaljeni okvir bili prozori i bio bi onemogućen pristup kao što je to uobičajeno na NTUSER. DAT, tada bi rsync vratio kôd greške i ova bi se petlja izvršila 100 puta, a zatim i dalje ne bi uspjela.

Korak 5: Zatvaranje i lista zadataka

Zatvaranje i lista zadataka
Zatvaranje i lista zadataka
Zatvaranje i lista zadataka
Zatvaranje i lista zadataka

Moja instrukcija još jednom pokazuje kako možete sami stvoriti nešto bolji, prilagodljiviji uređaj sa računara od 10 USD koji pobjeđuje Buffalo sa svojim vlasničkim zaključanim NAS uređajima, čudnim internim particioniranjem, zauzetim boksom osakaćenim Linuxom sa alatima za segfaulting, upravljanim po njihovom Windows softveru, zatvorenom firmveru, lošoj dokumentaciji i podršci i bez obzira na to koliko ćete novca potrošiti, nikada nećete dobiti indikator napretka koji prikazuje vašu sigurnosnu kopiju, a da ne spominjem kako OrangeBox izgleda super (uz njega čak koristim i narančasti CAT5 kabel: D).

S obzirom da mini računari postaju sve moćniji i održavaju istu cjenovnu liniju <100 $, možemo ih koristiti za sve više zadataka. Budući da su Gbe Ethernet portovi ovih dana prilično uobičajeni za 1-2 godine, memorija na ovim pločama će se dramatično povećati i mogu se koristiti i za sigurnosne kopije zasnovane na ZFS-u.

-Pokazatelj napredovanja zrna prema programu C (vidi WasserStation jedan od mojih drugih projekata). Trenutno samo # hashmark # znakova koji se koriste u znakovnom načinu s lcdPuts -om (lcd, line1), ovo bi se moglo poboljšati čak i kada koristite LCD -ove sa znakovima za podjelu 1 kolone na 5 dijelova, a glavni C program bi mogao uzeti cijeli broj poput 25 i izvući traka napretka je ispravno ili dodatno poboljšana upotrebom grafičkog LCD -a

-Mogućnost da se ima izmjenjivi HDD za stvaranje novih i novih sigurnosnih kopija i njihovo premještanje na različite lokacije (ako okvir otkrije prazan disk, trebao bi ga automatski formatirati ključem za šifriranje nakon što ga primi).

-Ako želite da odštampate svoju kutiju sa makerbotom, OrangeNAS bi vam mogao biti zanimljiv:

Preporučuje se: