Turinys:

„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys: 5 žingsniai
„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys: 5 žingsniai

Video: „OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys: 5 žingsniai

Video: „OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys: 5 žingsniai
Video: Realising Relationship Buildings® | Orangebox 2024, Liepa
Anonim
„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys
„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys
„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys
„OrangeBOX“: „OrangePI“pagrįstas saugus atsarginių kopijų saugojimo įrenginys

„OrangeBOX“yra „viskas viename“nuotolinės saugyklos atsarginė dėžutė bet kokiems serveriams.

Jūsų serveris gali būti užkrėstas, sugadintas, nuvalytas, o visi jūsų duomenys vis dar yra saugūs „OrangeBOX“ir kam nepatiktų neįmanoma misija, pavyzdžiui, atsarginis įrenginys, kurį ką tik prijungėte ir pamatysite progreso indikatorių nieko nedarydami (tik tikiuosi, kad stebuklas dūmai pabaigoje neišeis:)).

„OrangeBOX“yra mano pirmasis projektas, kuris dažniausiai yra programinė įranga, o ne aparatinė įsilaužimas. Iš esmės tai yra pagal užsakymą pagamintas NAS su prijungtu LCD.

1 žingsnis: aparatinės įrangos dalys

Techninės įrangos dalys
Techninės įrangos dalys
Techninės įrangos dalys
Techninės įrangos dalys
Techninės įrangos dalys
Techninės įrangos dalys

„Orange PI zero“yra atviro kodo vienos plokštės kompiuteris. Jis gali paleisti „Android 4.4“, „Ubuntu“, „Debian“. Jis naudoja „AllWinner H2 SoC“ir turi 256 MB/512 MB DDR3 SDRAM (256 MB versija yra standartinė versija. „Orange Pi Zero“skirta visiems, norintiems pradėti kurti naudojant technologijas - ne tik jas vartoti. Tai paprastas, įdomus ir naudingas įrankis gali pradėti valdyti jus supantį pasaulį (https://www.orangepi.org/orangepizero/). Taigi, kaip tik mums

  • Metalinė/plastikinė/medinė dėžutė (naudojau seną „Yamaha“išorinę cd-rw dėžutę)
  • Oranžinis PI nulis arba geresnis (jei naudojate kitą modelį, GPIO kištukas gali pasikeisti)
  • 2x20 RGB LCD ekranai
  • Bet koks SFF 3.5/ LFF 2.55 USB diskas
  • Sata -> USB adapteris. Atminkite, kad nors „OrangePI“nenustato viršutinės maksimalios diskų talpos ribos, tačiau daugelis USB-SATA tiltų tai daro (ne daugiau kaip 2 TB). Naudojamas oranžinis „PI Zero I“turi tik vieną USB 2.0 prievadą, kurio faktinis perdavimo greitis yra 28 MB/s. Aš pasirinkau USB3.0 (paruoštą būsimiems atnaujinimams) -> SATA tiltas (prekės ženklas nebus paminėtas) ir jis riboja ribą, todėl geriau pasirinkti tiltą, kuris, kaip įrodyta, palaiko didesnius diskus, tokius kaip JMicron JMS567 lustiniai tiltai. Prieš pirkdami atlikite savo tyrimus. Aš galiu gyventi su greičiu ir standžiojo disko apribojimais, naudodamas 2 TB sata diską šiame projekte (jei įdėsite didesnius diskus, jis bus atpažintas, tačiau OS matys tik pirmuosius 2 TB, taigi likusi talpa bus pasiklydo).
  • 12V 2,5 A ar didesnio stiprintuvo adapteris. Apskaičiuokite apie 500 mA įprastą „OPI Zero“naudojimą ir 1,5 A smailę standartiniam LFF SATA įrenginiui. Per didelis dydis niekada nekenkia. Mano sąrankoje „Yamaha psu“(kas galėjo tiekti daugiau nei pakankamai srovės abiejuose 12+5 V bėgiuose), deja, susprogo: (dėl to, kad pagrindinis jungiklis sekundę buvo surūšiuotas į GND, todėl turėjau įklijuoti įprastą adapterį, bent jau tai padarė dėžutę pora gramų lengvesnę.
  • Buck keitiklis DC-DC 12V-> 5V. Aš naudojau tą patį reguliuojamą mini baką, kaip ir su „IronForge“, puikiai veikia.

Neprivaloma

Jei norite išleisti + 10 USD, galite įsigyti „Orange Pi Plus“(https://www.armbian.com/orange-pi-one-plus/), kuris yra panašus formos veiksnys ir suteikia jums „Gbe“ir „SATA3“. Tam gali būti naudojama Libra PI laidų biblioteka: https://github.com/OrangePiLibra/WiringPi, tačiau kadangi GPIO kištukas yra kitoks, jis nepatenka į šio rašymo sritį.

Taip pat galite tai padaryti naudodami naują „Orange PI Plus2“, turintį SATA jungtį, ir galite praleisti „sata-> usb“keitiklių naudojimą kartu su jų apribojimais. Jei planuojate naudoti „FreeBSD“ar kitus BSD, „Orange PI“serija gali būti ne pats geriausias pasirinkimas, nes jų techninė įranga yra ribota (pavyzdžiui, norint paleisti reikia naudoti USB atmintinę). BSD yra geriausias patarimas naudoti Raspberry PI. Tiek LCD C kodas, tiek visi apvalkalo scenarijai yra nešiojami į bet kurias kitas UNIX sistemas.

2 žingsnis: Aparatūros projektavimas

Techninės įrangos dizainas
Techninės įrangos dizainas
Techninės įrangos dizainas
Techninės įrangos dizainas
Techninės įrangos dizainas
Techninės įrangos dizainas

„Yamaha“dėžutės užteko, kad visa tai būtų saugoma, joje neužtektų vietos „Orange PI“kompiuteriui ar įprastai „Raspi“formos faktoriaus plokštei.

„Ethernet“buvo pristatytas su ilgintuvu dėžutės gale. Atminkite, kad „Orange PI zero“turi tik 100mbit/s Ethernet sąsają, jei norite greičiau, turėsite naudoti kitą plokštę, pvz., „Asus Tinkerboard“/RPI3B+/kitus „Orange PI“modelius.

Neteisingas PIN išvestis yra vienintelė klaida, kurią galite padaryti šiame projekte, todėl verta taikyti kai kurias nykščio principų taisykles:

1, Visada stenkitės naudoti tos pačios spalvos kabelį nuo END iki END. Aš pati darau tą pačią „klaidą“kai kuriuose projektuose, kuriuose to nedarau, vien todėl, kad neturiu pakankamai ilgų kabelių vyriškos lyties/vyriškos lyties/moteriškos lyties ir moteriškų moterų ir sujungiu 2 kartu, kad galėčiau toliau dirbti grandinė. Jei netinkamai dokumentuosite savo darbą, tai po daugelio metų gali sukelti galvos skausmą, kai jūs turite atlikti remontą, atnaujinti.

2, ant jungčių uždėkite šiek tiek karštų klijų. Jei naudojate šiuos arduino-starterio komplekto stiliaus mm/mf/ff kabelius, kurie nėra aukščiausios kokybės, gana dažnai (ypač jei judate/transportuojate prietaisą) jungtys išslysta. Jei žinote, kad tai bus ilgalaikis prietaisas (galbūt naudokite tol, kol jis nesuges ?!), tada geriau uždėkite šiek tiek karštų klijų tiek jungčių OrangePI, tiek skystųjų kristalų pusėje, kad jie būtų kartu. Jei reikia, vėliau jį galima lengvai išlydyti/subraižyti.

3, „OrangePI“nulio laidai Blogos naujienos yra tai, kad „Orange PI“kištukas NĖRA tas pats kaip „Raspberry PI 0/1/2/3“ir netgi yra skirtumas tarp kitų „Orange PI“modelių. Geriausias būdas yra gauti laidų biblioteką („Orange PI Zero“versija). Vaizdas gali būti šiek tiek painus, bet tai buvo geriausia, ką galėjau rasti. Vienas yra 180 laipsnių kito veidrodis. Nors CLI ne grafinį vaizdą gali būti sunkiau suvokti, jis yra tiesiausias.

Visada galite skirtis 2 lizdų galus, vieną galą laikydami POSITIVE (+3.3/+5V), o kitą -NEGATIVE (vienas GND) -> tai jungties galas, nukreiptas į ETHERNET prievadą.

Iš „Wiring PI Zero“lentelės jums reikės tik vieno stulpelio, o „wPI“pamirš apie kitus, kaip jų nebūtų.

Pavyzdžiui, norėdami prijungti LCD_E 15 (tai yra wPI 15!) Ir LCD_RS 16 (tai yra wPI 16!), Suskaičiuokite kaiščius nuo jungties POSITIVE (tai lengva padaryti rašikliu ar mažu atsuktuvu). Tai fiziškai sumažės 4 kaiščiai ir 5 kaiščiai.

4, sugrupuoti. Jei yra galimybė uždėti panaudotus kaiščius vienas šalia kito (juos sugrupuojant) visada pasirinko tai, tai leidžia jiems susilaikyti vienas kitam net ir be karštų klijų, taip pat ir kituose projektuose, kai turite 2x 4x 6x molex jungtis. tiesiog pasinaudokite smeigtukais, esančiais vienas šalia kito. Čia geriausia, ką galite padaryti, tai 2-3 sekundžių grupė (idealiai tinka naudojant išgelbėtus trumpus kabelius iš senų kompiuterių).

Smeigtukai, naudojami „OrangePI“LCD ekrano prijungimui:

// NAUDOTI WIRINGPI PIN kodų skaičius

#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Register select PIN #define LCD_D4 5 // Data pin 4 #define LCD_D5 6 // Data pin 5 #define LCD_D6 10 // Data pin 6 #define LCD_D7 11 // Duomenų kaištis 7

Smeigtukai, naudojami RGB foninio apšvietimo valdymui

$ G rašyti 10

$ G rašyti 4 1 $ G rašyti 7 1

Oranžinis PI nulis wPI kaiščiai 1, 4, 7. Vienintelis stebuklas, kurį šis LCD gali padaryti, palyginti su standartiniu mėlynos arba žalios spalvos apšvietimo LCD ekranu, kuriame yra vienas katodas, kurį reikia nuvilkti iki GND, kad būtų 3 spalvos. Raudona, žalia ir mėlyna. Pakeisdami įjungtos kombinacijos derinį, galite iš šių pagrindinių spalvų išmaišyti skirtingas spalvas, tačiau tik aukščiausios spalvos atspalvių nėra, nes negalite valdyti spalvos ryškumo (ji įjungta arba išjungta).

Papildomas spalvų maišymas: pridedant raudonos spalvos prie žalios, gaunama geltona spalva; pridedant raudoną prie mėlynos spalvos, gaunama rausvai raudona; pridedant žalią prie mėlynos spalvos, gaunamas žydras; sudėjus visas tris pagrindines spalvas, gaunama balta.

3 žingsnis: operacinė sistema

Operacinė sistema
Operacinė sistema

„OrangeBOX“paleidžiamas ir „Armbian linux“(pagrįstas „Debian Stretch“) 4.14.18-sunxi branduolys su saugia užkardos aplinka, prisijungia prie VPN ir laukia nuotolinių atsarginių komandų iš serverio.

Dizaino principai:

-Pilnas „luks“pagrindu sukurtas disko šifravimas (pačiame įrenginyje nėra rakto, skirto atidaryti atsarginį diską. Jis bus laikinai nukopijuotas iš nuotolinio serverio į „ram /dev /shm“, diskas atidarytas ir raktas ištrintas. Baigę kurti atsarginę kopiją diskas uždarytas ir „OrangeBox“automatiškai išsijungia per 1 minutę.)

-Visos komandos ir raktai siunčiami iš nuotolinio serverio (pačiame įrenginyje yra tik vpn sertifikatas), jis neturi JOKIOS prieigos prie nuotolinio serverio, net ir ssh iš šio įrenginio yra užkardytas

-Vietinės failų sistemos yra neužšifruotos, kad jas būtų galima paleisti, tačiau jose nėra nieko naudingo, o kadangi VPN aukštyn nukreipta nuoroda yra labai apribota, net ir visiškai praradus įrenginį, užpuolikas negali nieko padaryti

Atsisiųskite „Armbian Stretch“iš

Paleiskite sistemą ir paleiskite:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Redaguokite /etc /inittab, visa konsolė gali būti išjungta, nes dėžutė bus naudojama kaip be galvos. Komentuokite šį skyrių:

#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

Perkraukite dėžutę ir pašalinkite „systemd“, kad būtų sukurta tikra atviro kodo „bloatware“sistema.

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

Įdiekite kai kuriuos paketus

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

Įdiekite „wiringpi“biblioteką

cd /usr /src

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

Sukurkite oranžinį LCD ekrano naudotoją

groupadd -g 1000 apelsinų

useradd -m -d /home /orange -s /bin /bash -u 1000 -g oranžinė oranžinė

Sargybinis, kuris tavęs nesaugo

apt-get install watchdog

Žiūrite/etc/default/watchdog # Pradėti sargybinį įkrovos metu? 0 arba 1 run_watchdog = 1 # Pradėti „wd_keepalive“sustabdžius sargybinį? 0 arba 1 run_wd_keepalive = 1 # Prieš įkeldami sargybinį įkelti modulį watchdog_module = "none" # Čia nurodykite papildomas sargybos parinktis (žr. Puslapį).

Žiūrėdami /etc/watchdog.conf

# Bent įjunkite šias funkcijas

maksimali apkrova-1 = 24 maksimali apkrova-5 = 18 maksimali apkrova-15 = 12

/etc/init.d/watchdog start

Turi būti bent 1 branduolio gija ir 1 procesas:

šaknis 42 0,0 0,0 0 0? Aš <10:50 0:00 [stebėtojas] šaknis 14613 0,0 0,2 1432 1080? SL 13:31 0:00/usr/sbin/watchdog

Bandymas:

Būtinai sustabdykite viską ir atlikite sinchronizavimą, sinchronizavimą ir sinchronizavimą, kad įrašytumėte likusius duomenis į diską. Tada kaip pagrindinė problema:

echo 1> /dev /watchdog

Po kelių sekundžių mašina turėtų būti paleista iš naujo.

Kaip nurodyta instrukcijoje:

o Ar proceso lentelė pilna?

o Ar pakanka laisvos atminties? o Ar pakanka priskirtos atminties? o Ar kai kurie failai yra prieinami? o Ar per tam tikrą laiką pasikeitė kai kurie failai? o Ar vidutinis darbo krūvis per didelis? o Ar įvyko failų lentelės perpildymas? o Ar procesas vis dar vyksta? Procesą nurodo pid failas. o Ar kai kurie IP adresai atsako į ping? o Ar tinklo sąsajos priima srautą? o Ar temperatūra per aukšta? (Temperatūros duomenys ne visada pasiekiami.) O Vykdykite vartotojo apibrėžtą komandą, kad atliktumėte savavališkus bandymus. o Vykdykite vieną ar kelias bandymo/taisymo komandas, esančias /etc/watchdog.d. Šios komandos iškviečiamos atliekant argumentų testą arba taisymą. Jei kuris nors iš šių patikrinimų nepavyks, stebėtojas išsijungs. Jei kuris nors iš šių bandymų, išskyrus vartotojo apibrėžtą dvejetainį, trunka ilgiau nei minutę, įrenginys taip pat bus paleistas iš naujo.

Šis stebėtojas galėjo gerai veikti įprastose x86 architektūrose, tačiau ARM pagrįstose plokštėse, tokiose kaip „Raspberry PI“, „Orange PI“, man tai nepavyko daugybę kartų. Sistema gali pereiti į pakabinimo būsenas, kuriose kabo net sargybinis. Bet kokiu atveju sukonfigūruokime, galbūt per daugelį metų jis bus patobulintas atnaujinus „apt-get“:(

4 žingsnis: programinės įrangos projektavimas

Programinės įrangos projektavimas
Programinės įrangos projektavimas

Pats atsarginių kopijų kūrimo procesas yra pagrįstas rsync (geriausias kada nors sukurtas atsarginių kopijų kūrimo įrankis) duomenys gaunami iš SERVER-> OrangeBOX.

Duomenų ištraukimas iš „rsync“buvo vienintelė sudėtinga projekto dalis, kai LCD ekrane buvo išspausdinta eigos juosta apie atsarginę kopiją.

Buvo trys galimi būdai apskaičiuoti atsarginės kopijos eigą:

1, Naudodami formules, tokias kaip https://wintelguy.com/transfertimecalc.pl, kad nustatytumėte apytikslį laiką, per kurį gali praeiti perkėlimas

Perkėlimo laikas (d: h: m: s): 0: 02: 44: 00

Palyginimui: Numatomas laikas perkelti 123 GB failą per skirtingas tinklo nuorodas (d: h: m: s): T1/DS1 linija (1,544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Greitas eternetas (100 Mbps) - 0: 02: 44: 00 Gigabitinis Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabitų Ethernet (10 Gbps) - 0: 00: 01: 38

Jei „rsync“baigia, jis signalizuoja scenarijų, kad jis sustabdytų skaičiavimą. Šis metodas yra tik apytikslis ir nepatikimas, taip pat ryšio greitis nėra fiksuotas, jis gali sulėtėti, vėl pagreitėti. Tai tik teorinis skaičiavimas.

2, Atliekame katalogo dydžio patikrinimus, kad nustatytume, kiek duomenų jau sinchronizavome. Gali būti labai lėtas naudojant šimtus GB mažų failų (nors du „Linux“atlieka tam tikrą talpyklą, jei ją paleidžiate iš naujo)

A priegloba -> Serverio duomenų atsarginės kopijos

Prieglobos serveris B -> Oranžinės dėžės kliento duomenys, kuriuos šiuo metu turime. Duomenų režimas: 112 GB

Delta yra 123 GB.

3, Jei failų sistema skirta kaip mūsų atveju/dev/mapper/backup, galime pasinaudoti bendru failų sistemos naudojimo indikatoriumi, kad nustatytume, kaip vyksta mūsų atsarginė kopija, ir tai tikrai velniškai greitai. Šiuo atveju mums net nereikia niekur įvesti rsync stdout, tiesiog paleiskite sausą rsync, palaukite, kol jis baigsis, apskaičiuokite delta baitais ir patikrinkite tai, ar yra laisvos vietos, kurią turime atsarginiame diske, ir voila dabar padarykite gražią juostinę diagramą. Aš pasirinkau tokį metodą ir čia yra mano scenarijus:

#!/bin/bash

# „OrangeBOX“atsarginės kopijos eigos skaičiuoklė pagal NLD # Versija: 0.2 (2018/03/05) # # Paleiskite ją kaip neprivilegijuotą vartotoją iš cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Šis scenarijus yra atsakingas tik už duomenų rodymą LCD ekrane, jis netiesiogiai bendrauja # su pagrindine programa per padėties ir užrakto failus. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # disko naudojimas atsarginės kopijos pradžioje TFILE = "$ HOME/trans.size" # bendras iš anksto apskaičiuotas perdavimo dydis BFILE = "$ HOME/ backup.lck " # nustato pradėtą būseną FFILE =" $ HOME/backup.fin " # nustato baigtą būseną LFILE1 =" $ HOME/lcd1.bar " # LCD progreso indikatoriaus duomenys LFILE2 =" $ HOME/lcd2.bar " # LCD progresas indikatoriaus duomenys SHUTDOWN = "1" # Jei 1, jis inicijuos kitą scenarijų, kuris išjungs langelį atsarginės kopijos pabaigoje BACKUP_CURRENT = "0" # Turi būti inicijuotas, bet bus apskaičiuotas DRIVE_SIZE = "" # Disko dydis baitais (antrinis patikrinkite) LCD = "sudo /bin /lcd" funkcija is_mount () {grep -q "$ 1" /proc /mounts status = $? } funkcija raudona () {sudo /bin /lcdcolor red} funkcija žalia () {sudo /bin /lcdcolor žalia} funkcija mėlyna () {sudo /bin /lcdcolor blue} # Išvalyti būseną (nustatoma įkrovos metu bootup_display.sh). Atsarginė kopija nevykdoma, nesugadinkite # būsenos LCD. Rodyti pažangą tik tuo atveju, jei vyksta atsarginė kopija => Nėra pradžios failo IR nėra fin failo = išeiti, jei [! -f $ BFILE] && [! -f $ FFILE]; tada išeikite iš 1 fi # Jei atsarginė kopija bus baigta, šis scenarijus tai parodys ir pašalins užraktus #, kad negalėtų paleisti dar kartą iki kitos inicijavimo. jei [-f $ FFILE]; tada žalia $ LCD "Atsarginė kopija" "** Užbaigta **" echo "Atsarginė kopija baigta" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Atsarginė kopija baigta išvalyti, jei [$ SHUTDOWN == "1"]; tada pakartokite "Vykdomas išjungimo scenarijus …" /home/orange/shutdown.sh & fi exit 0 fi # Nuo to momento scenarijus vykdomas TIK, jei yra nuolatinė atsarginė kopija # todėl visos klaidos bus atspausdintos LCD ekrane ir sukels scenarijų # nutraukti, tačiau nepašalins failo backup.lck, todėl vėl ir vėl pateks čia # ir išgaruos sąlygos. is_mount $ BACKUP_DRIVE, jei [$ status -ne 0]; tada raudonas $ LCD "ERR: Backup drive" "nėra sumontuotas!" echo "Atsarginis diskas nėra sumontuotas" išeiti 1 fi, jei [! -s $ TFILE]; tada raudona $ LCD "ERR: transfile" "yra tuščia" echo "Transporto dydžio skaičiavimo failas tuščias." išeiti 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n'), jei [-z $ BACKUP_OVERALL]; tada raudona $ LCD "KLAIDA: Dydžio nuskaitymas" "iš serverio neteisingas" echo "Atsarginės kopijos dydžio perskaitymas netinkamas 1" išeiti 1 fi, jei!

Nors kodas yra paprastas, čia pateikiamas jo veikimo aprašymas:

1, Jei BFILE arba FFILE nėra (tai yra būsena po aiškaus paleidimo), tai rodo, kad nėra atsarginės kopijos, todėl nieko nedarykite, tiesiog išeikite. Tokiu būdu galite nubraižyti bet kokią norimą informaciją apie paleidimą, pvz., Pagrindinio kompiuterio pavadinimą, IP, veikimo laiką ir tt, ir ji nebus sujaukta.

2, Pereikime prie skyriaus is_mount $ BACKUP_DRIVE. Primename, kad vienintelis būdas, kuriuo mes čia atėjome, yra tai, kad buvo sukurta atsarginė kopija, kad BFILE egzistuotų. Dabar kodas tik tikrina įvairias klaidas, pavyzdžiui, ar yra sumontuotas atsarginis diskas? ar kitos klaidos. Atminkite, kad tai tik „DISPLAY“programa, net jei jos dydis viršys atsargines kopijas, ji nieko nenutrauks.

3, Gerai, visi klaidų patikrinimai buvo išvalyti, kad būtų galima apskaičiuoti procentinę diagramą. Pirmiausia scenarijus padaro „momentinę kopiją“iš atsarginės failų sistemos baitais naudojamos vietos ir išsaugo ją VFILE. Koks to tikslas: „bash“scenarijus yra be būsenos, jis praranda duomenis tarp egzekucijų, taigi, jei norite „prisiminti“kai kuriuos ankstesnės vykdymo duomenis, turite juos kažkur išsaugoti. Mūsų atveju tai tik paprastas tekstinis failas. Kad būtų paprasčiau, tarkime, kad mūsų START_POS yra 1 GB (turimi duomenys), norime sukurti atsarginę kopiją +2 GB, o bendra disko talpa yra 10 GB.

4, Kitą kartą, kai scenarijus paleidžiamas, VFILE egzistuoja ir tai bus perskaityta atgal (taigi mes žinome, kokia buvo pradinė padėtis, jei diskas nebuvo tuščias), kad būtų galima apskaičiuoti BACKUP_CURRENT, kuris iš esmės yra dabar naudojamos vietos delta atsarginiame diske, atėmus pradinę padėtį, ką paskutiniame raunde išsaugojome VFILE (vėlgi tai yra duomenys, kuriuos turėjome diske, kai prasidėjo atsarginė kopija). Scenarijus iš vidaus veikia su baitais, tačiau, kad po pusvalandžio būtų paprasta padaryti 500 MB duomenų atsarginę kopiją, tada formulė būtų BACKUP_CURRENT = 1,5 GB - 1 GB (pradinė būsena) =>, kuri mums grąžina tikrus duomenis 500 MB, tai yra ką mes iki šiol darėme atsargines. Matote, kad atsarginės kopijos pradžioje nestebėjus, kokie buvo pirminiai duomenys, šis dydžio apskaičiavimas nepavyktų, nes pamatytų, kad šiuo metu naudojama vieta yra 1,5 GB, nežinant, kad diske visą laiką buvo 1 koncerto duomenys iš ankstesnės atsarginės kopijos, todėl būtų manoma, kad serveris mums atsiuntė ne 500 MB, o 1,5 GB duomenų.

5, bus perskaityta BACKUP_OVERALL, šiuos duomenis serveris apskaičiavo atlikdamas pradinį sausąjį rsync (taigi tai yra išorinis duomenų šaltinis, kuriame yra baitų, kurių atsarginės kopijos bus sukurtos iš serverio-> „OrangeBOX“). Ši vertė bus patikrinta atsižvelgiant į bendrą NEMOKAMĄ disko vietą šiuo metu, o jei ji viršija ją, LCD ekrane bus rodomas klaidos pranešimas ir scenarijus sustabdys vykdymą. Dar kartą prisiminkite, kad visas šis scenarijus rodomas TIK, jis netrukdo atsarginės kopijos kūrimo procesui. Jei išvalysite failus diske arba failų kiekis pasikeis nuotoliniu būdu, todėl BACKUP_OVERALL pasikeis vienu metu, jis tęsis.

6, Pagaliau baigėme antro lygio patikrinimus, atėjo laikas ką nors parodyti. Scenarijus rodo duomenis konsolėje ir LCD, naudojant paprastą C programą. Fonas perjungiamas į MĖLYNĄ, nurodant, kad atsarginė kopija pagaliau prasidėjo ir pažanga apskaičiuojama pagal šią formulę PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Tai yra pagrindinis procentinis skaičiavimas, kurio metu imame dabartinę sumą, mūsų pavyzdyje 0,5 GB*100/2 GB = 25%.

7, Skaičiai taip pat konvertuojami iš baitų į mega/gigabaitus ir ekranas automatiškai rodomas MB, jei jis yra mažesnis nei 1 GB.

8, Vienas dalykas, kurį šiuo atveju reikia pažymėti, yra 25% 20 stulpelių LCD. Mūsų pavyzdyje tai būtų 25 * 20/100 = 5. Šiuo metu LCD programa atnaujinama taip, kad kiekvieną kartą skambinus programai jis perbraižys visą ekraną. Taigi šiuo atveju 5 kartus būtų paleista ciklas, kad ekrane būtų nupieštos 5 maišos # tai būtų rodoma kaip negražiai mirksi kiekviename raunde, todėl vietoj to aš rašau apskaičiuotus progreso juostos duomenis į LFILE1 ir 2, o šiuo atveju po 5 raunduose yra ##### ir tai perskaitoma ir rodoma LCD ekrane. Taip pat galite įdėti LFILE1 ir 2 į „ramdisk“, kad sdcard būtų išsaugotas nuo papildomų rašymo operacijų, man tai nesukėlė jokių problemų, scenarijus paleidžiamas kartą per minutę iš „cron“.

9, Kai atsarginė kopija bus baigta, kitas scenarijus iš serverio, kuriame veikia rsync, palies FILLĄ (Baigti failą). Kitą kartą backup_progress.sh parodys, kad atsarginė kopija yra baigta, ir pasirinktinai iškviečia kitą scenarijų, kad išjungtų „OrangeBOX“. Šiuo metu ji ištrina savo užrakto failus, todėl tolesni vykdymai neįmanomi, todėl net jei neįjungsite išjungimo kitą minutę, kai šis scenarijus bus paleistas, jis iškart bus uždarytas, nes BFILE nėra ir FILIO nėra. Todėl pranešimas neribotą laiką rodys atsarginę kopiją, nebent atsarginė kopija bus paleista iš naujo.

Nuotolinis atsarginis scenarijus (orange-remote.sh):

Turėsite sugeneruoti ssh raktą atsarginei kopijai ir raktą šifruoti „luks“diskui. Kai pirmą kartą paleidžiate nuotolinę atsarginę kopiją rankiniu būdu, oranžinės dėžės pagrindinio kompiuterio atspaudas bus išsaugotas pagrindinio kompiuterio faile (nuo šio momento jis gali būti paleistas automatiškai naudojant cron).

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

Norėdami sužinoti savo kietojo disko identifikatorių, paleiskite uuid, blkid arba tiesiog ieškokite atitinkamų/dev/disk/katalogų.

Katalogą, kuriame yra išskyrimas, galima nustatyti, jei nenorite kurti visų atsarginių kopijų. Tai gana erzinantis procesas, nes „rsync“atveju, jei norite išskirti vieną pakatalogį giliai struktūroje, turite atlikti šiuos veiksmus:

+ /a

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

Kadangi šis scenarijus vykdo komandas „OrangeBOX“nuotoliniu būdu, jis neprižiūri grąžinimo kintamųjų iš tos pusės, todėl naudoju keletą gudrių gudrybių, pavyzdžiui, jis išsiųs pranešimą apie nuotolinio įrenginio atidarymą į /tmp/contmsg.txt, tada išanalizuos norėdamas pamatyti, ar tai buvo sėkminga, jei ne, tai pakeičia dvejetainį rsync į nevykdomąjį, todėl rsync nebandys įkelti duomenų į „OrangePIs rootfs“, užpildydamas SD kortelę. Taip pat gera praktika nustatyti nekintamą bitą „chattr +i /mnt /backup“, kad tai būtų neįmanoma.

Dydžio išankstinis skaičiavimas atliekamas vietoje serveryje, todėl šis failas turi būti išsiųstas į „OrangeBOX“kitame žingsnyje.

Pagrindinė atsarginė kopija inicijuojama kaip ciklas ((i = 0; i <100; i ++)); Padarykite tai, nes esant žemos kokybės DSL/kabeliniam interneto ryšiui, „rsync“dažnai gali nutrūkti. Jei jis bus sėkmingai užbaigtas, kilpa nutrūks, nebandant daugiau pakartojimų. Tai veikia nepriekaištingai su geromis operacinėmis sistemomis, tačiau jei dėl kokių nors priežasčių nuotolinė dėžutė būtų langai ir prieiga būtų uždrausta, kaip reguliariai naudojant „NTUSER. DAT“, tada „rsync“grąžins klaidos kodą, o ši kilpa vykdys 100 kartų ir vis tiek nepavyks.

5 veiksmas: uždarymo ir užduočių sąrašas

Uždarymo ir užduočių sąrašas
Uždarymo ir užduočių sąrašas
Uždarymo ir užduočių sąrašas
Uždarymo ir užduočių sąrašas

Mano pamokomas pavyzdys dar kartą parodo, kaip jūs galite sukurti ką nors geresnio, labiau pritaikomo įrenginio iš 10 USD kompiuterio, kuris įveikia pragarą iš „Buffalo“su savo užraktais NAS įrenginiais, keistu vidiniu skaidymu, „busybox“suluošintu „Linux“su segmento nustatymo įrankiais dėl jų „Windows“programinės įrangos, uždaros programinės įrangos, blogos dokumentacijos ir palaikymo ir nesvarbu, kiek pinigų išleisite, niekada negausite progreso indikatoriaus, rodančio jūsų atsarginę kopiją, jau nekalbant apie tai, kaip šauniai atrodo „OrangeBox“(aš netgi naudoju oranžinį CAT5 kabelį: D).

Kadangi mini kompiuteriai tampa vis galingesni, išlaikydami tą pačią <100 USD kainų liniją, galime juos naudoti vis daugiau užduočių. Kadangi „Gbe Ethernet“prievadai šiais laikais yra gana paplitę per 1–2 metus, atminties šiose plokštėse žymiai padaugės ir jie gali būti naudojami ir ZFS pagrįstoms atsarginėms sistemoms.

-Smulkių grūdų progreso rodiklis pagal C programą (žr. Vieną iš mano projekto WasserStation). Šiuo metu tik # hashmark # simbolių, naudojamų simbolių režime naudojant „lcdPuts“(lcd, 1 eilutė), tai būtų galima patobulinti, net jei naudojant simbolių skystųjų kristalų ekranus padalijamas 1 stulpelis į 5 dalis, o pagrindinė C programa gali tiesiog paimti sveiką skaičių, pvz., 25 ir ištraukti eigos juosta tinkamai arba toliau patobulinta naudojant grafinį LCD

-Galimybė turėti nuimamą HDD, skirtą kurti naujas ir naujas atsargines kopijas ir perkelti jas į skirtingas vietas (jei dėžutė aptinka tuščią diską, jis turėtų automatiškai jį suformatuoti šifravimo raktu, kai tik jis bus gautas).

-Jei norite atspausdinti savo dėklą naudodami „makerbot“, „OrangeNAS“gali būti jums įdomi:

Rekomenduojamas: