Indholdsfortegnelse:

OrangeBOX: OrangePI -baseret sikker backup -lagerenhed: 5 trin
OrangeBOX: OrangePI -baseret sikker backup -lagerenhed: 5 trin

Video: OrangeBOX: OrangePI -baseret sikker backup -lagerenhed: 5 trin

Video: OrangeBOX: OrangePI -baseret sikker backup -lagerenhed: 5 trin
Video: Annoying Orange - ONE BITE CHALLENGE! 2024, November
Anonim
OrangeBOX: OrangePI -baseret sikker backup -lagerenhed
OrangeBOX: OrangePI -baseret sikker backup -lagerenhed
OrangeBOX: OrangePI -baseret sikker backup -lagerenhed
OrangeBOX: OrangePI -baseret sikker backup -lagerenhed

OrangeBOX er en alt-i-en fjernlager backup-boks til alle servere.

Din server kan være inficeret, ødelagt, slettet, og alle dine data er stadig sikre på OrangeBOX, og hvem vil ikke have en mission umulig som backup -enhed, hvad du bare tilslutter og ser en statusindikator uden at gøre noget mere (håber bare magien røg kommer ikke ud i slutningen:)).

OrangeBOX er mit første projekt, som for det meste er en software, ikke et hardware -hack. Det er dybest set en specialbygget NAS med en LCD tilsluttet.

Trin 1: Hardwaredele

Hardware dele
Hardware dele
Hardware dele
Hardware dele
Hardware dele
Hardware dele

Orange PI zero er en open-source single-board computer. Det kan køre Android 4.4, Ubuntu, Debian. Den bruger AllWinner H2 SoC og har 256 MB/512 MB DDR3 SDRAM (256 MB version er standardversion. Orange Pi Zero er for alle, der ønsker at begynde at skabe med teknologi - ikke bare forbruge den. Det er et simpelt, sjovt, nyttigt værktøj, som du kan bruge til at begynde at tage kontrol over verden omkring dig (https://www.orangepi.org/orangepizero/). Så det er lige præcis for os, lad os komme videre med det:)

  • Metal/plast/trækasse (jeg har brugt en gammel Yamaha ekstern cd-rw-boks)
  • Orange PI Zero eller bedre (GPIO pinout kan ændre sig, hvis du bruger en anden model)
  • 2x20 RGB LCD -skærme
  • Ethvert SFF 3.5/ LFF 2.55 usb -drev
  • Sata -> usb -adapter. Husk, at selvom OrangePI ikke pålægger en øvre grænse for den maksimale drevkapacitet, gør mange USB-til-SATA-broer dog (maks. 2 TB). Den orange PI Zero I -brug har kun en enkelt USB 2.0 -port med en effektiv overførselshastighed på maks. 28 MB/s. Jeg har valgt en USB3.0 (forberedt til fremtidige opgraderinger) -> SATA bridge (mærke vil ikke blive nævnt), og det begrænser grænsen, så det er bedre at vælge en bro, der har vist sig at understøtte større drev, såsom JMicron JMS567 chipbaserede broer. Gør din egen research, før du køber en. Jeg kan leve med hastigheds- og harddiskgrænsen ved at bruge et 2TB sata -drev i dette projekt (hvis du sætter større drev i, vil det blive genkendt, men operativsystemet vil kun se det første 2TB af det, så resten af kapaciteten vil være faret vild).
  • 12V 2,5 A eller højere forstærkeradapter. Beregn omkring 500mA normal brug for OPI Zero og 1,5A peak for et standard LFF SATA -drev. Oversize skader aldrig. I mit setup blæste Yamaha psu (hvad der kunne levere mere end nok strøm på begge 12+5V skinner) desværre i luften: (på grund af at sortere hovedafbryderen til GND i et sekund, så jeg måtte lime i en almindelig adapter, kl. det gjorde i hvert fald æsken et par gram lettere.
  • Buck-omformer DC-DC 12V-> 5V. Jeg brugte den samme justerbare minibuk som med IronForge, fungerer perfekt.

Valgfri

Hvis du er villig til at bruge + 10 $, kan du få Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), som er en lignende formfaktor og giver dig Gbe og SATA3. Til dette kan Libra PI -ledningsbiblioteket bruges: https://github.com/OrangePiLibra/WiringPi, men da GPIO -pinout er anderledes, er det uden for omfanget af denne skrivning.

Du kan også gøre denne build med den nye Orange PI Plus2, der har SATA-stik, og du kan springe brugen af sata-> usb-konvertere over alt sammen med deres begrænsninger. Hvis du planlægger at bruge FreeBSD eller andre BSD'er, er Orange PI -serien muligvis ikke det bedste valg, da deres hardware -support er begrænset (du skal f.eks. Bruge USB -stick til at starte op). For BSD'er er det det bedste råd at bruge Raspberry PI. Både C -koden til LCD'et og alle shell -scripts er bærbare til ethvert andet UNIX -system.

Trin 2: Hardware Design

Hardware design
Hardware design
Hardware design
Hardware design
Hardware design
Hardware design

Yamaha-boksen var lige nok til at gemme alt dette, den ville ikke have nok plads til en Orange PI-pc eller almindeligt Raspi-formfaktorkort.

Ethernet blev bragt ud med en forlænger på bagsiden af kassen. Husk, at Orange PI zero kun har 100mbit/s Ethernet -interface, hvis du vil hurtigere, skal du bruge et andet kort, f.eks. Asus Tinkerboard/RPI3B+/Other Orange PI -modeller.

Forkert PIN -udgang er den eneste fejl, du kan begå i dette projekt, derfor er det værd at anvende nogle tommelfingerregler:

1, Prøv altid at bruge det samme farvede kabel fra END til END. Jeg begår selv den samme "fejl" i nogle projekter, hvor jeg ikke gør det, simpelthen fordi jeg ikke har lange nok han-han/hun-hun/hun-hun-kabler ved hånden, og jeg lapper 2 sammen bare for at komme videre kredsløbet. Hvis du ikke korrekt dokumenterer dit arbejde, kan dette føre til hovedpine år senere, hvor du skal foretage en reparation, opgradere.

2, Påfør nogle hotlim på stik. I tilfælde af at bruge disse arduino-starter kit-stil mm/mf/ff kabler, som ikke er i topkvalitet, er det ret almindeligt (især hvis du bevæger dig rundt/transporterer enheden), at stikene glider ud. Hvis du ved, at det vil være en langtidsanvendelsesenhed (muligvis bruge indtil den går i stykker ?!), så er det bedre at anvende en smule hotlim både på OrangePI- og LCD -siden af stik for at holde dem sammen. Dette kan let smeltes/ridses af senere, hvis det er nødvendigt.

3, OrangePI nul -ledningerne Den dårlige nyhed er, at Orange PI pinout IKKE er den samme som Raspberry PI 0/1/2/3, og der er endda forskel mellem andre Orange PI -modeller. Den bedste måde at gå på er at hente ledningsbiblioteket (Orange PI Zero version). Billedet er måske lidt forvirrende, men det var det bedste, jeg kunne finde. Det ene er et 180 graders spejl af det andet. Selvom CLI -ikke -grafisk billede kan være sværere at forstå, er det det mest ligetil.

Du kan altid adskille de 2 ender af stikkene ved at betragte den ene ende som den POSITIVE ende med (+3.3/+5V) og den anden som den NEGATIVE ende (en GND) -> dette er enden af stikket, der vender mod ETHERNET -porten.

Fra Wiring PI Zero -tabellen har du kun brug for en kolonne, wPI glemmer de andre, som om de ikke ville være der.

Så for eksempel at tilslutte LCD_E 15 (det vil sige wPI 15!) Og LCD_RS 16 (det er wPI 16!) Tælle stifterne fra den POSITIVE ende af stikket (let at gøre med en pen eller en lille skruetrækker). Det vil fysisk gå ned 4 pins og 5 pins.

4, gruppe op. Hvis der er mulighed for at sætte brugte stifter ved siden af hinanden (gruppering af dem) altid valgte det, gør det dem til at have fat i hinanden selv uden hotglim og også i andre projekter, når du har 2x 4x 6x molex -stik, du kan bare udnyt stifterne ved siden af hinanden. Her er det bedste, du kan gøre, en gruppe på 2-3s (ideel, når du bruger bjærgede jumperkabler fra gamle pc'er).

Stifter, der bruges til OrangePI LCD -skærmforbindelse:

// BRUG WIRINGPI PIN -NUMMER

#define LCD_E 15 // Aktiver Pin #define LCD_RS 16 // Registrer vælg pin #definer LCD_D4 5 // Datastift 4 #definer LCD_D5 6 // Datastift 5 #definer LCD_D6 10 // Datastift 6 #definer LCD_D7 11 // Datapind 7

Stifter, der bruges til RGB -baggrundsbelysning

$ G skriv 1 0

$ G skriv 4 1 $ G skriv 7 1

Orange PI nul wPI ben 1, 4, 7. Den eneste magi, denne LCD kan lave i forhold til standard fix blå eller fix grøn baggrundsbelysning LCD, hvor du har en enkelt katode, der skal trækkes ned til GND, at den har 3 til 3 farver. Rød, grøn og blå. Ved at ændre kombinationen af hvilken der er tændt, kan du blande forskellige farver ud fra disse grundfarver, men kun de høje ender ingen nuancer, fordi du ikke kan styre lysstyrken i en farve (den er enten tændt eller slukket).

Additiv farveblanding: tilføjelse af rød til grøn giver gul; tilføjelse af rød til blå giver magenta; tilføjelse af grønt til blåt giver cyan; at tilføje alle tre primære farver giver hvidt.

Trin 3: Operativsystem

Operativ system
Operativ system

OrangeBOX starter op og Armbian linux (baseret på Debian Stretch) 4.14.18-sunxi-kerne med et sikkert firewall-miljø, opretter forbindelse til en VPN og venter på eksterne backupkommandoer fra serveren.

Designprincipper:

-Fuld luksus baseret diskkryptering (selve enheden indeholder ikke nøglen til åbning af backup -drevet. Den vil midlertidigt blive kopieret fra fjernserveren til ram /dev /shm, drevet åbnes og nøglen slettes. Når backupen er færdig drevet lukket, og OrangeBox lukker automatisk ned på 1 minut.)

-Alle kommandoer og nøgler sendes fra fjernserveren (selve enheden indeholder kun et vpn -cert) det har ikke nogen adgang til fjernserveren, selv ssh fra denne enhed er firewallet ud

-De lokale filsystemer er ikke krypterede for at kunne starte op, men indeholder ikke noget nyttigt, og da VPN-oplinket er stærkt begrænset i den anden ende, selv med fuldstændigt tab af enheden, kan en angriber ikke gøre noget

Download Armbian Stretch fra

Få systemet i gang:

apt-get opdatering && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Rediger /etc /inittab, hele konsollen kan deaktiveres, da boksen vil blive brugt som hovedløs. Kommenter følgende afsnit:

#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

Genstart din boks og fjern systemd for at få et ægte bloatware -frit system med open source.

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

Installer nogle pakker

apt-get install cryptsetup vim htop rsync skærm 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

Opret orange bruger til lcd -skærmen

groupadd -g 1000 orange

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

Den vagthund, der ikke passer på dig

apt-get installer vagthund

Ser du på/etc/default/vagthund # Start vagthund ved opstart? 0 eller 1 run_watchdog = 1 # Start wd_keepalive efter at have stoppet vagthund? 0 eller 1 run_wd_keepalive = 1 # Indlæs modul, inden vagthund startes watchdog_module = "none" # Angiv yderligere vagthundsmuligheder her (se manpage).

Kigger på /etc/watchdog.conf

# Aktivér i det mindste disse

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

/etc/init.d/watchdog start

Der skal være mindst 1 kernetråd og 1 proces:

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

Test:

Sørg for at stoppe alt og synkronisere && synkronisere && synkronisere for at skrive resten af dataene til disken. Så som rodproblem:

ekko 1> /dev /vagthund

Efter nogle sekunder skulle maskinen genstarte.

Som der står i manualen:

o Er procesbordet fyldt?

o Er der nok ledig hukommelse? o Er der nok tildelelig hukommelse? o Er nogle filer tilgængelige? o Har nogle filer ændret sig inden for et givet interval? o Er den gennemsnitlige arbejdsbelastning for høj? o Er der sket et filtabeloverløb? o Kører en proces stadig? Processen er angivet af en pid -fil. o Svarer nogle IP -adresser på ping? o Modtager netværksgrænseflader trafik? o Er temperaturen for høj? (Temperaturdata er ikke altid tilgængelige.) O Udfør en brugerdefineret kommando for at udføre vilkårlige tests. o Udfør en eller flere test-/reparationskommandoer, der findes i /etc/watchdog.d. Disse kommandoer kaldes med argument test eller reparation. Hvis nogen af disse kontroller mislykkes, vil vagthund forårsage en nedlukning. Skulle nogen af disse tests undtagen den brugerdefinerede binære vare længere end et minut, genstarter maskinen også.

Denne vagthund fungerede muligvis OK på de almindelige x86 -arkitekturer, men på ARM -baserede tavler som f.eks. Raspberry PI'er, Orange PI'er mislykkedes det mig utallige gange. Systemet kan gå i hængestater, hvor selv vagthunden hænger. Lad os bare konfigurere det alligevel, måske bliver det forbedret med en apt-get-opgradering med årene:(

Trin 4: Software Design

Software Design
Software Design

Selve backup-processen er rsync-baseret (bedste backupværktøj nogensinde opfundet) data bliver skubbet fra SERVER-> OrangeBOX.

Udtræk af data fra rsync var den eneste udfordrende del af projektet for at få en statuslinje om sikkerhedskopien udskrevet på LCD'et.

Der var 3 mulige måder at beregne sikkerhedskopieringsforløbet på:

1, ved hjælp af formler som https://wintelguy.com/transfertimecalc.pl til at bestemme den cirka tid, overførslen kan tage

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

Til sammenligning: Estimeret tid til at overføre 123 GB fil over forskellige netværksforbindelser (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 færdig, signalerer det scriptet om at stoppe beregningen. Denne metode er bare en omtrentlig og ikke pålidelig, også linkhastigheden er ikke fastlagt, den kan bremse, fremskynde igen. Dette er bare en teoretisk beregning.

2, foretager størrelseskontroller på biblioteket for at bestemme, hvor mange data vi allerede synkroniserede. Kan blive meget langsom med hundredvis af GBs små filer (selvom du -s i Linux cacher noget, hvis du kører den igen)

Host A -> Server data, der skal sikkerhedskopieres Data dir: 235GB

Host B -> Orange box klientdata, vi har lige nu Data dir: 112GB

Deltaet er 123 GB.

3, Hvis filsystemet er dedikeret som i vores tilfælde/dev/mapper/backup, kan vi drage fordel af den overordnede indikator for brug af filsystem til at bestemme, hvordan vores sikkerhedskopiering skrider frem, og det er virkelig forbandet hurtigt. I dette tilfælde behøver vi ikke engang at rør rsync stdout nogen steder, bare kør en tør rsync, vent til det er færdigt, beregne deltaet i bytes og krydskontrollér dette med det ledige rum, hvad vi har på backup -drevet og voila, vi kan lav nu et flot søjlediagram. Dette var den metode, jeg valgte, og her er mit script til det:

#!/bin/bash

# Backup Progress Calculator til OrangeBOX af NLD # Version: 0.2 (2018/03/05) # # Kør det som en privilegeret bruger fra cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Dette script er kun ansvarligt for visning af data på LCD'et, det kommunikerer # med hovedprogrammet indirekte gennem positions- og låsefiler. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # diskbrug i begyndelsen af backupen TFILE = "$ HOME/trans.size" # samlet forudberegnet overførselsstørrelse BFILE = "$ HOME/ backup.lck " # bestemmer starttilstand FFILE =" $ HOME/backup.fin " # bestemmer færdig tilstand LFILE1 =" $ HOME/lcd1.bar " # LCD -statusindikatordata LFILE2 =" $ HOME/lcd2.bar " # LCD -fremskridt indikatordata SHUTDOWN = "1" # Hvis 1 det vil starte et andet script, der lukker boksen ned i slutningen af backup BACKUP_CURRENT = "0" # Skal initialiseres, men beregnes DRIVE_SIZE = "" # Drevstørrelse i bytes (sekundær check) LCD = "sudo /bin /lcd" funktion is_mount () {grep -q "$ 1" /proc /mounts status = $? } funktion rød () {sudo /bin /lcdcolor rød} funktion grøn () {sudo /bin /lcdcolor grøn} funktion blå () {sudo /bin /lcdcolor blå} # Ryd tilstand (indstillet til opstart af bootup_display.sh). Ingen sikkerhedskopiering er i gang. Forstyr IKKE # status -LCD'et. Vis kun fremskridt, hvis der er en løbende backup => Ingen startfil OG Ingen finfil = afslut, hvis [! -f $ BFILE] && [! -f $ FFILE]; afslut derefter 1 fi # Hvis sikkerhedskopien er færdig, vil dette script vise det og fjerne låsene # for ikke at kunne køre igen før den næste initiering. hvis [-f $ FFILE]; derefter grønt $ LCD "Backup" "** Afsluttet **" echo "Backup fuldført" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Sikkerhedskopiering afsluttet, hvis [$ SHUTDOWN == "1"]; ekko derefter "Executing shutdown script …" /home/orange/shutdown.sh & fi exit 0 fi # Fra dette tidspunkt udfører scriptet KUN hvis der er en KØRENDE backup # derfor udskrives alle fejl på LCD'et og forårsager scriptet # for at afbryde, men den fjerner ikke backup.lck -filen, så den vil gå ind her # igen og igen og undgå betingelserne. er_mount $ BACKUP_DRIVE hvis [$ status -ne 0]; derefter er rød $ LCD "ERR: Backup -drev" "ikke monteret!" ekko "Backup -drev er ikke monteret" afslut 1 fi, hvis [! -s $ TFILE]; derefter rød $ LCD "ERR: transfile" "er tom" echo "Transportstørrelsesberegningsfil er tom." exit 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') hvis [-z $ BACKUP_OVERALL]; derefter rød $ LCD "ERR: Size readback" "fra serveren ugyldig" echo "Backup total størrelse tilbagelæsning er ugyldig 1" exit 1 fi if!

Selvom koden er enkel, er der en beskrivelse af, hvad den gør:

1, Hvis BFILE eller FFILE ikke eksisterer (hvilket er tilstanden efter en klar opstart), der angiver, at der ikke er nogen backup -proces, så lad være med at gøre noget, bare afslut. På denne måde kan du kortlægge de gode oplysninger, du ønsker om opstart som værtsnavn, ip, oppetid osv., Og det bliver ikke rodet.

2, lad os springe til sektionen is_mount $ BACKUP_DRIVE. Bare en påmindelse den eneste måde, vi kom her på, er, at en sikkerhedskopi blev startet, så BFILEN eksisterer. Nu kører koden bare forskellige fejlkontroller, som er backup -drevet monteret ?, overstiger den samlede størrelse af det, vi skal sikkerhedskopiere, drevet? eller andre fejl. Husk, at dette kun er et DISPLAY -program, selvom størrelsen ville overstige sikkerhedskopierne, vil det ikke afbryde noget.

3, OK alle fejlkontroller ryddet tid til at beregne procentgrafen. Først tager scriptet et "snapshot" af den plads, der bruges i bytes på backup -filsystemet lige nu og gemmer det i VFILE. Hvad er formålet med dette: Et bash -script er statsløst, det mister data mellem henrettelser, så hvis du vil "huske" nogle data fra den tidligere udførelse, skal du gemme det et sted. I vores tilfælde er dette kun en simpel tekstfil. For at gøre det enkelt, lad os sige, at vores START_POS er 1 GB (data vi har), hvad vi vil sikkerhedskopiere er +2 GB, og den samlede drevkapacitet er 10 GB.

4, Næste gang når scriptet kører, eksisterer VFILE, og dette vil blive læst tilbage (så vi ved, hvad der var startpositionen, hvis drevet ikke var tomt) for at beregne BACKUP_CURRENT, som i det væsentlige er et delta i det anvendte rum lige nu på backup -drevet minus startpositionen, hvad vi har gemt i VFILE i sidste runde (igen er dette de data, vi havde på drevet, da backup startede). Scriptet fungerer internt med bytes, men for at gøre det enkelt efter en halv time sikkerhedskopierede vi 500MB data, så ville formlen være BACKUP_CURRENT = 1.5GB - 1GB (initial state) => som giver os nøjagtig de reelle data tilbage 500 MB, det vil sige hvad vi hidtil har bakket op om. Du kan se, at uden at holde styr på, hvad de originale data var i begyndelsen af sikkerhedskopien, ville denne størrelsesberegning mislykkes, fordi den ville se, at den anvendte plads lige nu er 1,5 GB uden at vide, at 1 gig data var der på disken hele tiden kommer fra en tidligere backup, så det ville antage, at serveren har sendt os 1,5 GB data i stedet for 500 MB.

5, BACKUP_OVERALL vil blive læst ind, disse data blev beregnet af serveren, da den gjorde den første tørre rsync (så dette er en ekstern datakilde, der indeholder mængden af bytes, hvad der vil blive sikkerhedskopieret fra Server-> OrangeBOX). Denne værdi kontrolleres i øjeblikket med den samlede GRATIS plads på disken, og hvis den overskrider den, vises der en fejlmeddelelse på lcd'en, og scriptet stopper udførelsen. Husk igen, at alt dette script gør KUN er vist, det forstyrrer ikke backupprocessen. Hvis du rydder op på filer på disken, eller mængden af filer ændres eksternt, og derfor ændres BACKUP_OVERALL på et tidspunkt, vil det fortsætte.

6, Endelig er vi færdige med kontrol på andet niveau, det er tid til at vise noget. Scriptet viser både dataene på konsollen og på lcd'en ved hjælp af en simpel C -app. Baggrunden skiftes til BLÅ, hvilket angiver, at backupen endelig begyndte, og fremdriften beregnes med følgende formel PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Dette er en grundlæggende procentberegning, vi tager det aktuelle beløb, i vores eksempel 0,5GB*100/2GB = 25%.

7, Tallene konverteres også fra byte til Mega/Giga bytes, og skærmen vises automatisk i MB, hvis den er lavere end 1 GB.

8, En ting tilbage for at kortlægge dette i vores tilfælde er 25% på en 20 kolonne LCD. Det ville være 25 * 20/100 = 5 i vores eksempel. I øjeblikket er opdateringen med LCD -programmet implementeret, at hver gang du kalder programmet, vil det tegne hele skærmen igen. Så i dette tilfælde ville det køre en for loop 5 gange for at tegne 5 hashmarks # på skærmen, dette ville vise sig som grimt flimrende i hver runde, så i stedet skrev jeg de beregnede statuslinjedata til LFILE1 og 2, som i dette tilfælde efter de 5 runder ville indeholde ##### og dette læses tilbage og vises på LCD'et. Du kan også sætte LFILE1 og 2 på ramdisk for at gemme sdcardet fra ekstra skriveoperationer, det forårsagede ingen problemer for mig, scriptet kører en gang i hvert minut fra cron.

9, Når sikkerhedskopien er færdig, vil det andet script fra serveren, der kører rsync, berøre FFILE (Afslut fil). Ved den næste sløjfe vil backup_progress.sh derefter vise, at backupen er fuldført og eventuelt kalder et andet script for at lukke OrangeBOX. Det sletter sine låsefiler på dette tidspunkt, hvilket gør yderligere henrettelser umulige, så selvom du ikke aktiverer nedlukning det næste minut, når dette script kører, stopper det med det samme, fordi BFILEN ikke er der, og FFILE ikke er der. Derfor vil den vise den afsluttede backup -meddelelse på ubestemt tid, medmindre sikkerhedskopien genstartes igen.

Remote backup script (orange-remote.sh):

Du bliver nødt til at generere en ssh -nøgle til sikkerhedskopien og en nøgle til luksus -kryptering til drevet. Når du kører den eksterne sikkerhedskopi manuelt for første gang, gemmer den den orange bokses værtens fingeraftryk i værtsfilen (fra dette tidspunkt kan den køre automatisk med cron).

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

For at finde ud af din harddisk -id, kør uuid, blkid eller bare slå de tilsvarende/dev/disk/mapper op.

Et bibliotek inkluderer ekskludere kan konfigureres, hvis du ikke vil sikkerhedskopiere alt. Dette er en ret irriterende proces, for for rsync, hvis du vil ekskludere en enkelt undermappe dybt i strukturen, skal du gøre:

+ /a

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

Da dette script eksternt udfører kommandoer på OrangeBOX, har det ikke tilsyn med returvariablerne fra den side, derfor bruger jeg nogle smarte tricks, som f.eks. At sende meddelelsen om åbning af fjerndrevet til /tmp/contmsg.txt, derefter analysere det for at se, om det var vellykket, hvis ikke så ændrer det rsync-binæret til ikke-eksekverbart, så rsync ikke vil forsøge at uploade data til OrangePIs rootfs, der fylder SD-kortet. Også en god praksis at indstille den uforanderlige bit på chattr +i /mnt /backup for at gøre dette umuligt.

Forudberegningen af størrelsen finder sted lokalt på serveren, derfor skal denne fil sendes til OrangeBOX i næste trin.

Hovedbackupen startes som en loop for ((i = 0; i <100; i ++)); gør fordi i tilfælde af lav kvalitet DSL/kabel internetforbindelser kan rsync ofte bryde, timeout. Hvis det gennemføres med succes, vil løkken bryde uden at prøve flere iterationer. Dette fungerer fejlfrit med gode operativsystemer, men hvis fjernboksen af en eller anden grund ville være windows, og der ville blive nægtet adgang som regelmæssigt på NTUSER. DAT, ville rsync returnere en fejlkode, og denne loop ville køre 100 gange og derefter stadig mislykkes.

Trin 5: Lukning og opgaveliste

Lukning og opgaveliste
Lukning og opgaveliste
Lukning og opgaveliste
Lukning og opgaveliste

Min instruerbare demonstrerer endnu en gang, hvordan kan du oprette noget bedre, mere tilpasselig enhed fra en computer på 10 $ på egen hånd, som slår helvede ud af Buffalo med dens proprietære låste NAS -enheder, underlig intern partitionering, busybox lammet linux med segfaulting -værktøjer, administreret ved deres windows -software, lukket firmware, dårlig dokumentation og support, og uanset hvor mange penge du vil bruge, får du aldrig en statusindikator, der viser din backup for ikke at nævne, hvor cool OrangeBox ser ud (jeg bruger endda orange CAT5 -kabel med det: D).

Med minicomputere, der bliver mere og mere kraftfulde, samtidig med at den samme prislinje <100 $ opretholdes, kan vi bruge dem til flere og flere opgaver. Da Gbe Ethernet-porte er ret almindelige i disse dage om 1-2 år, vil hukommelsen på disse kort øges dramatisk, og de kan også bruges til ZFS-baserede backupsystemer.

-Fin kornfremgangsindikator ved C -programmet (se WasserStation et af mit andet projekt). Lige nu kun # hashmark # tegn brugt i tegntilstand med lcdPuts (lcd, linje1), dette kan forbedres, selv når du bruger tegn -LCD'er til at opdele 1 kolonne til 5 dele, og hoved -C -programmet kan bare tage et heltal som 25 og trække ud statuslinjen korrekt eller yderligere forbedret ved hjælp af en grafisk LCD

-Mulighed for at have en aftagelig hdd til at oprette nye og nye sikkerhedskopier og flytte dem til forskellige placeringer (hvis boksen opdager et tomt drev, skal den automatisk formatere den med krypteringsnøglen, når den er modtaget).

-Hvis du vil udskrive din egen sag med makerbot, kan OrangeNAS være interessant for dig:

Anbefalede: