Përmbajtje:
- Hapi 1: Pjesët e harduerit
- Hapi 2: Dizajni i harduerit
- Hapi 3: Sistemi operativ
- Hapi 4: Dizajni i softuerit
- Hapi 5: Mbyllja dhe lista e veprimeve
Video: OrangeBOX: Pajisja e ruajtjes së sigurt të bazuar në OrangePI: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:21
OrangeBOX është një kuti rezervë gjithëpërfshirëse e ruajtjes në distancë për çdo server.
Serveri juaj mund të jetë i infektuar, i korruptuar, i fshirë dhe të gjitha të dhënat tuaja janë ende të sigurta në OrangeBOX dhe kush nuk do të donte një mision të pamundur si pajisja rezervë atë që sapo futni në prizë dhe shihni një tregues progresi pa bërë asgjë më shumë (vetëm shpresoni magjinë tymi nuk do të dalë në fund:)).
OrangeBOX është projekti im i parë i cili është kryesisht një softuer, jo një hack hardware. Në thelb është një NAS e krijuar me porosi me një LCD të bashkangjitur.
Hapi 1: Pjesët e harduerit
Orange PI zero është një kompjuter me një bord me burim të hapur. Mund të ekzekutojë Android 4.4, Ubuntu, Debian. Ai përdor SoC AllWinner H2, dhe ka 256MB/512MB DDR3 SDRAM (versioni 256MB është versioni standard. Orange Pi Zero është për këdo që dëshiron të fillojë të krijojë me teknologji - jo vetëm ta konsumojë atë. It'sshtë një mjet i thjeshtë, argëtues, i dobishëm që ju mund ta përdorni për të filluar kontrollin e botës përreth jush (https://www.orangepi.org/orangepizero/). Pra, është pikërisht për ne, le të vazhdojmë me të:)
- Kuti metalike/plastike/druri (kam përdorur një kuti të vjetër të jashtme Yamaha cd-rw)
- Portokalli PI Zero ose më mirë (pinout GPIO mund të ndryshojë nëse përdorni një model tjetër)
- Ekrane LCD 2x20 RGB
- Çdo makinë USB SFF 3.5/ LFF 2.55
- Sata -> përshtatës usb. Mbani në mend se ndërsa OrangePI nuk imponon një kufi të sipërm në kapacitetin maksimal të makinës megjithatë bëjnë shumë ura USB-to-SATA (2TB max). Portokalli PI Zero Unë përdor vetëm ka një port të vetëm USB 2.0 me shpejtësi efektive të transferimit prej 28 MB/s max. Unë kam zgjedhur një USB3.0 (e përgatitur për azhurnimet e ardhshme) -> Ura SATA (marka nuk do të përmendet) dhe ajo e kalon kufirin, kështu që është më mirë të zgjedhësh një urë të provuar se po mbështet disqe më të mëdhenj siç janë urat e bazuara në çipa JMicron JMS567 Me Bëni kërkimin tuaj para se të blini një të tillë. Unë mund të jetoj me kufirin e shpejtësisë dhe hard diskut duke përdorur një makinë sata 2TB në këtë projekt (nëse vendosni disqe më të mëdhenj, ai do të njihet, por sistemi operativ do të shohë vetëm 2 TB -në e parë të tij, kështu që pjesa tjetër e kapacitetit do të jetë humbur).
- Përshtatës amp 12V 2.5 A ose më i lartë. Llogaritni rreth 500mA përdorim normal për OPI Zero dhe pikun 1.5A për një makinë standarde LFF SATA. Tejkalimi i madh nuk dëmton kurrë. Në konfigurimin tim, psu Yamaha (ajo që mund të kishte furnizuar më shumë se rryma e mjaftueshme në të dy binarët 12+5V) për fat të keq u hodh në erë: (për shkak të renditjes së kalimit kryesor në GND për një sekondë, kështu që më duhej të ngjisja në një përshtatës të rregullt, në të paktën e bëri kutinë disa gram më të lehtë.
- Konverter Buck DC-DC 12V-> 5V. Kam përdorur të njëjtën mini buck të rregullueshëm si me IronForge, funksionon në mënyrë perfekte.
Opsionale
Nëse jeni të gatshëm të shpenzoni + 10 $, atëherë mund të merrni Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) i cili është faktor i ngjashëm i formës dhe ju merr Gbe dhe SATA3. Për këtë, biblioteka e telave Libra PI mund të përdoret: https://github.com/OrangePiLibra/WiringPi, por meqenëse pinout GPIO është e ndryshme, është jashtë fushëveprimit të këtij shkrimi.
Ju gjithashtu mund ta bëni këtë ndërtim me portokallin e ri PI Plus2 të cilët kanë lidhës SATA dhe mund të anashkaloni përdorimin e konvertuesve sata-> usb të gjithë së bashku me kufizimet e tyre. Nëse planifikoni të përdorni FreeBSD ose BSD të tjera, seria Orange PI mund të mos jetë zgjidhja më e mirë pasi mbështetja e tyre harduerike është e kufizuar (për shembull ju duhet të përdorni USB stick për të nisur). Për BSD -të është këshilla më e mirë për të përdorur Raspberry PI. Të dy kodet C për LCD dhe të gjitha skriptet e guaskës janë të lëvizshëm në çdo sistem tjetër UNIX.
Hapi 2: Dizajni i harduerit
Kutia Yamaha ishte e mjaftueshme për të ruajtur të gjitha këto, nuk do të kishte hapësirë të mjaftueshme për një PC Orange PI ose bordin e zakonshëm të faktorit të formës Raspi.
Ethernet u nxor me një zgjerues në pjesën e pasme të kutisë. Mos harroni se Orange PI zero ka vetëm 100mbit/s ndërfaqe Ethernet nëse dëshironi më shpejt do t'ju duhet të përdorni një bord tjetër siç është Asus Tinkerboard/RPI3B+/Modele të tjera Orange PI.
PIN Out i gabuar është gabimi i vetëm dhe i vetëm që mund të bëni në këtë projekt, prandaj ia vlen të zbatoni disa rregulla të parimeve të gishtit të madh:
1, Gjithmonë përpiquni të përdorni kabllon me të njëjtën ngjyrë nga FUND në FUND. Unë vetë kryej të njëjtin "gabim" në disa projekte ku nuk e bëj, thjesht sepse nuk kam kabllo të gjata mashkull-mashkull/mashkull-femër/femër-femër në dorë dhe i rregulloj 2 së bashku vetëm për të vazhduar me qarku. Nëse nuk e dokumentoni siç duhet punën tuaj kjo mund të çojë në dhimbje koke vite më vonë ku duhet të bëni një riparim, përmirësim.
2, Aplikoni një ngjitës të nxehtë në lidhësit. Në rast të përdorimit të këtyre kabllove të stilit arduino-starter të stilit mm/mf/ff të cilat nuk janë në krye të cilësisë, është mjaft e zakonshme (veçanërisht nëse lëvizni/transportoni pajisjen) që lidhësit të rrëshqasin jashtë. Nëse e dini që do të jetë një pajisje për përdorim afatgjatë (ndoshta përdorni derisa të prishet ?!) atëherë është më mirë të aplikoni pak ngjitës të nxehtë si në anën OrangePI ashtu edhe në LCD të lidhësve për t'i mbajtur ato së bashku. Kjo mund të shkrihet/gërvishtet lehtësisht më vonë nëse është e nevojshme.
3, Instalimet zero OrangePI Lajmi i keq është se pinout Orange PI NUK është i njëjtë me Raspberry PI 0/1/2/3 dhe madje ka dallim midis modeleve të tjera Orange PI. Mënyra më e mirë për të shkuar është të merrni bibliotekën e instalimeve elektrike (versioni Orange PI Zero). Imazhi mund të jetë pak konfuz, por këto ishin më të mirat që mund të gjeja. Njëra është një pasqyrë 180 gradë e tjetrës. Edhe pse imazhi jo grafik CLI mund të jetë më i vështirë për t’u kuptuar, ai është më i drejtpërdrejtë.
Ju gjithmonë mund të ndryshoni 2 skajet e prizave duke e konsideruar njërin skaj si fundin Pozitiv me (+3.3/+5V) dhe tjetrin si fundin NEGATIVE (një GND) -> ky është fundi i lidhësit përballë portës ETHERNET Me
Nga tabela Wiring PI Zero do t'ju duhet vetëm një kolonë që wPI të harrojë të tjerat sikur të mos ishin aty.
Kështu për shembull për të lidhur LCD_E 15 (domethënë wPI 15!) Dhe LCD_RS 16 (domethënë wPI 16!) Numëroni kunjat nga fundi POSITIVE i lidhësit (e lehtë për tu bërë me një stilolaps ose kaçavidë të vogël). Kjo do të zbresë fizikisht 4 kunja dhe 5 kunja.
4, Grupohuni. Nëse ekziston mundësia për të vendosur kunjat e përdorur pranë njëri -tjetrit (duke i grupuar ato) gjithmonë e zgjidhni atë, kjo i bën ata të mbahen pranë njëri -tjetrit edhe pa ngjyrosje të nxehtë dhe gjithashtu në projekte të tjera kur keni lidhje 2x 4x 6x molex, mundeni thjesht përfitoni nga kunjat që janë pranë njëri -tjetrit. Këtu më e mira që mund të bëni është grupi prej 2-3 (ideal kur përdorni kabllo kërcyesi të shpëtuar nga PC të vjetër).
Kunjat e përdorura për lidhjen e ekranit OrangePI LCD:
// P USRDORIM NUMRAT PIN T W WIRINGPI
#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Regjistro pinin e zgjedhur #define LCD_D4 5 // pin pin 4 #define LCD_D5 6 // pin pin 5 #define LCD_D6 10 // pin pin 6 #define LCD_D7 11 // Pina e të dhënave 7
Kunjat e përdorura për kontrollin e dritës së prapme RGB
$ G shkruani 1 0
$ G shkruani 4 1 $ G shkruani 7 1
Portokalli PI zero kunjat wPI 1, 4, 7. E vetmja magji që mund të bëjë kjo LCD në krahasim me LCD -in standard të rregulluar me blu ose me ndriçim jeshil ku keni një katodë të vetme e cila duhet të tërhiqet në GND që ka 3 për 3 ngjyrat. E kuqe, jeshile dhe blu. Duke ndryshuar kombinimin e të cilave njëra është ndezur ju mund të përzieni ngjyra të ndryshme nga këto ngjyra bazë, por vetëm skajet e larta pa hije sepse nuk mund të kontrolloni shkëlqimin e një ngjyre (është ose e ndezur ose e fikur).
Përzierja shtesë e ngjyrave: shtimi i kuq në të gjelbër jep të verdhë; shtimi i kuq në blu jep magenta; shtimi i gjelbër në të kaltër jep cian; duke shtuar të tre ngjyrat kryesore së bashku jep të bardhë.
Hapi 3: Sistemi operativ
OrangeBOX fillon dhe Linux Armbian (bazuar në Debian Stretch) 4.14.18-sunxi kernel me një mjedis të sigurt të mbrojtur nga zjarri, lidhet me një VPN dhe pret komandat rezervë të largëta nga serveri.
Parimet e projektimit:
-Kriptimi i diskut i bazuar në luks të plotë (pajisja në vetvete nuk përmban çelësin për hapjen e diskut rezervë. Do të kopjohet përkohësisht nga serveri i largët në ram /dev /shm, disku hapet dhe çelësi fshihet. Pasi të ketë përfunduar rezervimi disku mbyllet dhe OrangeBox mbyllet automatikisht në 1 minutë.)
-Të gjitha komandat dhe çelësat dërgohen nga serveri i largët (pajisja në vetvete përmban vetëm një certifikatë vpn) nuk ka asnjë qasje në serverin e largët edhe ssh nga kjo pajisje është e mbrojtur nga zjarri
-Sistemet e skedarëve lokalë të pakriptuar për të qenë në gjendje të nisin, por nuk përmbajnë asgjë të dobishme dhe meqenëse lidhja VPN është shumë e kufizuar në anën tjetër edhe me humbjen e plotë të pajisjes, një sulmues nuk mund të bëjë asgjë
Shkarkoni Armbian Stretch nga
Niseni sistemin në punë:
apt-get update && apt-get upgrade
apt-get install sysvinit-core sysvinit-utils
Ndryshoni /etc /inittab, e gjithë tastiera mund të çaktivizohet pasi kutia do të përdoret si pa kokë. Komentoni pjesën e mëposhtme:
#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
Rinisni kutinë tuaj dhe hiqni systemd për të pasur një sistem të vërtetë të hapur pa bloatware.
apt-get remove --purge --auto-remove systemd
Instaloni disa pako
apt-get install cryptsetup vim htop rsync screen gcc make git
Instaloni bibliotekën wiringpi
cd /usr /src
git klon https://github.com/xpertsavenue/WiringOP-Zero.git cd Wiring OP-Zero chmod +x./build./build
Krijo përdorues portokalli për ekranin LCD
groupadd -g 1000 portokalli
useradd -m -d /home /portokalli -s /bin /bash -u 1000 -g portokalli portokalli
Mbikëqyrës i cili nuk kujdeset për ju
apt-get install watchdog
Duke parë/etc/default/watchdog # Filloni rojtarin në kohën e nisjes? 0 ose 1 run_watchdog = 1 # Filloni wd_keepalive pas ndalimit të rojes? 0 ose 1 run_wd_keepalive = 1 # Moduli i ngarkimit para fillimit të watchdog watchdog_module = "asnjë" # Specifikoni opsionet shtesë të mbikëqyrësit këtu (shiko faqen e punës).
Duke parë /etc/watchdog.conf
# Të paktën aktivizoni këto
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
/etc/init.d/watchdog start
Duhet të ketë të paktën 1 fije kerneli dhe 1 proces:
rrënjë 42 0.0 0.0 0 0? I <10:50 0:00 [watchdogd] rrënjë 14613 0.0 0.2 1432 1080? SLs 13:31 0:00/usr/sbin/mbikëqyrës
Duke testuar:
Sigurohuni që të ndaloni gjithçka dhe të bëni një sinkronizim && sinkronizim && sinkronizim për të shkruar pjesën tjetër të të dhënave në disk. Pastaj si çështje rrënjësore:
jehonë 1> /dev /roje
Pas disa sekondash, makina duhet të rindizet.
Siç thotë manuali:
o A është tabela e procesit e plotë?
o A ka mjaft memorie të lirë? o A ka mjaft memorie të alokueshme? o A janë të arritshme disa skedarë? o A kanë ndryshuar disa skedarë brenda një intervali të caktuar? o A është ngarkesa mesatare e punës shumë e lartë? o A ka ndodhur një tejmbushje e tabelës së skedarëve? o A po vazhdon ende një proces? Procesi përcaktohet nga një skedar pid. o A i përgjigjen disa adresa IP ping? o A marrin ndërfaqet e rrjetit trafik? o A është temperatura shumë e lartë? (Të dhënat e temperaturës nuk janë gjithmonë të disponueshme.) O Ekzekutoni një komandë të përcaktuar nga përdoruesi për të bërë teste arbitrare. o Ekzekutoni një ose më shumë komanda testimi/riparimi që gjenden në /etc/watchdog.d. Këto komanda thirren me argumentin test ose riparim. Nëse ndonjë prej këtyre kontrolleve dështon, mbikëqyrësi do të shkaktojë mbyllje. Nëse ndonjë nga këto teste, përveç përdoruesit binar të përcaktuar, zgjat më shumë se një minutë, makina gjithashtu do të rindizet.
Ky mbikëqyrës mund të funksionojë mirë në arkitekturat e rregullta x86, por në bordet e bazuara në ARM, të tilla si Raspberry PIs, Orange PIs më ka dështuar shumë herë. Sistemi mund të kalojë në gjendje të varura ku edhe vareli është varur. Le ta konfigurojmë gjithsesi, mbase do të përmirësohet me një azhurnim të përshtatshëm gjatë viteve:(
Hapi 4: Dizajni i softuerit
Procesi i rezervimit në vetvete bazohet në rsync (mjeti më i mirë rezervë i shpikur ndonjëherë) të dhënat nxiten nga SERVER-> OrangeBOX.
Nxjerrja e të dhënave nga rsync ishte e vetmja pjesë sfiduese e projektit për të pasur një shirit përparimi në lidhje me kopjen rezervë të shtypur në LCD.
Kishte 3 mënyra të mundshme për të llogaritur përparimin rezervë:
1, Duke përdorur formula të tilla si https://wintelguy.com/transfertimecalc.pl për të përcaktuar kohën e përafërt që mund të marrë transferimi
Koha e Transferimit (d: h: m: s): 0: 02: 44: 00
Për krahasim: Koha e parashikuar për transferimin e skedarit 123 GB në lidhje të ndryshme të rrjetit (d: h: m: s): linja T1/DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Ethernet i shpejtë (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38
Nëse rsync përfundon, ai sinjalizon skriptin për të ndaluar llogaritjen. Kjo metodë është vetëm një e përafërt dhe jo e besueshme, gjithashtu shpejtësia e lidhjes nuk është e rregulluar, ajo mund të ngadalësohet, përshpejtohet përsëri. Kjo është vetëm një llogaritje teorike.
2, Bërja e kontrolleve të madhësisë në drejtori për të përcaktuar se sa të dhëna kemi sinkronizuar tashmë. Mund të ngadalësohet me qindra skedarë të vegjël GB (megjithëse du -s në Linux bëjnë ca caching nëse e përsëritni)
Pritësi A -> Të dhënat e serverit që do të kopjohen Të dhënat dir: 235 GB
Pritësi B -> Të dhënat e klientit të kutisë portokalli kemi tani Të dhënat e drejtimit: 112 GB
Delta është 123 GB.
3, Nëse sistemi i skedarëve është i dedikuar si në rastin tonë/dev/mapper/backup, ne mund të përfitojmë nga treguesi i përgjithshëm i përdorimit të sistemit të skedarëve për të përcaktuar se si po përparon rezervimi ynë dhe kjo është me të vërtetë e shpejtë. Në këtë rast ne as nuk kemi nevojë të tubojmë rsync stdout kudo, thjesht drejtoni një rsync të thatë, prisni derisa të përfundojë, llogarisni deltën në byte dhe kontrolloni këtë me hapësirën e lirë atë që kemi në diskun rezervë dhe voila që mundemi tani bëni një grafik të bukur me shirita. Kjo ishte metoda që zgjodha dhe këtu është skenari im për të:
#!/bin/bash
# Llogaritësi i progresit rezervë për OrangeBOX nga NLD # Version: 0.2 (2018/03/05) # # Drejtojeni atë si përdorues të paprivileguar nga cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Ky skenar është përgjegjës vetëm për shfaqjen e të dhënave në LCD, ai # komunikon me programin kryesor në mënyrë indirekte përmes skedarëve të pozicionit dhe kyçjes. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # përdorimi i diskut në fillim të rezervimit TFILE = "$ HOME/trans.size" # madhësia e përgjithshme e para -llogaritur e transferit BFILE = "$ HOME/ backup.lck " # përcakton gjendjen e filluar FFILE =" $ HOME/backup.fin " # përcakton gjendjen e përfunduar LFILE1 =" $ HOME/lcd1.bar " # Të dhënat e treguesit të progresit LCD LFILE2 =" $ HOME/lcd2.bar " # Përparimi i LCD të dhënat e treguesit SHUTDOWN = "1" # Nëse 1 do të nisë një skript tjetër i cili fik kutinë në fund të rezervimit BACKUP_CURRENT = "0" # Duhet të inicializohet por do të llogaritet DRIVE_SIZE = "" # Madhësia e diskut në bajt (sekondare kontrolloni) funksioni LCD = "sudo /bin /lcd" është_mount () {grep -q "$ 1" /proc /mounts status = $? } funksioni i kuq () {sudo /bin /lcdcolor red} funksioni jeshil () {sudo /bin /lcdcolor green} funksion blu () {sudo /bin /lcdcolor blue} # Gjendje e qartë (e vendosur në nisje nga bootup_display.sh). Asnjë kopje rezervë nuk është në progres, MOS ngatërroni LCD -në e # statusit. Shfaqni përparimin vetëm në rast se ekziston një kopje rezervë e vazhdueshme => Pa skedar fillestar DHE Pa skedar fin = lë nëse [! -f $ BFILE] && [! -f $ FFILE]; atëherë dilni nga 1 fi # Nëse kopja rezervë përfundon, ky skenar do ta shfaq atë dhe do të heqë bllokimet # që të mos jetë në gjendje të funksionojë përsëri deri në fillimin tjetër. nëse [-f $ FFILE]; pastaj e gjelbër $ LCD "Backup" "** Përfunduar **" echo "Backup Completed" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Rezervimi përfundoi i pastruar nëse [$ SHUTDOWN == "1"]; më pas jehona "Ekzekutimi i skriptit të mbylljes …" /home/orange/shutdown.sh & fi dalja 0 fi # Nga kjo pikë skripti VETLM ekzekutohet nëse ka një kopje rezervë të vazhdueshme # prandaj të gjitha gabimet do të printohen në LCD dhe do të shkaktojnë shkrimin # për të abortuar megjithatë nuk do të heqë skedarin backup.lck kështu që do të hyjë këtu # pa pushim dhe do të evulojë kushtet. është_mount $ BACKUP_DRIVE nëse [$ status -ne 0]; pastaj $ LCD LCD e kuqe "ERR: Disku rezervë" "" nuk është montuar! " jehonë "Disku rezervë nuk është montuar" dilni 1 fi nëse [! -s $ TFILE]; pastaj $ LCD e kuqe "ERR: transfile" "është bosh" echo "Skedari i llogaritjes së madhësisë së transportit është bosh." dalja 1 nga BACKUP_OVERALL = $ (koka -1 $ TFILE | tr -d '\ n') nëse [-z $ BACKUP_OVERALL]; pastaj e kuqe $ LCD "ERR: Rikthimi i madhësisë" "nga serveri i pavlefshëm" echo "Rikthimi i përmasave të përgjithshme të përmbledhjes është i pavlefshëm 1" dalje 1 fi nëse!
Edhe pse kodi është i thjeshtë këtu është një përshkrim se çfarë bën:
1, Nëse BFILE ose FFILE nuk ekziston (që është gjendja pas një fillimi të qartë) që tregon se nuk ka asnjë proces rezervë, kështu që NUK bëni asgjë thjesht hiqni dorë. Në këtë mënyrë ju mund të grafikoni çdo informacion të këndshëm që dëshironi në lidhje me nisjen si emri i hostit, ip, uptime etj dhe nuk do të ngatërrohet.
2, Le të kalojmë te pjesa is_mount $ BACKUP_DRIVE. Vetëm një kujtesë mënyra e vetme që arritëm këtu është që të krijohet një kopje rezervë në mënyrë që të ekzistojë BFILE. Tani kodi thjesht kontrollon gabime të ndryshme, si është instaluar kopja rezervë? ose gabime të tjera. Mbani mend se ky është një program i vetëm DISPLAY edhe nëse madhësia do të tejkalonte rezervat nuk do të abortojë asgjë.
3, OK të gjitha kontrollet e gabimit pastruan kohën për të llogaritur grafikun e përqindjes. Së pari skripti merr një "pamje" të hapësirës së përdorur në byte në sistemin e skedarëve rezervë tani dhe e ruan atë në VFILE. Cili është qëllimi i kësaj: një skenar bash është pa shtetësi, ai humbet të dhëna midis ekzekutimeve, kështu që nëse doni të "mbani mend" disa të dhëna nga ekzekutimi i mëparshëm, duhet t'i ruani diku. Në rastin tonë, ky është vetëm një skedar teksti i thjeshtë. Për ta bërë më të thjeshtë, le të themi se START_POS -i ynë është 1 GB (të dhënat që kemi), ajo që duam të rezervojmë është +2 GB dhe kapaciteti i përgjithshëm i diskut është 10 GB.
4, Herën tjetër kur skripti funksionon VFILE ekziston dhe kjo do të lexohet përsëri (kështu që ne e dimë se cili ishte pozicioni i fillimit në rast se disku nuk ishte i zbrazët) për të llogaritur BACKUP_CURRENT i cili është në thelb një delta e hapësirës së përdorur tani në diskun rezervë minus pozicionin e fillimit atë që kemi ruajtur në VFILE në raundin e fundit (përsëri këto janë të dhënat që kishim në makinë kur filloi kopjimi). Skenari punon nga brenda me byte, por për ta bërë më të thjeshtë pas gjysmë ore ne kemi rezervuar të dhëna 500MB atëherë formula do të ishte BACKUP_CURRENT = 1.5GB - 1GB (gjendja fillestare) => e cila na kthen saktësisht të dhënat reale 500 MB, domethënë atë që kemi mbështetur deri më tani. Ju mund të shihni që pa mbajtur parasysh se cilat ishin të dhënat origjinale në fillim të kopjimit, kjo llogaritje e madhësisë do të dështonte sepse do të shihte se hapësira e përdorur tani është 1.5 GB pa e ditur që të dhënat 1 gig ishin atje në disk gjatë gjithë kohës që vjen nga një kopje rezervë e mëparshme, kështu që do të supozohej se serveri na ka dërguar të dhëna 1.5 GB në vend të 500 MB.
5, BACKUP_OVERALL do të lexohet, këto të dhëna u llogaritën nga serveri kur bëri rsync fillestar të thatë (kështu që ky është një burim i jashtëm i të dhënave që përmban sasinë e bajtëve që do të rezervohen nga Serveri-> OrangeBOX). Kjo vlerë do të kontrollohet kundrejt hapësirës së përgjithshme FALAS në disk për momentin dhe nëse e tejkalon atë atëherë një mesazh gabimi do të shfaqet në LCD dhe skripti ndalon ekzekutimin. Mos harroni përsëri se gjithçka që ky skenar bën është të shfaqet VETYM, nuk ndërhyn në procesin e kopjimit. Nëse pastroni skedarët në disk ose sasia e skedarëve ndryshon nga distanca dhe për këtë arsye BACKUP_OVERALL ndryshon në një moment do të vazhdojë.
6, Së fundi ne kemi mbaruar me kontrollet e nivelit të dytë është koha për të shfaqur diçka. Skripti shfaq të dhënat në tastierë dhe në LCD duke përdorur një aplikacion të thjeshtë C. Sfondi kalon në BLUE duke treguar që rezervimi më në fund filloi dhe progresi u llogarit nga formula e mëposhtme PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Kjo është një llogaritje e përqindjes bazë që marrim shumën aktuale, në shembullin tonë 0.5GB*100/2GB = 25%.
7, Numrat gjithashtu konvertohen nga bajt në Mega/Giga bajt dhe ekrani shfaqet automatikisht në MB nëse është më i ulët se 1 GB.
8, Një gjë që mbetet për ta hartuar këtë në rastin tonë është 25% në një LCD me 20 kolona. Kjo do të ishte 25 * 20 /100 = 5 në shembullin tonë. Aktualisht rifreskimi me programin LCD zbatohet që sa herë që e thërrisni programin do të rishikojë të gjithë ekranin. Pra, në këtë rast do të ekzekutohej një lak 5 herë për të vizatuar 5 shenja hashmarks # në ekran, kjo do të shfaqet si ndezje e shëmtuar në çdo raund, kështu që në vend të kësaj unë shkruaj të dhënat e llogaritura të shiritit të përparimit në LFILE1 dhe 2, të cilat në këtë rast pas 5 raundet do të përmbajnë ##### dhe kjo lexohet dhe shfaqet në LCD. Ju mund të vendosni LFILE1 dhe 2 në ramdisk gjithashtu për të ruajtur kartën sd nga operacionet shtesë të shkrimit, nuk më shkaktoi ndonjë problem, skenari shkon një herë në minutë nga cron.
9, Kur të përfundojë kopja rezervë, skripti tjetër nga serveri i cili funksionon rsync do të prekë FFILE (File Finish). Në lakin tjetër, backup_progress.sh do të shfaqë që rezervimi është përfunduar dhe sipas dëshirës thërret një skript tjetër për të mbyllur OrangeBOX. Ai fshin skedarët e tij të kyçjes në këtë pikë duke i bërë ekzekutimet e mëtejshme të pamundura, edhe nëse nuk e aktivizoni mbylljen minutën tjetër kur ky skenar të ekzekutohet, ai do të pushojë menjëherë sepse BFILE nuk është atje dhe FFILE nuk është atje. Prandaj, do të shfaqë mesazhin rezervë të përfunduar pafundësisht nëse rezervimi nuk riniset përsëri.
Skript rezervë në distancë (portokalli-distanca.sh):
Ju do të duhet të gjeneroni një çelës ssh për rezervën dhe një çelës për kriptimin e luks për disqet. Kur e përdorni kopjen rezervë në distancë me dorë për herë të parë, ai do të ruajë gjurmët e gishtërinjve të kutive portokalli në skedarin e hosteve (nga kjo pikë mund të funksionojë automatikisht nga cron).
DISK = "/dev/disk/by-id/…"
Për të gjetur identifikuesin e diskut të ngurtë, ekzekutoni uuid, blkid ose thjesht kërkoni drejtoritë përkatëse/dev/disk/.
Një drejtori që përfshin përjashto mund të konfigurohet nëse nuk doni të bëni kopje rezervë të gjithçkaje. Ky është një proces mjaft i bezdisshëm sepse për rsync nëse doni të përjashtoni një nën-drejtori të vetme thellë në strukturë, duhet të bëni:
+ /a
+/a/b +/a/b/c +/a/b/c/d -/a/b/c/d/e +/dir2
Meqenëse ky skenar po ekzekuton komanda në OrangeBOX nga distanca, ai nuk ka mbikëqyrje të variablave të kthimit nga ajo anë, prandaj unë përdor disa truke të zgjuara, të tilla si ajo që do të nxjerrë mesazhin e hapjes së diskut të largët në /tmp/contmsg.txt, pastaj analizoj për të parë nëse ishte i suksesshëm, nëse jo atëherë ndryshon binarin rsync në jo të ekzekutueshëm kështu që rsync nuk do të përpiqet të ngarkojë të dhëna në rrënjët e OrangePI-ve duke mbushur kartën SD. Gjithashtu një praktikë e mirë për të vendosur pjesën e pandryshueshme në chattr +i /mnt /backup për ta bërë këtë të pamundur.
Para -llogaritja e madhësisë bëhet lokalisht në Server, prandaj ky skedar duhet të dërgohet në OrangeBOX në hapin tjetër.
Rezervimi kryesor fillon si një lak për ((i = 0; i <100; i ++)); bëni sepse në rast të lidhjeve të internetit me cilësi të ulët DSL/Cable rsync shpesh mund të prishet, timeout. Nëse përfundon me sukses atëherë lak do të prishet pa provuar më shumë përsëritje. Kjo funksionon në mënyrë të përsosur me sisteme të mira operative, megjithatë nëse për ndonjë arsye kutia e largët do të ishte dritare dhe do të mohohej qasja si rregullisht në NTUSER. DAT atëherë rsync do të kthente një kod gabimi dhe ky lak do të ekzekutohej 100 herë dhe pastaj përsëri do të dështonte.
Hapi 5: Mbyllja dhe lista e veprimeve
Udhëzimet e mia demonstrojnë edhe një herë se si mund të krijoni diçka më të mirë, më të personalizueshme nga një kompjuter me 10 dollarë, i cili mund të shkojë nga Buffalo me pajisjet e tij të mbyllura NAS, ndarje të çuditshme të brendshme, linux të zhurmshëm të zënë me vegla të parazgjedhura, të menaxhuara nga softueri i tyre i dritareve, firmueri i mbyllur, dokumentacioni dhe mbështetja e keqe dhe pa marrë parasysh sa para do të shpenzoni, nuk do të merrni kurrë një tregues progresi që tregon rezervën tuaj për të mos përmendur sa i lezetshëm duket OrangeBox (unë madje përdor kabllo portokalli CAT5 me të: D).
Me mini kompjuterët që bëhen gjithnjë e më të fuqishëm duke ruajtur të njëjtën linjë çmimi <100 $, ne mund t'i përdorim ato për gjithnjë e më shumë detyra. Ndërsa portet Gbe Ethernet janë mjaft të zakonshme këto ditë në 1-2 vjet kujtesa në këto borde do të rritet në mënyrë dramatike dhe ato mund të përdoren edhe për sistemet rezervë të bazuara në ZFS.
-Treguesi i përparimit të grurit të imët nga programi C (shih WasserStation një nga projektet e mia të tjera). Tani për tani vetëm # hashmark # karaktere të përdorura në modalitetin e karaktereve me lcdPuts (lcd, line1), kjo mund të përmirësohet edhe kur përdorni LCD të karakterit për të ndarë 1 kolonë në 5 pjesë dhe programi kryesor C mund të marrë vetëm një numër të plotë si 25 dhe të nxjerrë shiriti i përparimit siç duhet ose përmirësohet më tej duke përdorur një LCD grafik
-Mundësia për të pasur një HDD të lëvizshëm për krijimin e kopjeve rezervë të reja dhe të reja dhe zhvendosjen e tyre në vende të ndryshme (nëse kutia zbulon një makinë bosh, atëherë duhet ta formatojë atë automatikisht me çelësin e kriptimit pasi të jetë marrë).
-Nëse dëshironi të printoni kutinë tuaj me makerbot, OrangeNAS mund të jetë interesant për ju:
Recommended:
Pajisja shtëpiake Monitorues i fuqisë i bazuar në mjedër PI: 14 hapa
Monitorues i energjisë i bazuar në mjedër Pajisje me mjedër PI: Ky ishte një projekt i vogël që bëra për të monitoruar përdorimin e energjisë të pajisjeve individuale në shtëpi dhe për të shfaqur grafikët e përdorimit të energjisë së tyre me kalimin e kohës. Actuallyshtë në fakt një nga projektet më të lehta të bazuara në Raspberry PI që kam bërë, pa operacion saldimi ose hakimi
Pajisja ASS (Pajisja Sociale Anti-Sociale): 7 hapa
Pajisja ASS (Pajisja Sociale Anti-Sociale): Thoni se jeni personi tip që ju pëlqen të jeni pranë njerëzve, por nuk ju pëlqen që ata të afrohen shumë. Ju gjithashtu jeni një popull që ju pëlqen dhe e keni të vështirë të thoni jo njerëzve. Kështu që ju nuk dini si t'i thoni që të tërhiqen. Epo, futni - Pajisja ASS! Y
Pajisja e hyrjes dhe ruajtjes serike 4bit: 4 hapa
Pajisja e hyrjes dhe ruajtjes serike 4bit: Keni imagjinuar ndonjëherë se si tastiera juaj merr hyrje dhe si ruhen ato të dhëna! Ky projekt është një version më i vogël i futjes dhe ruajtjes së të dhënave. Një shpjegim i përpunuar se si sinjali nga çelësat, ora ndikon në elementët e kujtesës (rrokullisje)
Kutia dixhitale e sigurt e bazuar në Arduino: 10 hapa
Kutia dixhitale e sigurt e bazuar në Arduino: Hej djema! A keni diçka që dëshironi ta mbani të sigurt? Diçka që duhet të mbahet larg ndërhyrësve të padëshiruar dhe pushtuesve të intimitetit? Epo, unë kam një zgjidhje për problemin tuaj! Këtu keni një kuti të sigurt të kyçjes me bazë Arduino
Më e Sigurt Mirë: Bërja e Stacioneve të Trenit më e Sigurt: 7 Hapa
Më e Sigurt Më Mirë: Bërja e Stacioneve të Trenit më e Sigurt: Shumë stacione trenash sot janë të pasigurt për shkak të mungesës së sigurisë, barrierave dhe paralajmërimit të trenit që vjen. Ne pamë një nevojë që kjo të rregullohet. Për të zgjidhur këtë problem, ne krijuam Safer Better. Ne përdorëm sensorë dridhjeje, sensorë lëvizjeje dhe