Innholdsfortegnelse:

OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering: 5 trinn
OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering: 5 trinn

Video: OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering: 5 trinn

Video: OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering: 5 trinn
Video: Annoying Orange - ONE BITE CHALLENGE! 2024, November
Anonim
OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering
OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering
OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering
OrangeBOX: OrangePI -basert sikker lagringsenhet for sikkerhetskopiering

OrangeBOX er en alt-i-ett ekstern lagringsboks for alle servere.

Serveren din kan bli infisert, ødelagt, slettet og alle dataene dine er fremdeles sikre på OrangeBOX, og hvem vil ikke like et umulig oppdrag som en sikkerhetskopienhet, det du bare kobler til og ser en fremdriftsindikator uten å gjøre noe mer (bare håp magien røyk kommer ikke ut på slutten:)).

OrangeBOX er mitt første prosjekt som hovedsakelig er en programvare, ikke en maskinvarehack. Det er i utgangspunktet en spesialbygd NAS med en LCD festet.

Trinn 1: Maskinvaredeler

Maskinvare deler
Maskinvare deler
Maskinvare deler
Maskinvare deler
Maskinvare deler
Maskinvare deler

Orange PI zero er en enbrett-datamaskin med åpen kildekode. Den kan kjøre Android 4.4, Ubuntu, Debian. Den bruker AllWinner H2 SoC, og har 256 MB/512 MB DDR3 SDRAM (256 MB versjon er standardversjon. Orange Pi Zero er for alle som ønsker å begynne å lage med teknologi - ikke bare forbruker den. Det er et enkelt, morsomt og nyttig verktøy som du kan bruke til å begynne å ta kontroll over verden rundt deg (https://www.orangepi.org/orangepizero/). Så det er akkurat for oss, la oss fortsette med det:)

  • Metall/plast/treboks (jeg har brukt en gammel Yamaha ekstern cd-rw-boks)
  • Oransje PI Zero eller bedre (GPIO pinout kan endres hvis du bruker en annen modell)
  • 2x20 RGB LCD -skjermer
  • Enhver SFF 3.5/ LFF 2.55 usb -stasjon
  • Sata -> usb -adapter. Husk at selv om OrangePI ikke pålegger en øvre grense for maksimal stasjonskapasitet, gjør imidlertid mange USB-til-SATA-broer (maks 2TB). Den oransje PI Zero I bruker bare en USB 2.0 -port med en effektiv overføringshastighet på maks 28 MB/s. Jeg har valgt en USB3.0 (forberedt på fremtidige oppgraderinger) -> SATA -bro (merke vil ikke bli nevnt), og den grenser grensen, så det er bedre å velge en bro som har vist seg å støtte større stasjoner som JMicron JMS567 chip -baserte broer. Gjør din egen forskning før du kjøper en. Jeg kan leve med hastigheten og harddiskgrensen ved å bruke en 2 TB sata -stasjon i dette prosjektet (hvis du setter inn større stasjoner, blir den gjenkjent, men operativsystemet vil bare se den første 2 TB av den, så resten av kapasiteten vil være tapt).
  • 12V 2,5 A eller høyere forsterkeradapter. Beregn omtrent 500mA normal bruk for OPI Zero og 1,5A topp for en standard LFF SATA -stasjon. Oversize gjør aldri vondt. I mitt oppsett blåste dessverre Yamaha psu (det som kunne levere mer enn nok strøm på begge 12+5V -skinnene): (på grunn av å sortere hovedbryteren til GND et sekund, så jeg måtte lime inn en vanlig adapter, kl. det gjorde boksen et par gram lettere.
  • Buck-omformer DC-DC 12V-> 5V. Jeg brukte den samme justerbare minibukka som med IronForge, fungerer perfekt.

Valgfri

Hvis du er villig til å bruke + 10 $, kan du få Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) som er en lignende formfaktor og gir deg Gbe og SATA3. For dette kan Libra PI -kablingsbiblioteket brukes: https://github.com/OrangePiLibra/WiringPi, men siden GPIO -pinout er annerledes, faller det utenfor omfanget av denne skrivingen.

Du kan også gjøre denne bygningen med den nye Orange PI Plus2 som har SATA-kontakt, og du kan hoppe over bruken av sata-> usb-omformere sammen med sine begrensninger. Hvis du planlegger å bruke FreeBSD eller andre BSD -er, er Orange PI -serien kanskje ikke det beste valget siden maskinvarestøtten deres er begrenset (for eksempel må du bruke USB -pinne for å starte opp). For BSD er det det beste rådet å bruke Raspberry PI. Både C -koden for LCD -skjermen og alle skallskriptene er bærbare til alle andre UNIX -systemer.

Trinn 2: Maskinvaredesign

Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign
Maskinvaredesign

Yamaha-boksen var akkurat nok til å lagre alt dette, den ville ikke ha nok plass til en Orange PI-PC eller vanlig Raspi-formfaktorkort.

Ethernet ble hentet ut med en forlenger på baksiden av esken. Husk at Orange PI zero bare har 100mbit/s Ethernet -grensesnitt, hvis du vil ha raskere, må du bruke et annet kort, for eksempel Asus Tinkerboard/RPI3B+/Other Orange PI -modeller.

Feil PIN Out er den eneste feilen du kan gjøre i dette prosjektet, derfor er det verdt å bruke noen tommelfingerregler:

1, Prøv alltid å bruke den samme fargede kabelen fra END til END. Selv begår jeg den samme "feilen" i noen prosjekter der jeg ikke gjør det, rett og slett fordi jeg ikke har lange nok mann-hann/mann-hunn/hunn-hunn-kabler for hånden, og jeg lapper 2 sammen bare for å fortsette med kretsen. Hvis du ikke ordentlig dokumenterer arbeidet ditt, kan dette føre til hodepine år senere, der du må reparere og oppgradere.

2, Smør litt lim på kontaktene. Hvis du bruker disse arduino-startpakken mm/mf/ff kabler som ikke er topp kvalitet, er det ganske vanlig (spesielt hvis du beveger deg rundt/transporterer enheten) at kontaktene glir ut. Hvis du vet at det vil være en enhet for langvarig bruk (muligens bruk til det går i stykker ?!), er det bedre å bruke litt lim på både OrangePI og LCD -siden av kontaktene for å holde dem sammen. Dette kan lett smeltes/ripes av senere om nødvendig.

3, OrangePI null ledninger Den dårlige nyheten er at Orange PI pinout IKKE er den samme som Raspberry PI 0/1/2/3, og det er enda forskjell mellom andre Orange PI -modeller. Den beste måten å gå er å få ledningsbiblioteket (Orange PI Zero -versjon). Bildet kan være litt forvirrende, men dette var det beste jeg fant. Det ene er et 180 graders speil av det andre. Selv om CLI -ikke -grafisk bilde kan være vanskeligere å forstå, er det det mest rett frem.

Du kan alltid skille de to enden av stikkontaktene ved å betrakte den ene enden som den POSITIVE enden med (+3.3/+5V) og den andre som den NEGATIVE enden (en GND) -> dette er enden av kontakten som vender mot ETHERNET -porten.

Fra tabellen Wiring PI Zero trenger du bare en kolonne wPI glemmer de andre som om de ikke ville være der.

Så for eksempel for å koble til LCD_E 15 (det vil si wPI 15!) Og LCD_RS 16 (det er wPI 16!) Teller pinnene fra den POSITIVE enden av kontakten (enkelt å gjøre med en penn eller en liten skrutrekker). Det vil fysisk gå ned 4 pins og 5 pins.

4, gruppe opp. Hvis det er en mulighet til å sette brukte pinner ved siden av hverandre (gruppere dem) alltid valgte det, gjør det at de kan ta tak i hverandre selv uten lim og også i andre prosjekter når du har 2x 4x 6x molex -kontakter du kan bare dra fordel av at pinnene er ved siden av hverandre. Her er det beste du kan gjøre er en gruppe på 2-3-er (ideelt når du bruker bergede startkabler fra gamle PC-er).

Pinner som brukes for OrangePI LCD -skjermtilkobling:

// BRUK WIRINGPI PIN -NUMMER

#define LCD_E 15 // Aktiver Pin #define LCD_RS 16 // Registrer velg pin #definer LCD_D4 5 // Datapinne 4 #definer LCD_D5 6 // Datapinne 5 #definer LCD_D6 10 // Datapinne 6 #definer LCD_D7 11 // Datapinne 7

Pinner som brukes til RGB -bakgrunnsbelysningskontroll

$ G skriv 10

$ G skrive 4 1 $ G skrive 7 1

Oransje PI null wPI -pinne 1, 4, 7. Den eneste magien denne LCD -skjermen kan gjøre i forhold til standardfixblå eller fikser grønn bakgrunnsbelysning LCD der du har en enkelt katode som må trekkes ned til GND at den har 3 for 3 farger. Rødt, grønt og blått. Ved å endre kombinasjonen av hvilken som er slått PÅ, kan du blande ut forskjellige farger fra disse grunnfargene, men bare de høye endene ingen nyanser fordi du ikke kan kontrollere lysstyrken til en farge (den er enten på eller av).

Additiv fargeblanding: tilsetning av rødt til grønt gir gult; å legge rødt til blått gir magenta; tilsetning av grønt til blått gir cyan; å legge alle tre hovedfargene sammen gir hvitt.

Trinn 3: Operativsystem

Operativsystem
Operativsystem

OrangeBOX starter opp og Armbian linux (basert på Debian Stretch) 4.14.18-sunxi-kjernen med et sikkert brannmurmiljø, kobles til et VPN og venter på eksterne sikkerhetskopikommandoer fra serveren.

Design prinsipper:

-Full luks -basert diskkryptering (selve enheten inneholder ikke nøkkelen for å åpne sikkerhetskopidisken. Den blir midlertidig kopiert fra den eksterne serveren til ram /dev /shm, stasjonen åpnes og nøkkelen slettes. Etter at sikkerhetskopien er ferdig stasjonen stenges og OrangeBox slås av automatisk på 1 minutt.)

-Alle kommandoene og nøklene blir sendt fra den eksterne serveren (selve enheten inneholder bare et vpn -sertifikat) den har ingen tilgang til den eksterne serveren, selv om ssh fra denne enheten er brannmuret

-De lokale filsystemene er ikke kryptert for å kunne starte opp, men inneholder ikke noe nyttig, og siden VPN-koblingen er sterkt begrenset i den andre enden, selv med totalt tap av enheten, kan en angriper ikke gjøre noe

Last ned Armbian Stretch fra

Få systemet i gang:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Rediger /etc /inittab, all konsollen kan deaktiveres da boksen vil bli brukt som hodeløs. Kommenter følgende avsnitt:

#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

Start boksen på nytt og fjern systemd for å ha et ekte open source bloatware -gratis system.

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

Installer noen pakker

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

Installer wiringpi -biblioteket

cd /usr /src

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

Lag oransje bruker for LCD -skjermen

groupadd -g 1000 oransje

useradd -m -d /home /orange -s /bin /bash -u 1000 -g oransje oransje

Vakthunden som ikke passer på deg

apt-get install vaktbikkje

Ser du på/etc/default/vakthund # Start vakthund ved oppstartstid? 0 eller 1 run_watchdog = 1 # Start wd_keepalive etter å ha stoppet vaktbikkje? 0 eller 1 run_wd_keepalive = 1 # Last inn modulen før du starter vaktbikkje watchdog_module = "none" # Spesifiser flere vaktbikkealternativer her (se manpage).

Ser på /etc/watchdog.conf

# Aktiver i det minste disse

maks-last-1 = 24 maks-last-5 = 18 maks-last-15 = 12

/etc/init.d/watchdog start

Det bør være minst 1 kjernetråd og 1 prosess:

rot 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/vakthund

Testing:

Sørg for at du stopper alt og gjør en synkronisering og synkronisering for å skrive resten av dataene til disken. Så som rotproblem:

ekko 1> /dev /vakthund

Etter noen sekunder skal maskinen starte på nytt.

Som manualen sier:

o Er prosessbordet fullt?

o Er det nok ledig minne? o Er det nok tildelbart minne? o Er noen filer tilgjengelige? o Har noen filer endret seg innenfor et gitt intervall? o Er gjennomsnittlig arbeidsbelastning for høy? o Har det skjedd et overløp av filtabeller? o Kjører en prosess fortsatt? Prosessen er spesifisert av en pid -fil. o Svarer noen IP -adresser på ping? o Mottar nettverksgrensesnitt trafikk? o Er temperaturen for høy? (Temperaturdata er ikke alltid tilgjengelig.) O Utfør en brukerdefinert kommando for å utføre vilkårlige tester. o Utfør en eller flere test-/reparasjonskommandoer som finnes i /etc/watchdog.d. Disse kommandoene kalles med argumenttesten eller reparasjonen. Hvis noen av disse kontrollene mislykkes, vil vakthund føre til en nedleggelse. Skulle noen av disse testene bortsett fra brukerdefinert binær vare lenger enn ett minutt, vil maskinen også startes på nytt.

Denne vakthunden kan fungere OK på vanlige x86 -arkitekturer, men på ARM -baserte tavler som Raspberry PIs, Orange PIs mislyktes det meg utallige ganger. Systemet kan gå i hengestater der selv vakthunden henger. La oss bare konfigurere det uansett, kanskje det vil bli bedre med en apt-get-oppgradering gjennom årene:(

Trinn 4: Programvaredesign

Programvare design
Programvare design

Selve sikkerhetskopieringsprosessen er rsync-basert (beste sikkerhetskopiverktøy noensinne oppfunnet) data blir presset fra SERVER-> OrangeBOX.

Å trekke ut dataene fra rsync var den eneste utfordrende delen av prosjektet for å få en fremdriftslinje om sikkerhetskopien skrevet ut på LCD -skjermen.

Det var tre mulige måter å beregne fremdriften for sikkerhetskopiering på:

1, ved å bruke formler som https://wintelguy.com/transfertimecalc.pl for å bestemme omtrent hvor lang tid overføringen kan ta

Overføringstid (d: h: m: s): 0: 02: 44: 00

Til sammenligning: Estimert tid for overføring av 123 GB fil over forskjellige nettverkskoblinger (d: h: m: s): T1/DS1 -linje (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

Hvis rsync er ferdig, signalerer det manuset om å stoppe beregningen. Denne metoden er bare en tilnærmet og ikke pålitelig, heller er koblingshastigheten ikke fikset, den kan bremse, øke hastigheten igjen. Dette er bare en teoretisk beregning.

2, Gjør størrelseskontroller på katalogen for å finne ut hvor mye data vi synkroniserte allerede. Kan bli veldig treg med hundrevis av GB -filer (selv om du -s i Linux cacher litt hvis du kjører den på nytt)

Vert A -> Server data som skal sikkerhetskopieres Data dir: 235GB

Vert B -> Orange box klientdata vi har akkurat nå Data dir: 112GB

Deltaet er 123 GB.

3, Hvis filsystemet er dedikert som i vårt tilfelle/dev/mapper/backup, kan vi dra nytte av den generelle indikatoren for bruk av filsystem for å avgjøre hvordan det går med sikkerhetskopien vår, og dette er skikkelig fort. I dette tilfellet trenger vi ikke engang å rsync stdout rør noen steder, bare kjør en tørr rsync, vent til den er fullført, beregne deltaet i byte og kryssjekk dette med ledig plass hva vi har på sikkerhetskopidisken og voila vi kan lag nå et fint stolpediagram. Dette var metoden jeg valgte, og her er skriptet mitt for det:

#!/bin/bash

# Backup Progress Calculator for OrangeBOX av NLD # Versjon: 0.2 (2018/03/05) # # Kjør den som uprivilegert bruker fra cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Dette skriptet er bare ansvarlig for visning av data på LCD -skjermen, det kommuniserer # med hovedprogrammet indirekte gjennom posisjons- og låsefiler. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # diskbruk i begynnelsen av sikkerhetskopien TFILE = "$ HOME/trans.size" # samlet forhåndsberegnet overføringsstørrelse BFILE = "$ HOME/ backup.lck " # bestemmer starttilstand FFILE =" $ HOME/backup.fin " # bestemmer ferdig tilstand LFILE1 =" $ HOME/lcd1.bar " # LCD -statusindikatordata LFILE2 =" $ HOME/lcd2.bar " # LCD -fremgang indikatordata SHUTDOWN = "1" # Hvis 1 vil det starte et annet skript som slår av boksen ved slutten av sikkerhetskopien BACKUP_CURRENT = "0" # Må initialiseres, men beregnes DRIVE_SIZE = "" # Størrelse i byte (sekundær sjekk) LCD = "sudo /bin /lcd" -funksjon is_mount () {grep -q "$ 1" /proc /mounts status = $? } funksjon rød () {sudo /bin /lcdcolor rød} funksjon grønn () {sudo /bin /lcdcolor grønn} funksjon blå () {sudo /bin /lcdcolor blå} # Clear state (satt på oppstart av bootup_display.sh). Ingen sikkerhetskopiering pågår. IKKE ødelegge # status -LCD -skjermen. Bare vis fremgang hvis det er en pågående sikkerhetskopiering => Ingen startfil OG Ingen finfil = avslutt hvis [! -f $ BFILE] && [! -f $ FFILE]; avslutt deretter 1 fi # Hvis sikkerhetskopien er ferdig, vil dette skriptet vise det og fjerne låsene # for ikke å kunne kjøre igjen før neste oppstart. hvis [-f $ FFILE]; deretter grønn $ LCD "Sikkerhetskopiering" "** Fullført **" ekko "Sikkerhetskopiering fullført" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Sikkerhetskopiering avsluttet hvis [$ SHUTDOWN == "1"]; ekko deretter "Utfører nedleggingsskript …" /home/orange/shutdown.sh & fi exit 0 fi # Fra dette punktet utfører manuset KUN hvis det er en PÅGÅENDE sikkerhetskopi # derfor vil alle feil skrives ut til LCD -skjermen og forårsake scriptet # for å avbryte, men den vil ikke fjerne backup.lck -filen, så den vil gå inn her # om og om igjen og unngå forholdene. is_mount $ BACKUP_DRIVE hvis [$ status -ne 0]; deretter er rød $ LCD "ERR: Backup drive" "ikke montert!" ekko "Backup -stasjon er ikke montert" avslutter 1 fi hvis [! -s $ TFILE]; deretter rød $ LCD "ERR: transfile" "er tom" echo "Transportstørrelsesberegningsfil er tom." exit 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; deretter rødt $ LCD "ERR: Size readback" "from server ugyldig" echo "Backup total size readback is ugyldig 1" exit 1 fi if!

Selv om koden er enkel, er det en beskrivelse av hva den gjør:

1, Hvis BFILE eller FFILE ikke eksisterer (som er tilstanden etter en klar oppstart) som indikerer at det ikke er noen sikkerhetskopieringsprosess, så IKKE gjør noe, bare avslutt. På denne måten kan du tegne hvilken som helst fin informasjon du vil ha om oppstarten, for eksempel vertsnavn, ip, oppetid osv., Og det blir ikke ødelagt.

2, la oss hoppe til is_mount $ BACKUP_DRIVE -delen. Bare en påminnelse den eneste måten vi kom hit er at en sikkerhetskopi ble startet så BILEN eksisterer. Nå gjør koden bare forskjellige feilkontroller som om sikkerhetskopidisken er montert ?, er den totale størrelsen på det vi skal sikkerhetskopiere, større enn stasjonen? eller andre feil. Husk at dette er et DISPLAY -program, selv om størrelsen ville overstige sikkerhetskopiene, vil det ikke avbryte noe.

3, OK alle feilkontroller fjernet tid for å beregne prosentgrafen. Først tar skriptet et "øyeblikksbilde" av plassen som brukes i byte på sikkerhetskopifilsystemet akkurat nå og lagrer det i VFILE. Hva er hensikten med dette: et bash -skript er statsløst, det mister data mellom henrettelser, så hvis du vil "huske" noen data fra forrige kjøring, må du lagre det et sted. I vårt tilfelle er dette bare en enkel tekstfil. For å gjøre det enkelt, la oss si at START_POS er 1 GB (data vi har), det vi vil sikkerhetskopiere er +2 GB og den totale stasjonskapasiteten er 10 GB.

4, Neste gang når skriptet kjøres, eksisterer VFILE, og dette vil bli lest tilbake (så vi vet hva som var startposisjonen i tilfelle stasjonen ikke var tom) for å beregne BACKUP_CURRENT som egentlig er et delta av plassen som brukes akkurat nå på backup -stasjonen minus startposisjonen det vi har lagret i VFILE i den siste runden (igjen er dette dataene vi hadde på stasjonen da sikkerhetskopien startet). Skriptet fungerer internt med byte, men for å gjøre det enkelt etter en halv time sikkerhetskopierte vi 500MB data, da ville formelen være BACKUP_CURRENT = 1.5GB - 1GB (initial state) => som gir oss nøyaktig de virkelige dataene 500 MB, det vil si det vi har støttet så langt. Du kan se at uten å holde styr på hva de opprinnelige dataene var i begynnelsen av sikkerhetskopien, ville denne størrelsesberegningen mislykkes fordi den ville se at plassen som brukes akkurat nå er 1,5 GB uten å vite at 1 gig data var der på disken hele tiden kommer fra en tidligere sikkerhetskopi, så det kan anta at serveren har sendt oss 1,5 GB data i stedet for 500 MB.

5, BACKUP_OVERALL vil bli lest inn, disse dataene ble beregnet av serveren da den gjorde den første tørre rsync (så dette er en ekstern datakilde som inneholder mengden byte som vil bli sikkerhetskopiert fra Server-> OrangeBOX). Denne verdien vil bli sjekket mot den totale GRATIS plassen på disken for øyeblikket, og hvis den overskrider den, vises en feilmelding på lcd og skriptet stopper utførelsen. Husk igjen at alt dette skriptet BARE er å vise, det forstyrrer ikke sikkerhetskopieringsprosessen. Hvis du rydder opp filer på disken eller mengden filer endres eksternt, og derfor endres BACKUP_OVERALL på et tidspunkt.

6, Endelig er vi ferdige med kontrollene på andre nivå, det er på tide å vise noe. Skriptet viser både dataene på konsollen og på LCD -en ved hjelp av en enkel C -app. Bakgrunnen er byttet til BLÅ for å indikere at sikkerhetskopien endelig begynte og fremdriften beregnet med følgende formel PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Dette er en grunnleggende prosent beregning vi tar det nåværende beløpet, i vårt eksempel 0,5GB*100/2GB = 25%.

7, Tallene konverteres også fra byte til Mega/Giga -byte, og skjermen vises automatisk i MB hvis den er lavere enn 1 GB.

8, En ting igjen for å kartlegge dette i vårt tilfelle er 25% på en 20 -kolonne LCD. Det vil være 25 * 20/100 = 5 i vårt eksempel. For øyeblikket er oppdateringen med LCD -programmet implementert at hver gang du ringer programmet, vil det tegne hele skjermen på nytt. Så i dette tilfellet ville det kjøre en for loop 5 ganger for å tegne 5 hashmarks # på skjermen, dette ville vise seg som stygg flimring i hver runde, så i stedet skriver jeg ut de beregnede fremdriftslinjedataene til LFILE1 og 2, som i dette tilfellet etter de 5 rundene vil inneholde ##### og dette leses tilbake og vises på LCD -skjermen. Du kan også sette LFILE1 og 2 på ramdisk for å lagre sdcardet fra ekstra skriveoperasjoner, det forårsaket ingen problemer for meg, skriptet kjøres en gang i minuttet fra cron.

9, Når sikkerhetskopien er ferdig, vil det andre skriptet fra serveren som kjører rsync berøre FFILE (Fullfør fil). Ved neste sløyfe vil backup_progress.sh da vise at sikkerhetskopien er fullført og eventuelt ringe et annet skript for å slå av OrangeBOX. Det sletter sine låsefiler på dette tidspunktet, noe som gjør ytterligere henrettelser umulige, så selv om du ikke aktiverer nedleggelse det neste minuttet når dette skriptet kjøres, slutter det med en gang fordi BILEN ikke er der og FFILE ikke er der. Derfor vil den vise den fullførte sikkerhetskopien på ubestemt tid, med mindre sikkerhetskopien startes på nytt.

Skript for ekstern sikkerhetskopiering (orange-remote.sh):

Du må generere en ssh -nøkkel for sikkerhetskopien og en nøkkel for luksus -kryptering for stasjonen. Når du kjører den eksterne sikkerhetskopien manuelt for første gang, lagrer den oransje boksene vertsfingeravtrykk i vertsfilen (fra dette punktet kan den kjøres automatisk med cron).

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

For å finne ut harddiskidentifikatoren, kjør uuid, blkid eller bare slå opp de tilhørende/dev/disk/katalogene.

En katalog inkluderer ekskludere kan konfigureres hvis du ikke vil sikkerhetskopiere alt. Dette er en ganske irriterende prosess, for for rsync hvis du vil ekskludere en enkelt undermappe dypt i strukturen, må du gjøre:

+ /a

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

Siden dette skriptet utfører kommandoer på OrangeBOX eksternt, har det ikke tilsyn med returvariablene fra den siden, derfor bruker jeg noen smarte triks, for eksempel at det vil sende meldingen om å åpne den eksterne stasjonen til /tmp/contmsg.txt, og deretter analysere den for å se om den var vellykket, hvis ikke så endrer den rsync binær til ikke-kjørbar, slik at rsync ikke vil prøve å laste opp data til OrangePIs rootfs som fyller SD-kortet. Også en god praksis å sette den uforanderlige biten på chattr +i /mnt /backup for å gjøre dette umulig.

Forhåndsberegningen av størrelsen finner sted lokalt på serveren, derfor må denne filen sendes til OrangeBOX i neste trinn.

Hovedbackupen startes som en loop for ((i = 0; i <100; i ++)); gjør fordi i tilfelle av lav kvalitet DSL/kabel Internett -tilkoblinger kan rsync ofte bryte, timeout. Hvis den fullføres vellykket, vil løkken bryte uten å prøve flere iterasjoner. Dette fungerer feilfritt med gode operativsystemer, men hvis den eksterne boksen av en eller annen grunn ville være windows og det ville bli nektet tilgang som vanlig på NTUSER. DAT, ville rsync returnere en feilkode og denne sløyfen ville kjøres 100 ganger og deretter fortsatt mislykkes.

Trinn 5: Avslutning og gjøremålsliste

Avslutning og gjøremålsliste
Avslutning og gjøremålsliste
Avslutning og gjøremålsliste
Avslutning og gjøremålsliste

Min instruerbare demonstrerer nok en gang hvordan du kan lage noe bedre, mer tilpassbar enhet fra en 10 $ datamaskin på egen hånd som slår helvete ut av Buffalo med sine proprietære låste NAS -enheter, merkelig intern partisjonering, busybox forkrøplet linux med segfaulting -verktøy, administrert av deres Windows -programvare, lukket fastvare, dårlig dokumentasjon og støtte, og uansett hvor mye penger du vil bruke, vil du aldri få en fremdriftsindikator som viser sikkerhetskopien din for ikke å nevne hvor kult OrangeBox ser ut (jeg bruker til og med oransje CAT5 -kabel med den: D).

Med minidatamaskiner som blir mer og mer kraftfulle samtidig som vi opprettholder samme prislinje på <100 $, kan vi bruke dem til flere og flere oppgaver. Siden Gbe Ethernet-porter er ganske vanlige i disse dager om 1-2 år, vil minnet på disse kortene øke dramatisk, og de kan også brukes til ZFS-baserte sikkerhetskopisystemer.

-Fin kornfremgangsindikator av C -programmet (se WasserStation ett av mitt andre prosjekt). Akkurat nå bare # hashmark # tegn brukt i tegnmodus med lcdPuts (lcd, linje1), dette kan forbedres selv om du bruker tegn -LCD -er til å dele 1 kolonne til 5 deler, og hoved -C -programmet kan bare ta et heltall som 25 og tegne ut fremdriftslinjen skikkelig eller ytterligere forbedret ved å bruke en grafisk LCD

-Mulighet for å ha en flyttbar hdd for å lage nye og nye sikkerhetskopier og flytte dem til forskjellige steder (hvis boksen oppdager en tom stasjon, bør den automatisk formatere den med krypteringsnøkkelen når den er mottatt).

-Hvis du vil skrive ut din egen sak med makerbot, kan OrangeNAS være interessant for deg:

Anbefalt: