OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI: 5 korakov
OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI: 5 korakov
Anonim
OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI
OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI
OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI
OrangeBOX: Naprava za varno varnostno kopiranje na osnovi OrangePI

OrangeBOX je večnamensko rezervno polje za shranjevanje na daljavo za vse strežnike.

Vaš strežnik je lahko okužen, poškodovan, izbrisan in vsi vaši podatki so še vedno zaščiteni na OrangeBOX -u in ki si ne bi želeli nemogoče misije, kot je naprava za varnostno kopiranje, kar samo priključite in si oglejte indikator napredka, ne da bi naredili kaj več (samo upajte, da je čarobno dim ne bo prišel ven na koncu:)).

OrangeBOX je moj prvi projekt, ki je večinoma programska in ne strojna oprema. V bistvu gre za NAS po meri, s priloženim LCD -jem.

1. korak: Deli strojne opreme

Deli strojne opreme
Deli strojne opreme
Deli strojne opreme
Deli strojne opreme
Deli strojne opreme
Deli strojne opreme

Orange PI zero je odprtokodni enosmerni računalnik. Lahko deluje z operacijskim sistemom Android 4.4, Ubuntu, Debian. Uporablja AllWinner H2 SoC in ima 256MB/512MB DDR3 SDRAM (256 MB različica je standardna različica. Orange Pi Zero je za vsakogar, ki želi začeti ustvarjati s tehnologijo - ne samo za njeno uporabo. To je preprosto, zabavno in uporabno orodje lahko uporabite za začetek prevzemanja nadzora nad svetom okoli vas (https://www.orangepi.org/orangepizero/). Zato je za nas, da nadaljujemo:)

  • Kovinska/plastična/lesena škatla (uporabil sem staro zunanjo škatlo za cd-rw Yamaha)
  • Oranžna PI Zero ali boljša (izhod GPIO se lahko spremeni, če uporabljate drug model)
  • 2x20 RGB LCD zasloni
  • Vsak pogon SFF 3.5/ LFF 2.55 usb
  • Sata -> USB adapter. Upoštevajte, da čeprav OrangePI ne nalaga zgornje meje največje zmogljivosti pogona, pa veliko mostov USB-SATA (največ 2TB). Oranžni PI Zero, ki ga uporabljam, ima samo ena vrata USB 2.0 z efektivno hitrostjo prenosa največ 28 MB/s. Izbral sem USB3.0 (pripravljen za prihodnje nadgradnje) -> SATA most (blagovna znamka ne bo omenjena) in omejuje mejo, zato je bolje izbrati most, za katerega je dokazano, da podpira večje pogone, kot so mostovi na osnovi čipov JMicron JMS567. Preden ga kupite, naredite lastno raziskavo. Z omejitvijo hitrosti in trdega diska lahko živim z uporabo 2TB sata pogona v tem projektu (če vstavite večje diske, bo to prepoznano, vendar bo OS videl le prvih 2TB, zato bo preostala zmogljivost izgubljeno).
  • 12V adapter 2,5 A ali več. Izračunajte približno 500 mA običajne uporabe za OPI Zero in 1,5A vrha za standardni pogon LFF SATA. Prevelika velikost nikoli ne škodi. V moji nastavitvi je Yamaha psu (kar bi lahko dalo več kot dovolj toka na obeh tirnicah 12+5V) na žalost eksplodiral: (zaradi razvrščanja glavnega stikala na GND za sekundo, zato sem moral lepiti v običajnem adapterju, pri vsaj škatla je postala nekaj gramov lažja.
  • Buck pretvornik DC-DC 12V-> 5V. Uporabil sem enak nastavljiv mini denar kot pri IronForgeu, deluje odlično.

Neobvezno

Če ste pripravljeni porabiti + 10 $, lahko dobite Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), ki je podobnega faktorja in vam nudi Gbe in SATA3. Za to je mogoče uporabiti knjižnico ožičenja Libra PI: https://github.com/OrangePiLibra/WiringPi, ker pa je izpis GPIO drugačen, to ni v obsegu tega pisanja.

To lahko naredite tudi z novim Orange PI Plus2, ki ima priključek SATA in lahko preskočite uporabo pretvornikov sata-> usb skupaj z njihovimi omejitvami. Če nameravate uporabljati FreeBSD ali druge BSD -je, serija Orange PI morda ni najboljša izbira, saj je njihova strojna podpora omejena (na primer za zagon morate uporabiti ključ USB). Za BSD je najboljši nasvet uporaba Raspberry PI. Tako koda C za LCD, kot tudi vsi skripti lupine so prenosljivi na kateri koli drug sistem UNIX.

2. korak: Oblikovanje strojne opreme

Oblikovanje strojne opreme
Oblikovanje strojne opreme
Oblikovanje strojne opreme
Oblikovanje strojne opreme
Oblikovanje strojne opreme
Oblikovanje strojne opreme

Škatla Yamaha je bila ravno dovolj za shranjevanje vsega tega, ne bi imela dovolj prostora za Orange PI PC ali običajno ploščo z obliko faktorja Raspi.

Ethernet je bil izvlečen s podaljškom na zadnji strani škatle. Ne pozabite, da ima Orange PI zero le vmesnik Ethernet 100mbit/s, če želite hitreje, boste morali uporabiti drugo ploščo, kot je Asus Tinkerboard/RPI3B+/Drugi modeli Orange PI.

Napačen izhod PIN je edina napaka, ki jo lahko naredite v tem projektu, zato je vredno uporabiti nekaj načel načela palca:

1, Vedno poskušajte uporabiti kabel iste barve od KONCA do KONCA. Tudi sam naredim isto "napako" v nekaterih projektih, kjer tega nimam, preprosto zato, ker nimam pri roki dovolj dolgih moško-moških/moških-ženskih/žensko-ženskih kablov in skupaj popravim 2 samo zato, da nadaljujem vezje. Če svojega dela ne dokumentirate pravilno, lahko to čez leta povzroči glavobole, kjer morate opraviti popravilo, nadgradnjo.

2, na priključke nanesite nekaj vročega lepila. V primeru uporabe teh kablov mm/mf/ff v stilu arduino-starterja, ki niso vrhunske kakovosti, je precej pogosto (še posebej, če se premikate/prevažate napravo), da konektorji zdrsnejo. Če veste, da bo to naprava za dolgotrajno uporabo (morda jo uporabite, dokler se ne pokvari ?!), je bolje, da nanesete malo vročega lepila na strani OrangePI in LCD na priključkih, da ju držite skupaj. To lahko pozneje zlahka stopimo/opraskamo.

3, OrangePI ničelno ožičenje Slaba novica je, da pinout Orange PI NI enak kot Raspberry PI 0/1/2/3 in obstaja celo razlika med drugimi modeli Orange PI. Najboljši način je, da dobite knjižnico ožičenja (različica Orange PI Zero). Slika je lahko nekoliko zmedena, toda to je bilo najboljše, kar sem našel. Eno je ogledalo drugega kot 180 stopinj. Čeprav je lahko grafična podoba CLI težje razumljiva, je najbolj jasna.

Dva konca vtičnic lahko vedno ločite tako, da en konec obravnavate kot POZITIVNI konec (+3,3/+5 V), drugega pa kot NEGATIVNI konec (en GND) -> to je konec priključka, obrnjen proti vratom ETHERNET.

Iz tabele Wiring PI Zero potrebujete le en stolpec, na katerega wPI pozabi na druge, kot da jih ne bi bilo.

Tako na primer za priključitev LCD_E 15 (to je wPI 15!) In LCD_RS 16 (to je wPI 16!) Preštejte zatiče iz POZITIVNEGA konca priključka (enostavno narediti s peresom ali majhnim izvijačem). To se bo fizično znižalo za 4 in 5 zatičev.

4, združite se. Če obstaja možnost, da rabljene zatiče postavite drug poleg drugega (jih razvrstite v skupine), se vedno odločite tako, da se med seboj oprijemajo tudi brez vročega lepila, pa tudi pri drugih projektih, ko imate 2x 4x 6x molex priključke, lahko samo izkoristite zatiče, ki so drug poleg drugega. Tukaj je najboljše, kar lahko naredite, v skupini 2-3-ih (idealno pri uporabi odrezanih mostičnih kablov iz starih računalnikov).

Zatiči, ki se uporabljajo za povezavo LCD zaslona OrangePI:

// UPORABLJAMO ŠTEVILKE PIN PIN WIRINGPI

#define LCD_E 15 // Omogoči pin #define LCD_RS 16 // Registriraj izbrani pin #define LCD_D4 5 // Podatkovni pin 4 #define LCD_D5 6 // Podatkovni pin 5 #define LCD_D6 10 // Podatkovni pin 6 #define LCD_D7 11 // Podatkovni pin 7

Zatiči, ki se uporabljajo za nadzor osvetlitve RGB

$ G napišite 10

$ G zapiši 4 1 $ G zapiši 7 1

Oranžni PI nič wPI zatiči 1, 4, 7. Edina čarovnija, ki jo ta LCD lahko naredi v primerjavi s standardnim LCD -jem za osvetlitev ozadja s fiksno modro ali zeleno osvetlitvijo, kjer imate eno katodo, ki jo je treba potegniti navzdol do GND, da ima 3 za 3 barve. Rdeča, zelena in modra. Če spremenite kombinacijo, ki je vklopljena, lahko iz teh osnovnih barv zmešate različne barve, vendar le visoki konci brez odtenkov, ker ne morete nadzorovati svetlosti barve (vklopljena ali izklopljena).

Aditivno mešanje barv: dodajanje rdeče zeleni daje rumeno; dodajanje rdeče modri daje magenta; dodajanje zelene k modri daje cian; če seštejemo vse tri osnovne barve, dobimo belo.

3. korak: Operacijski sistem

Operacijski sistem
Operacijski sistem

OrangeBOX se zažene in armbijski linux (na osnovi Debian Stretch) 4.14.18-sunxi jedro z varnim požarnim okoljem, se poveže z VPN in čaka na oddaljene ukaze za varnostno kopiranje s strežnika.

Načela oblikovanja:

-Šifriranje diska na podlagi popolnega luksa (naprava sama ne vsebuje ključa za odpiranje rezervnega pogona. Začasno bo kopiran z oddaljenega strežnika na ram /dev /shm, odprt pogon in ključ izbrisan. Ko je varnostno kopiranje končano se pogon zapre in OrangeBox se samodejno izklopi v 1 minuti.)

-Vsi ukazi in ključi so poslani z oddaljenega strežnika (naprava sama vsebuje samo certifikat vpn) nima nobenega dostopa do oddaljenega strežnika, tudi ssh iz te naprave je požarno obzidan

-Lokalni datotečni sistemi, nešifrirani, da se lahko zaženejo, vendar ne vsebujejo nič koristnega, in ker je vzporedno povezovanje VPN na drugem koncu zelo omejeno, tudi če je naprava popolnoma izgubljena, napadalec ne more storiti ničesar

Prenesite Armbian Stretch s

Zaženite sistem:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Uredite /etc /inittab, vso konzolo lahko onemogočite, saj bo polje uporabljeno kot brez glave. Komentirajte naslednji razdelek:

#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

Znova zaženite škatlo in odstranite systemd, da boste imeli pravi odprtokodni sistem brez naključne programske opreme.

apt-get remove --purge --automatsko odstrani systemd

Namestite nekaj paketov

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

Namestite knjižnico wiringpi

cd /usr /src

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

Ustvarite oranžnega uporabnika za LCD zaslon

groupadd -g 1000 oranžna

useradd -m -d /home /oranžno -s /bin /bash -u 1000 -g oranžno oranžno

Stražar, ki ne bdi nad vami

apt-get install watchdog

Ogled/etc/default/watchdog # Začeti nadzornega psa ob zagonu? 0 ali 1 run_watchdog = 1 # Začeti wd_keepalive po ustavitvi nadzornika? 0 ali 1 run_wd_keepalive = 1 # Naloži modul pred zagonom nadzornika watchdog_module = "none" # Določite dodatne možnosti nadzornika tukaj (glejte stran).

Če pogledam /etc/watchdog.conf

# Omogočite vsaj te

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

/etc/init.d/watchdog start

Obstajati mora vsaj 1 nit jedra in 1 postopek:

koren 42 0,0 0,0 0 0? I <10:50 0:00 [watchdogd] root 14613 0,0 0,2 1432 1080? SLs 13:31 0:00/usr/sbin/watchdog

Testiranje:

Ne pozabite ustaviti vsega in narediti sinhronizacijo && sinhronizacijo && sinhronizacijo, da preostale podatke napišete na disk. Potem kot korenska težava:

echo 1> /dev /watchdog

Po nekaj sekundah se mora stroj znova zagnati.

Kot navaja priročnik:

o Ali je procesna miza polna?

o Ali je dovolj prostega pomnilnika? o Ali je dovolj dodeljenega pomnilnika? o Ali so nekatere datoteke dostopne? o Ali so se nekatere datoteke v določenem intervalu spremenile? o Ali je povprečna delovna obremenitev previsoka? o Ali je prišlo do prelivanja datotečne tabele? o Ali postopek še teče? Postopek je določen s pid datoteko. o Ali nekateri naslovi IP odgovarjajo na ping? o Ali omrežni vmesniki prejemajo promet? o Ali je temperatura previsoka? (Podatki o temperaturi niso vedno na voljo.) O Izvedite ukaz, ki ga določi uporabnik, da izvedete poljubne teste. o Izvedite enega ali več ukazov za testiranje/popravilo, ki jih najdete v /etc/watchdog.d. Ti ukazi se kličejo s preskusom argumentov ali popravkom. Če katero od teh preverjanj ne uspe, bo nadzorni sistem povzročil zaustavitev. Če kateri koli od teh preskusov, razen binarne datoteke, ki jo določi uporabnik, traja dlje kot eno minuto, se bo tudi računalnik znova zagnal.

Ta nadzornik bi lahko deloval v redu z običajnimi arhitekturami x86, vendar na ploščah, ki temeljijo na ARM -u, kot so Raspberry PI, Orange PI, mi je neštetokrat spodletelo. Sistem lahko preide v stanja, v katerih visi celo čuvaj. Naj ga vseeno konfiguriramo, morda se bo z leti z nadgradnjo apt-get izboljšalo:(

4. korak: Oblikovanje programske opreme

Oblikovanje programske opreme
Oblikovanje programske opreme

Sam postopek varnostnega kopiranja temelji na rsync (najboljše orodje za varnostno kopiranje, kar so jih kdaj izumili), podatke pa potisne iz strežnika SERVER-> OrangeBOX.

Izvleček podatkov iz rsync je bil edini zahteven del projekta, da je na LCD -ju natisnjena vrstica napredka glede varnostne kopije.

Obstajali so 3 možni načini za izračun napredka varnostnega kopiranja:

1, z uporabo formul, kot je https://wintelguy.com/transfertimecalc.pl, določite, koliko časa lahko traja prenos

Čas prenosa (d: h: m: s): 0: 02: 44: 00

Za primerjavo: predviden čas za prenos datoteke 123 GB prek različnih omrežnih povezav (d: h: m: s): linija 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

Če se rsync konča, signalizira skriptu, da ustavi izračun. Ta metoda je le približna in nezanesljiva, tudi hitrost povezave ni določena, lahko se upočasni, znova pospeši. To je le teoretski izračun.

2, Preverjanje velikosti v imeniku, da ugotovite, koliko podatkov smo že sinhronizirali. Z majhnimi datotekami na stotine GB lahko postane zelo počasen (čeprav du -s v Linuxu naredi nekaj predpomnjenja, če ga znova zaženete)

Gostitelj A -> Podatki strežnika za varnostno kopiranje Podatkovni katalog: 235 GB

Gostitelj B -> Podatki odjemalca Orange box, ki jih imamo trenutno Podatkovni direktorij: 112 GB

Delta je 123 GB.

3, Če je datotečni sistem namenski, kot je v našem primeru/dev/mapper/backup, lahko izkoristimo splošni indikator uporabe datotečnega sistema, da ugotovimo, kako napreduje naša varnostna kopija, in to je res prekleto hitro. V tem primeru nam ni treba niti poslati rsync stdout, samo zaženite suho rsync, počakajte, da se dokonča, izračunajte delto v bajtih in to preverite s prostim prostorom, kar imamo na rezervnem pogonu in voila, ki jo lahko zdaj naredi lep stolpčni graf. To je bila metoda, ki sem jo izbral in tukaj je moj scenarij:

#!/bin/bash

# Kalkulator napredovanja varnostnega kopiranja za OrangeBOX by NLD # Različica: 0.2 (2018/03/05) # # Zaženite ga kot neprivilegiranega uporabnika iz cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Ta skript je odgovoren le za prikaz podatkov na LCD -ju, posreduje # z glavnim programom posredno prek datotek položaja in zaklepanja. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # uporaba diska na začetku varnostne kopije TFILE = "$ HOME/trans.size" # skupna vnaprej izračunana velikost prenosa BFILE = "$ HOME/ backup.lck " # določa začeto stanje FFILE =" $ HOME/backup.fin " # določa končano stanje LFILE1 =" $ HOME/lcd1.bar " # Podatki o indikatorju napredka LCD LFILE2 =" $ HOME/lcd2.bar " # Napredek LCD indikatorski podatki SHUTDOWN = "1" # Če 1 bo sprožil drug skript, ki zapre polje ob koncu varnostne kopije BACKUP_CURRENT = "0" # Treba ga je inicializirati, vendar bo izračunan DRIVE_SIZE = "" # Velikost pogona v bajtih (sekundarno preverite) LCD = "sudo /bin /lcd" funkcija is_mount () {grep -q "$ 1" /proc /mounts status = $? } funkcija rdeča () {sudo /bin /lcdcolor rdeča} funkcija zelena () {sudo /bin /lcdcolor zelena} funkcija modra () {sudo /bin /lcdcolor modra} # Počisti stanje (nastavljeno pri zagonu z bootup_display.sh). Varnostno kopiranje ni v teku, NE pokvarite LCD -prikazovalnika stanja #. Prikaz napredka samo v primeru, da obstaja varnostna kopija => Ni začetne datoteke IN Ni datoteke s plavuti = zapusti, če [! -f $ BFILE] && [! -f $ FFILE]; nato izhod 1 fi # Če je varnostno kopiranje končano, bo to skript prikazal in odstranil ključavnice #, da se ne bo mogel znova zagnati do naslednje iniciacije. če [-f $ FFILE]; nato zeleno $ LCD "Backup" "** Completed **" echo "Backup Completed" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Varnostno kopiranje je končano, če je [$ SHUTDOWN == "1"]; nato odmevajte "Izvajanje skripta za zaustavitev …" /home/orange/shutdown.sh & fi exit 0 fi # Od tega trenutka se skript izvede SAMO, če obstaja NEPREMAZNA varnostna kopija # zato bodo vse napake natisnjene na LCD in povzročile skript # prekiniti, vendar ne bo odstranila datoteke backup.lck, zato bo vstopila sem vedno znova in ocenila pogoje. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; potem rdeč $ LCD "ERR: Varnostni pogon" "" ni nameščen! " echo "Varnostni pogon ni nameščen" izhod 1 fi, če [! -s $ TFILE]; nato rdeče $ LCD "ERR: transfile" "je prazno" echo "Datoteka za izračun transportne velikosti je prazna." izhod 1 fi BACKUP_OVERALL = $ (glava -1 $ TFILE | tr -d '\ n') če [-z $ BACKUP_OVERALL]; nato rdeče $ LCD "ERR: Povratek velikosti" "s strežnika neveljaven" echo "Ponovno odčitavanje celotne velikosti varnostne kopije je neveljavno 1" izhod 1 fi, če!

Čeprav je koda preprosta, je nekaj opisa, kaj počne:

1, Če datoteka BFILE ali FFILE ne obstaja (to je stanje po jasnem zagonu), to pomeni, da ni postopka varnostnega kopiranja, zato NE storite ničesar, samo zapustite. Na ta način lahko narišete vse lepe informacije o zagonu, kot so ime gostitelja, ip, čas delovanja itd., In ne bodo zmedene.

2, Pojdimo na razdelek is_mount $ BACKUP_DRIVE. Samo opomnik, edini način, da smo prišli sem, je, da se je varnostno kopiranje začelo, tako da BFILE obstaja. Zdaj koda samo preverja različne napake, kot je nameščen rezervni pogon ?, ali skupna velikost tega, kar nameravamo varnostno kopirati, presega pogon? ali druge napake. Ne pozabite, da je to program samo za prikaz, tudi če bi velikost presegla varnostne kopije, ne bo prekinila ničesar.

3, V redu, vsi pregledi napak so očiščeni za izračun odstotnega grafa. Najprej skript naredi "posnetek" prostora, ki je trenutno v bajtih v datotečnem sistemu varnostne kopije, in ga shrani v datoteko VFILE. Kaj je namen tega: bash skript je brez stanja, izgublja podatke med izvedbami, zato, če se želite "spomniti" nekaterih podatkov iz prejšnje izvedbe, jih morate nekam shraniti. V našem primeru je to le preprosta besedilna datoteka. Za poenostavitev recimo, da je naš START_POS 1 GB (podatki, ki jih imamo), varnostno kopiranje je 2 GB, skupna zmogljivost pogona pa 10 GB.

4, Naslednjič, ko se skript zažene, VFILE obstaja in bo to prebrano nazaj (zato vemo, kakšen je bil začetni položaj, če pogon ni bil prazen), za izračun BACKUP_CURRENT, ki je v bistvu delta trenutno uporabljenega prostora na rezervnem pogonu minus začetni položaj, kar smo v zadnjem krogu shranili v VFILE (spet so to podatki, ki smo jih imeli na pogonu, ko se je varnostno kopiranje začelo). Skript interno deluje z bajti, vendar da bi bilo poenostavljeno po pol ure smo varnostno kopirali 500 MB podatkov, potem bi bila formula BACKUP_CURRENT = 1,5 GB - 1 GB (začetno stanje) =>, ki nam vrne točno 500 MB, to je kar smo do sedaj varnostno kopirali. Vidite lahko, da brez spremljanja prvotnih podatkov na začetku varnostnega kopiranja ta izračun velikosti ne bi uspel, ker bi videli, da je trenutno uporabljen prostor 1,5 GB, ne da bi vedeli, da je na disku ves čas 1 koncertni podatek iz prejšnje varnostne kopije, zato bi predpostavljali, da nam je strežnik namesto 500 MB poslal 1,5 GB podatkov.

5, BACKUP_OVERALL bo prebran, te podatke je strežnik izračunal, ko je izvedel začetno suho rsync (torej je to zunanji vir podatkov, ki vsebuje količino bajtov, ki bodo varnostno kopirani iz strežnika-> OrangeBOX). Ta vrednost bo trenutno preverjena glede na celoten BREZPLAČNI prostor na disku, in če jo preseže, se na LCD -ju prikaže sporočilo o napaki in skript ustavi izvajanje. Ne pozabite še enkrat, da je vse, kar ta skript prikaže, SAMO, ne moti procesa varnostnega kopiranja. Če očistite datoteke na disku ali se količina datotek na daljavo spremeni, zato se BACKUP_OVERALL v nekem trenutku spremeni, bo nadaljeval.

6, Končno smo končali s preverjanji druge stopnje, čas je, da nekaj prikažemo. Skript prikazuje podatke na konzoli in na LCD -ju s preprosto aplikacijo C. Ozadje se preklopi v modro, kar kaže, da se je varnostno kopiranje končno začelo in da je napredek izračunan po naslednji formuli PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). To je osnovni izračun odstotka, vzamemo trenutni znesek, v našem primeru 0,5 GB*100/2 GB = 25%.

7, Številke se tudi pretvorijo iz bajtov v mega/giga bajte in zaslon se samodejno prikaže v MB, če je nižji od 1 GB.

8, Ena stvar, ki jo je treba v tem primeru preslikati, je 25% na LCD -zaslonu z 20 stolpci. V našem primeru bi bilo to 25 * 20/100 = 5. Trenutno se izvaja osvežitev s programom LCD, tako da bo vsakič, ko pokličete program, narisal celoten zaslon. Torej bi v tem primeru petkrat izvedel zanko for, da bi narisal 5 oznak # na zaslonu, kar bi se v vsakem krogu prikazalo kot grdo utripanje, zato namesto tega zapisujem izračunane podatke vrstice napredka v LFILE1 in 2, ki v tem primeru po 5 krogov bi vsebovalo ##### in to se prebere nazaj in prikaže na LCD -prikazovalniku. LFILE1 in 2 lahko postavite tudi na ramdisk, da shranite sdcard pred dodatnimi operacijami pisanja, zame to ni povzročilo težav, skript se zažene enkrat na minuto iz crona.

9, Ko se varnostno kopiranje konča, se bo drugi skript iz strežnika, na katerem se izvaja rsync, dotaknil FFILE (Finish File). V naslednji zanki bo backup_progress.sh prikazal, da je varnostno kopiranje končano, in po izbiri pokliče drug skript, da zapre OrangeBOX. Na tej točki izbriše datoteke za zaklepanje, zaradi česar nadaljnje izvedbe niso možne, zato tudi, če naslednji trenutek, ko se zažene ta skript, ne omogočite zaustavitve, se bo takoj ustavil, ker datoteke BFILE ni in datoteke FFILE ni. Zato se bo sporočilo o dokončani varnostni kopiji prikazovalo za nedoločen čas, razen če se varnostno kopiranje znova zažene.

Skript za oddaljeno varnostno kopiranje (orange-remote.sh):

Za varnostno kopiranje boste morali ustvariti ključ ssh in ključ za šifriranje luks za pogon. Ko prvič ročno zaženete oddaljeno varnostno kopijo, se shrani prstni odtis gostitelja oranžnih škatel v datoteko gostiteljev (od tega trenutka se lahko samodejno zažene s cronom).

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

Če želite izvedeti svoj identifikator trdega diska, zaženite uuid, blkid ali pa poiščite ustrezne imenike/dev/disk/.

Imenik include exclude lahko nastavite, če ne želite varnostno kopirati vsega. To je precej nadležen postopek, saj morate za rsync, če želite izključiti en podimenik globoko v strukturi:

+ /a

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

Ker ta skript na daljavo izvaja ukaze na OrangeBOX -u, nima nadzora nad povratnimi spremenljivkami s te strani, zato uporabljam nekaj pametnih trikov, na primer, da bo poslal sporočilo o odpiranju oddaljenega pogona v /tmp/contmsg.txt, nato pa razčlenil da preveri, ali je bil uspešen, če ne, potem spremeni binarno datoteko rsync v neizvedljivo, tako da rsync ne bo poskušal naložiti podatkov v korenske datoteke OrangePIs, ki zapolnijo kartico SD. Prav tako je dobra praksa, da nastavite nespremenljiv bit na chattr +i /mnt /backup, da to onemogočite.

Predračun velikosti poteka lokalno na strežniku, zato je treba to datoteko poslati v OrangeBOX v naslednjem koraku.

Glavna varnostna kopija se sproži kot zanka za ((i = 0; i <100; i ++)); storiti, ker se v primeru nizke kakovosti DSL/kabelskih internetnih povezav rsync lahko pogosto prekine. Če se uspešno zaključi, se zanka prekine, ne da bi poskušali več ponovitev. To brezhibno deluje z dobrimi operacijskimi sistemi, če pa bi bil iz nekega razloga oddaljeno okence okna in bi bil dostop zavrnjen, tako kot običajno na NTUSER. DAT, bi rsync vrnil kodo napake in ta zanka bi se izvedla 100 -krat, nato pa še vedno ne bi uspela.

5. korak: Zapiranje & ToDo seznam

Seznam zapiranja in opravil
Seznam zapiranja in opravil
Zapiranje & Seznam opravil
Zapiranje & Seznam opravil

Moj pouk še enkrat dokazuje, kako lahko sami ustvarite nekaj boljšega, bolj prilagodljivega naprave iz 10 -odstotnega računalnika, ki s svojimi lastniškimi zaklenjenimi napravami NAS, čudnimi notranjimi particijami, okvarjenim Linuxom z orodji za segfaulting upravlja z Buffalom zaradi njihove programske opreme Windows, zaprte vdelane programske opreme, slabe dokumentacije in podpore, ne glede na to, koliko denarja boste porabili, nikoli ne boste dobili kazalnika napredka, ki prikazuje vašo varnostno kopijo, da ne omenjam, kako kul je OrangeBox (z njim uporabljam celo oranžni kabel CAT5: D).

Ker mini računalniki postajajo vse močnejši, hkrati pa ohranjajo enako cenovno linijo <100 $, jih lahko uporabljamo za vedno več nalog. Ker so vrata Gbe Ethernet v teh 1-2 letih precej pogosta, se bo pomnilnik na teh ploščah dramatično povečal in jih je mogoče uporabiti tudi za sisteme za varnostno kopiranje na osnovi ZFS.

-Kazalnik napredka zrna glede na program C (glej WasserStation enega od mojih drugih projektov). Trenutno v znakovnem načinu z lcdPuts (lcd, line1) uporabljamo le # oznako # označevalca #, to bi lahko izboljšali tudi, če uporabite LCD -je z znaki za razdelitev 1 stolpca na 5 delov, glavni program C pa lahko vzame celo število, na primer 25, in izvleče vrstico napredka pravilno ali dodatno izboljšati z uporabo grafičnega LCD -zaslona

-Možnost imeti odstranljiv trdi disk za ustvarjanje novih in novih varnostnih kopij in njihovo premikanje na različne lokacije (če polje zazna prazen pogon, ga mora samodejno formatirati s ključem za šifriranje, ko ga prejmete).

-Če želite z makerbotom natisniti lastno torbico, bi vam lahko bil OrangeNAS zanimiv: