INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Die OrangeBOX is 'n alles-in-een rugsteunkas vir eksterne berging vir enige bedieners.
U bediener kan besmet, beskadig, uitgevee word en al u data is nog steeds veilig op die OrangeBOX, en wie wil nie 'n onmoontlike missie hê nie, soos 'n rugsteunapparaat, wat u net aansluit en 'n vorderingsaanwyser sien sonder om meer te doen (hoop net die magie) rook sal aan die einde nie uitkom nie:)).
Die OrangeBOX is my eerste projek wat meestal 'n sagteware is, nie 'n hardeware -hack nie. Dit is basies 'n pasgemaakte NAS met 'n LCD daarby.
Stap 1: Hardeware -onderdele
Die Orange PI zero is 'n open-source enkelbordrekenaar. Dit kan Android 4.4, Ubuntu, Debian gebruik. Dit gebruik die AllWinner H2 SoC en het 256MB/512MB DDR3 SDRAM (256MB -weergawe is 'n standaardweergawe. Orange Pi Zero is vir almal wat met tegnologie wil begin skep - nie net om dit te gebruik nie. kan gebruik om beheer oor die wêreld om u te begin neem (https://www.orangepi.org/orangepizero/). Dit is dus presies vir ons, laat ons daarmee voortgaan:)
- Metaal/plastiek/houtkas (ek het 'n ou eksterne CD-rw-boks van Yamaha gebruik)
- Oranje PI Zero of beter (GPIO pinout kan verander as u 'n ander model gebruik)
- 2x20 RGB LCD skerms
- Enige SFF 3.5/ LFF 2.55 usb -aandrywer
- Sata -> usb -adapter. Hou in gedagte dat hoewel die OrangePI nie die maksimum dryfvermoë 'n boonste limiet stel nie, maar baie USB-na-SATA-brûe (maksimum 2TB). Die oranje PI Zero I gebruik het slegs 'n enkele USB 2.0 -poort met 'n effektiewe oordragsnelheid van maksimum 28 MB/s. Ek het 'n USB3.0 gekies (voorberei op toekomstige opgraderings) -> SATA -brug (die merk sal nie genoem word nie) en dit beperk die limiet, dus is dit beter om 'n brug te kies wat bewys word dat dit groter dryf ondersteun, soos JMicron JMS567 -chip -brûe. Doen u eie navorsing voordat u een koop. Ek kan met die snelheids- en hardeskyfbeperking saamleef deur 'n 2TB sata -aandrywer in hierdie projek te gebruik (as u groter dryf insit, word dit herken, maar die bedryfstelsel sal slegs die eerste 2TB daarvan sien, sodat die res van die kapasiteit verlore).
- 12V 2.5A of hoër versterkeradapter. Bereken ongeveer 500mA normale gebruik vir die OPI Zero en 1.5A piek vir 'n standaard LFF SATA -aandrywer. Oormaat maak nooit skade nie. In my opset het die Yamaha psu (wat meer as genoeg stroom op albei 12+5V -rails kon lewer) ongelukkig opgeblaas: (weens die hoofskakelaar vir 'n sekonde na GND, sodat ek 'n gewone adapter moes plak, om dit het die boks darem 'n paar gram ligter gemaak.
- Buck-omskakelaar DC-DC 12V-> 5V. Ek het dieselfde verstelbare mini -bok gebruik as met IronForge, dit werk perfek.
Opsioneel
As u bereid is om + 10 $ te spandeer, kry u die Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), wat 'n soortgelyke vormfaktor is en u Gbe en SATA3 kry. Hiervoor kan die Weegskaal PI -bedradingsbiblioteek gebruik word: https://github.com/OrangePiLibra/WiringPi, maar aangesien die GPIO -aansluiting anders is, val dit buite die omvang van hierdie skrywe.
U kan hierdie konstruksie ook doen met die nuwe Orange PI Plus2 met 'n SATA-aansluiting, en u kan die gebruik van sata-> usb-omsetters saam met hul beperkings oorslaan. As u van plan is om FreeBSD of ander BSD's te gebruik, is die Orange PI -reeks moontlik nie die beste keuse nie, aangesien hul hardeware -ondersteuning beperk is (u moet byvoorbeeld 'n USB -stick gebruik om op te laai). Vir BSD's is dit die beste raad om Framboos PI te gebruik. Beide die C -kode vir die LCD en al die skripte is draagbaar na enige ander UNIX -stelsel.
Stap 2: Hardeware -ontwerp
Die Yamaha-boks was net genoeg om dit alles op te slaan; dit het nie genoeg plek vir 'n Orange PI-rekenaar of 'n gewone Raspi-vormfaktorbord nie.
Die Ethernet is met 'n verlengstuk aan die agterkant van die boks uitgebring. Onthou dat die Orange PI zero slegs 'n 100mbit/s Ethernet -koppelvlak het, as u vinniger wil, moet u 'n ander bord soos Asus Tinkerboard/RPI3B+/Other Orange PI -modelle gebruik.
Verkeerde PIN Out is die enigste fout wat u in hierdie projek kan maak, daarom is dit die moeite werd om 'n paar beginsels te volg:
1, probeer altyd om dieselfde gekleurde kabel van EIND tot EIND te gebruik. Ek begaan self dieselfde "fout" in sommige projekte waar ek dit nie het nie, bloot omdat ek nie lank genoeg manlike/manlike-vroulike/vroulike-vroulike kabels byderhand het nie en ek pas twee saam om net aan te gaan die kring. As u u werk nie behoorlik dokumenteer nie, kan dit jare later hoofpyn veroorsaak, waar u moet herstel, opgradeer.
2, Pas 'n bietjie lijm op die verbindings toe. As u hierdie mm/mf/ff-kabels van die arduino-aansitstel gebruik, wat nie van die hoogste gehalte is nie, is dit baie algemeen (veral as u rondbeweeg/die toestel vervoer) dat die verbindings uitglip. As u weet dat dit 'n langdurige gebruikstoestel sal wees (gebruik dit moontlik totdat dit breek? Dit kan later maklik gesmelt/gekrap word indien nodig.
3, die OrangePI zero -bedrading Die slegte nuus is dat die Orange PI pinout NIE dieselfde is as die Raspberry PI 0/1/2/3 nie en dat daar selfs 'n verskil is tussen ander Orange PI -modelle. Die beste manier om te gaan is om die bedradingsbiblioteek (Orange PI Zero -weergawe) te kry. Die beeld is miskien 'n bietjie verwarrend, maar dit was die beste wat ek kon vind. Die een is 'n 180 grade spieël van die ander een. Alhoewel die CLI -nie -grafiese beeld moeiliker is om te begryp, is dit die eenvoudigste.
U kan altyd die twee ente van die voetstukke verskil deur die een kant as die POSITIEWE kant te beskou met die (+3.3/+5V) en die ander as die NEGATIEWE einde (een GND) -> dit is die einde van die aansluiting wat na die ETHERNET -poort kyk.
Van die Wiring PI Zero -tabel benodig u slegs een kolom; die wPI vergeet van die ander asof hulle nie daar sou wees nie.
Byvoorbeeld, om die LCD_E 15 (dit is wPI 15!) En LCD_RS 16 (dit is wPI 16!) Aan te sluit, tel die penne van die POSITIEWE kant van die aansluiting (maklik om te doen met 'n pen of 'n klein skroewedraaier). Dit gaan fisies met 4 penne en 5 penne af.
4, groepeer saam. As daar 'n moontlikheid is om gebruikte penne langs mekaar te sit (groepeer), het u dit altyd gekies, dit laat hulle toe om mekaar vas te hou, selfs sonder 'n lijm, en ook in ander projekte as u 2x 4x 6x molex -verbindings het trek net voordeel uit die penne wat langs mekaar is. Die beste wat u kan doen, is 'n groep van 2-3 (ideaal as u bergkabels van ou rekenaars gebruik).
Spelde wat gebruik word vir OrangePI LCD -skermverbinding:
// GEBRUIK WIRINGPI PIN -NOMMERS
#define LCD_E 15 // Aktiveer pin #definieer LCD_RS 16 // Registreer kiespen #definieer LCD_D4 5 // Dataspeld 4 #definieer LCD_D5 6 // Dataspeld 5 #definieer LCD_D6 10 // Dataspeld 6 #definieer LCD_D7 11 // Dataspeld 7
Spelde wat gebruik word vir die beheer van die RGB -agtergrond
$ G skryf 1 0
$ G skryf 4 1 $ G skryf 7 1
Oranje PI nul wPI penne 1, 4, 7. Die enigste towerkuns wat hierdie LCD kan doen in vergelyking met die standaard fix blue of fix green backlight LCD, waar u 'n enkele katode het wat na GND afgetrek moet word, sodat dit 3 vir die 3 het kleure. Rooi, groen en blou. Deur die kombinasie waarvan die een aangeskakel is, te verander, kan u verskillende kleure uit hierdie basiskleure meng, maar slegs die hoë punte sonder skakerings, omdat u nie die helderheid van 'n kleur kan beheer nie (dit is aan of uit).
Byvoeging van kleurmengsel: die toevoeging van rooi tot groen gee geel; rooi by blou voeg magenta; die toevoeging van groen tot blou lewer siaan; deur al drie die primêre kleure bymekaar te voeg, word wit opgelewer.
Stap 3: Bedryfstelsel
Die OrangeBOX begin en Armbian Linux (gebaseer op Debian Stretch) 4.14.18-sunxi-kern met 'n veilige firewallomgewing, maak verbinding met 'n VPN en wag vir eksterne rugsteunopdragte van die bediener af.
Ontwerp beginsels:
-Volledige luukse skyfkripsie (die toestel self bevat nie die sleutel om die rugsteunstasie oop te maak nie. Dit word tydelik van die eksterne bediener na die ram /dev /shm gekopieer, die skyf word oopgemaak en die sleutel word uitgevee. Nadat die rugsteun klaar is die aandrywing gesluit en die OrangeBox word binne 1 minuut outomaties afgeskakel.)
-Alle opdragte en sleutels word vanaf die afstandbediener gestuur (die toestel self bevat slegs 'n vpn -sertifikaat), dit het GEEN toegang tot die afstandbediener nie, selfs as ssh van hierdie toestel af firewalled word
-Die plaaslike lêerstelsels is nie geïnkripteer om op te laai nie, maar bevat niks nuttigs nie en aangesien die VPN-uplink aan die ander kant baie beperk is, selfs met die volledige verlies van die toestel, kan 'n aanvaller niks doen nie
Laai die Armbian Stretch af van
Kry die stelsel aan die gang:
apt-get update && apt-get upgrade
apt-get install sysvinit-core sysvinit-utils
Wysig die /etc /inittab, al die konsole kan gedeaktiveer word, aangesien die boks as koploos gebruik sal word. Lewer kommentaar op die volgende afdeling:
#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
Herlaai u boks en verwyder systemd om 'n werklike open source bloatware -vrye stelsel te hê.
apt-get remove-purge-outomaties verwyder systemd
Installeer sommige pakkette
apt-get installeer cryptsetup vim htop rsync skerm gcc maak git
Installeer die wiringpi -biblioteek
cd /usr /src
git-kloon https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build
Skep oranje gebruiker vir die lcd -skerm
groupadd -g 1000 oranje
useradd -m -d /home /orange -s /bin /bash -u 1000 -g oranje lemoen
Die waghond wat nie oor jou waak nie
apt-get installeer waghond
Kyk u na/etc/default/waghond # Begin waghond tydens opstart? 0 of 1 run_watchdog = 1 # Begin wd_keepalive nadat u waghond gestop het? 0 of 1 run_wd_keepalive = 1 # Laai module voordat waghond begin watchdog_module = "geen" # Spesifiseer hier addisionele waghondopsies (sien manpage).
Kyk na /etc/watchdog.conf
# Aktiveer dit ten minste
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
/etc/init.d/watchdog begin
Daar moet ten minste 1 kerndraad en 1 proses wees:
wortel 42 0,0 0,0 0 0? I <10:50 0:00 [waghond] root 14613 0.0 0.2 1432 1080? SLs 13:31 0:00/usr/sbin/waghond
Toets:
Maak seker dat u alles stop en 'n sinchronisasie en sinchronisasie en sinchronisasie doen om die res van die data op die skyf te skryf. Dan as wortelkwessie:
eggo 1> /dev /waghond
Na 'n paar sekondes moet die masjien herlaai.
Soos die handleiding sê:
o Is die prosesstabel vol?
o Is daar genoeg gratis geheue? o Is daar genoeg toewysbare geheue? o Is sommige lêers toeganklik? o Het sommige lêers binne 'n gegewe interval verander? o Is die gemiddelde werklas te hoog? o Het 'n oorloop van lêertabelle plaasgevind? o Loop 'n proses nog? Die proses word deur 'n pid -lêer gespesifiseer. o Beantwoord sommige IP -adresse ping? o Ontvang netwerk -koppelvlakke verkeer? o Is die temperatuur te hoog? (Temperatuurdata is nie altyd beskikbaar nie.) O Voer 'n deur die gebruiker gedefinieerde opdrag uit om willekeurige toetse uit te voer. o Voer een of meer toets-/herstelopdragte in /etc/watchdog.d uit. Hierdie opdragte word genoem met die argument toets of herstel. As een van hierdie kontrole misluk, sal die waghond tot stilstand kom. Sou een van hierdie toetse behalwe die gebruiker gedefinieerde binêre langer as een minuut duur, word die masjien ook herlaai.
Hierdie waghond werk miskien goed op die gewone x86 -argitekture, maar op ARM -borde soos Raspberry PI's, Orange PI's het dit my ontelbaar kere misluk. Die stelsel kan in hangtoestande ingaan waar selfs die waghond hang. Laat ons dit in elk geval net konfigureer, miskien word dit deur die jare verbeter met 'n geskikte opgradering:(
Stap 4: Sagteware -ontwerp
Die rugsteunproses self is op rsync-gebaseerde (beste rugsteunhulpmiddel ooit uitgevind) data word van die SERVER-> OrangeBOX afgestuur.
Om die data uit rsync te onttrek, was die enigste uitdagende deel van die projek om 'n vorderingsbalk oor die rugsteun op die LCD te laat druk.
Daar was drie moontlike maniere om die vordering van die rugsteun te bereken:
1, met behulp van formules soos https://wintelguy.com/transfertimecalc.pl om die tyd te bepaal wat die oordrag kan neem
Oordragstyd (d: h: m: s): 0: 02: 44: 00
Ter vergelyking: Geskatte tyd om 123 GB -lêer oor te dra oor verskillende netwerkskakels (d: h: m: s): T1/DS1 -lyn (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
As die rsync klaar is, dui dit op die script om die berekening te stop. Hierdie metode is ongeveer 'n benaderde en nie betroubaar nie; ook is die koppelingsnelheid nie reggestel nie; dit kan vertraag, weer versnel. Dit is slegs 'n teoretiese berekening.
2, om die grootte van die gids te kontroleer om te bepaal hoeveel data ons reeds gesinkroniseer het. Kan baie stadig raak met honderde GB se klein lêers (alhoewel du -s in Linux 'n bietjie caching doen as u dit herhaal)
Gasheer A -> Bedienerdata wat gerugsteun moet word Data dir: 235GB
Gasheer B -> Orange box -kliëntdata wat ons tans het Data dir: 112GB
Die delta is 123 GB.
3, as die lêerstelsel toegewy is, soos in ons geval/dev/mapper/back -up, kan ons gebruik maak van die algehele aanwyser vir die gebruik van lêerstelsels om te bepaal hoe ons rugsteun vorder, en dit is regtig vrek vinnig. In hierdie geval hoef ons nie eers die rsync -stdout te buis nie, net 'n droë rsync, wag totdat dit voltooi is, bereken die delta in grepe en kontroleer dit met die vrye ruimte wat ons op die rugsteunaandrywing het en voila wat ons kan maak nou 'n mooi staafgrafiek. Dit was die metode wat ek gekies het en hier is my skrif daarvoor:
#!/bin/bash
# Backup Progress Sakrekenaar vir OrangeBOX deur NLD # Weergawe: 0.2 (2018/03/05) # # Begin dit as onbevoorregte gebruiker van cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Hierdie skrif is slegs verantwoordelik vir die vertoon van data op die LCD, dit kommunikeer indirek # met die hoofprogram deur posisies en sluit lêers. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # skyfgebruik aan die begin van die rugsteun TFILE = "$ HOME/trans.size" # algehele voorafberekende oordraggrootte BFILE = "$ HOME/ backup.lck " # bepaal begin toestand FFILE =" $ HOME/backup.fin " # bepaal voltooide toestand LFILE1 =" $ HOME/lcd1.bar " # LCD vorderingsaanwyser data LFILE2 =" $ HOME/lcd2.bar " # LCD vordering aanwyserdata SHUTDOWN = "1" # As 1, sal dit 'n ander script begin wat die boks aan die einde van die rugsteun sluit BACKUP_CURRENT = "0" # Moet geïnitialiseer word, maar word bereken DRIVE_SIZE = "" # Drive -grootte in grepe (sekondêr check) LCD = "sudo /bin /lcd" funksie is_mount () {grep -q "$ 1" /proc /mounts status = $? } funksie rooi () {sudo /bin /lcdcolor rooi} funksie groen () {sudo /bin /lcdcolor green} funksie blou () {sudo /bin /lcdcolor blue} # Duidelike toestand (ingestel op opstart deur bootup_display.sh). Geen rugsteun word uitgevoer nie, moenie die # status -LCD deurmekaar maak nie. Vertoon slegs vordering as daar 'n deurlopende rugsteun is => Geen beginlêer EN Geen vinlêer = stop as [! -f $ BFILE] && [! -f $ FFILE]; verlaat dan 1 fi # As die rugsteun klaar is, sal hierdie script dit vertoon en die slotte # verwyder om nie weer te kan loop tot die volgende aanvang nie. as [-f $ FFILE]; dan groen $ LCD "Backup" "** Voltooi **" echo "Backup voltooid" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Backup klaar met skoonmaak as [$ SHUTDOWN == "1"]; eggo dan "Uitvoering van afsluitskrip …" /home/orange/shutdown.sh & fi verlaat 0 fi # om te staak, maar dit sal nie die backup.lck -lêer verwyder nie, so ek sal hier # keer op keer ingaan en die voorwaardes ontduik. is_mount $ BACKUP_DRIVE as [$ status -ne 0]; dan is rooi $ LCD "ERR: Backup drive" "nie gemonteer nie!" eggo "Backup drive is not mounted" afrit 1 fi as [! -s $ TFILE]; dan rooi $ LCD "ERR: transfile" "is leeg" echo "Vervoer grootte berekening lêer is leeg." verlaat 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; dan rooi $ LCD "ERR: Grootte teruglees" "van bediener ongeldig" echo "Rugsteun algehele grootte teruglees is ongeldig 1" afrit 1 fi as!
Alhoewel die kode eenvoudig is, is daar 'n beskrywing van wat dit doen:
1, As die BFILE of FFILE nie bestaan nie (dit is die toestand na 'n duidelike opstart) wat aandui dat daar geen rugsteunproses is nie, moet dus niks doen nie. Op hierdie manier kan u 'n grafiek maak van alle goeie inligting oor die opstart, soos die gasheernaam, IP, uptyd, ens.
2, laat ons na die is_mount $ BACKUP_DRIVE -afdeling gaan. Net 'n herinnering: die enigste manier waarop ons hier gekom het, is dat 'n rugsteun begin is, sodat die BFILE bestaan. Nou doen die kode verskillende foutkontroles, soos is die rugsteunaandrywing gemonteer ?, is die totale grootte van wat ons wil rugsteun die skyf oorskry? of ander foute. Onthou dat dit slegs 'n DISPLAY -program is, selfs al sou die grootte die rugsteun oorskry, sal dit niks afskort nie.
3, OK, alle foute word skoongemaak om die persentasie grafiek te bereken. Eerstens neem die script 'n "momentopname" van die ruimte wat tans in grepe op die rugsteunlêerstelsel gebruik word en stoor dit in VFILE. Wat is die doel hiervan: 'n bash -script is staatloos, dit verloor data tussen teregstellings, dus as u 'n paar data van die vorige uitvoering wil 'onthou', moet u dit êrens stoor. In ons geval is dit slegs 'n eenvoudige tekslêer. Om dit eenvoudig te maak, laat ons sê ons START_POS is 1 GB (data wat ons het), wat ons wil rugsteun is +2 GB en die totale dryfkapasiteit is 10 GB.
4, die volgende keer dat die script uitgevoer word, bestaan die VFILE en dit sal teruggelees word (sodat ons weet wat die beginposisie was as die aandrywing nie leeg was nie) om die BACKUP_CURRENT te bereken, wat in wese 'n delta is van die ruimte wat tans gebruik word op die rugsteunrit minus die beginposisie wat ons in die VFILE in die laaste ronde gestoor het (dit is weer die data wat ons op die skyf gehad het toe die rugsteun begin het). Die skrip werk intern met grepe, maar om dit na 'n halfuur eenvoudig te maak, het ons 'n back -up van 500 MB data gemaak, dan is die formule BACKUP_CURRENT = 1.5GB - 1GB (aanvanklike toestand) => wat ons presies die werklike data van 500 MB teruggee, dit wil sê wat ons tot dusver gerugsteun het. U kan sien dat hierdie grootteberekening sou misluk sonder om by te hou wat die oorspronklike data aan die begin van die rugsteun was, omdat dit sou sien dat die ruimte wat tans gebruik word 1,5 GB is sonder om te weet dat daar altyd 1 gig -data op die skyf was afkomstig van 'n vorige rugsteun, so dit sou aanvaar dat die bediener ons 1,5 GB data in plaas van 500 MB gestuur het.
5, BACKUP_OVERALL sal ingelees word; hierdie data is deur die bediener bereken toe dit die oorspronklike droë rsync gedoen het (dus dit is 'n eksterne databron wat die hoeveelheid grepe bevat wat vanaf Server-> OrangeBOX gerugsteun sal word). Hierdie waarde sal tans op die totale GRATIS spasie op die skyf gekontroleer word, en as dit dit oorskry, sal 'n foutboodskap op die lcd verskyn en die skrif stop met die uitvoering. Onthou dat al hierdie skrif slegs SLEGS vertoon word; dit belemmer nie die rugsteunproses nie. As u lêers op die skyf skoonmaak of die hoeveelheid lêers op afstand verander, en daarom verander die BACKUP_OVERALL op 'n stadium.
6, Uiteindelik is ons klaar met die kontrole op die tweede vlak, dit is tyd om iets te wys. Die script vertoon beide die data op die konsole en op die lcd met 'n eenvoudige C -app. Die agtergrond word na BLOU oorgedra, wat aandui dat die rugsteun uiteindelik begin het en die vordering bereken is met die volgende formule PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Dit is 'n basiese persentasie berekening, ons neem die huidige bedrag, in ons voorbeeld 0.5GB*100/2GB = 25%.
7, Die getalle word ook omgeskakel van byte na Mega/Giga -grepe en die skerm word outomaties in MB vertoon as dit laer as 1GB is.
8, een ding wat ons in hierdie geval moet oorweeg, is die 25% op 'n 20 -kolom LCD. Dit sou 25 * 20/100 = 5 in ons voorbeeld wees. Tans word die opdatering met die LCD -program geïmplementeer dat elke keer as u die program bel, dit die hele skerm sal teken. In hierdie geval sou dit 5 keer 'n lus loop om 5 hashmarks # op die skerm te teken, dit sou in elke ronde as lelik flikker, so in plaas daarvan skryf ek die berekende vorderingsbalkdata na LFILE1 en 2, wat in hierdie geval na die 5 rondtes bevat ##### en dit word teruggelees en op die LCD vertoon. U kan ook LFILE1 en 2 op ramdisk plaas om die sdcard te red van ekstra skryfbewerkings; dit het vir my geen probleme veroorsaak nie; die script word een keer elke minuut van cron uitgevoer.
9, wanneer die rugsteun klaar is, raak die ander script van die bediener wat rsync uitvoer, die FFILE (Finish File) aan. By die volgende lus sal backup_progress.sh dan wys dat die rugsteun voltooi is en 'n ander script om die OrangeBOX af te sluit, opsioneel kan oproep. Dit verwyder sy sluitlêers op hierdie stadium, wat verdere uitvoerings onmoontlik maak, so selfs as u nie die afsluiting van die volgende minuut aktiveer nie, sal dit onmiddellik ophou, want die BFILE is nie daar nie en die FFILE is nie daar nie. Daarom sal die rugsteun voltooide boodskap onbepaald vertoon word, tensy die rugsteun weer begin word.
Rugsteun-rugsteunskripsie (orange-remote.sh):
U moet 'n ssh -sleutel genereer vir die rugsteun en 'n sleutel vir die luukse kodering vir die skyf. As u die eksterne rugsteun vir die eerste keer handmatig uitvoer, stoor dit die vingerafdruk van die oranje bokse in die hosts -lêer (vanaf hierdie punt kan dit outomaties deur cron uitgevoer word).
DISK = "/dev/disk/by-id/…"
Om u hardeskyf -identifiseerder uit te vind, voer uuid, blkid uit of soek die ooreenstemmende/dev/disk/directories.
U kan 'n gids insluit wat uitsluit, opstel as u nie alles wil rugsteun nie. Dit is nogal 'n irriterende proses, want as u 'n enkele subgids diep in die struktuur wil uitsluit, moet u vir rsync die volgende doen:
+ /a
+/a/b +/a/b/c +/a/b/c/d -/a/b/c/d/e +/dir2
Aangesien hierdie script opdragte op die OrangeBOX op afstand uitvoer, het dit geen toesig oor die terugkeerveranderlikes van daardie kant af nie; daarom gebruik ek 'n paar slim truuks, soos om die boodskap van die opening van die afstandstasie na /tmp/contmsg.txt te stuur en dan te ontleed om te sien of dit suksesvol was, indien nie, verander dit die rsync-binêre na nie-uitvoerbare, sodat die rsync nie probeer om data op te laai na die OrangePIs-wortels wat die SD-kaart vul nie. Dit is ook 'n goeie praktyk om die onveranderlike bietjie op chattr +i /mnt /backup in te stel om dit onmoontlik te maak.
Die voorafberekening van die grootte vind plaaslik op die bediener plaas, daarom moet hierdie lêer in die volgende stap na die OrangeBOX gestuur word.
Die hoofrugsteun word begin as 'n lus vir ((i = 0; i <100; i ++)); doen, want in geval van lae kwaliteit DSL/kabel -internetverbindings kan rsync dikwels breek, tydsverloop. As dit suksesvol voltooi is, breek die lus sonder om meer herhalings te probeer. Dit werk foutloos met goeie bedryfstelsels, maar as die eksterne boks om een of ander rede vensters is en toegang sou geweier word soos gereeld op NTUSER. DAT, dan sou rsync 'n foutkode teruggee en hierdie lus sou 100 keer uitvoer en dan steeds misluk.
Stap 5: Sluitings- en taaklys
My instruksies demonstreer weereens hoe u op u eie iets beter en meer aanpasbaar kan maak vanaf 'n rekenaar van $ 10 wat Buffalo verslaan met sy eie toegesluit NAS -toestelle, vreemde interne verdeling, busybox kreupel linux met segfaulting -gereedskap, bestuur deur hul Windows -sagteware, geslote firmware, slegte dokumentasie en ondersteuning, en maak nie saak hoeveel geld u spandeer nie, u kry nooit 'n vorderingsaanwyser wat u rugsteun wys nie, om nie eens te praat van hoe cool die OrangeBox lyk nie (ek gebruik selfs oranje CAT5 -kabel daarmee: D).
Aangesien mini -rekenaars meer en meer kragtig word terwyl ons dieselfde pryslyn van $ 100 behou, kan ons dit vir meer en meer take gebruik. Aangesien Gbe Ethernet-poorte deesdae oor 1-2 jaar algemeen voorkom, sal die geheue op hierdie borde dramaties toeneem en kan dit ook gebruik word vir ZFS-gebaseerde rugsteunstelsels.
-Fyn korrelvorderingsaanwyser deur die C -program (sien WasserStation een van my ander projekte). Op die oomblik is net # hashmark # karakters wat in karaktermodus gebruik word met lcdPuts (lcd, reël1), dit kan verbeter word, selfs as karakter LCDs gebruik word om 1 kolom in 5 dele te verdeel en die hoof C -program kan net 'n heelgetal soos 25 neem en uittrek die vorderingsbalk behoorlik of verder verbeter deur 'n grafiese LCD te gebruik
-Die moontlikheid om 'n verwyderbare HDD te hê om nuwe en nuwe rugsteun te skep en na verskillende plekke te verskuif (as die boks 'n leë skyf opspoor, moet dit outomaties geformateer word met die enkripsiesleutel sodra dit ontvang is).
-As u u eie saak met makerbot wil druk, kan die OrangeNAS vir u interessant wees: