Inhoudsopgave:
- Stap 1: Hardware-onderdelen
- Stap 2: Hardware-ontwerp
- Stap 3: Besturingssysteem
- Stap 4: Software-ontwerp
- Stap 5: Afsluiten en takenlijst
Video: OrangeBOX: op OrangePI gebaseerd veilig back-upopslagapparaat - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
De OrangeBOX is een alles-in-één back-upbox voor externe opslag voor alle servers.
Je server kan worden geïnfecteerd, beschadigd, gewist en al je gegevens zijn nog steeds veilig op de OrangeBOX en wie wil er nu niet een mission impossible zoals een back-upapparaat waar je gewoon in stopt en een voortgangsindicator ziet zonder iets meer te doen (hoop maar dat de magie er komt uiteindelijk geen rook uit:)).
De OrangeBOX is mijn eerste project dat voornamelijk een software-, geen hardware-hack is. Het is eigenlijk een op maat gemaakte NAS met een aangesloten LCD-scherm.
Stap 1: Hardware-onderdelen
De Orange PI zero is een open-source computer met één bord. Het kan Android 4.4, Ubuntu, Debian draaien. Het maakt gebruik van de AllWinner H2 SoC en heeft 256 MB/512 MB DDR3 SDRAM (256 MB-versie is de standaardversie. Orange Pi Zero is voor iedereen die wil beginnen met creëren met technologie – niet alleen om het te consumeren. Het is een eenvoudig, leuk en handig hulpmiddel dat u kunt gebruiken om controle te krijgen over de wereld om je heen (https://www.orangepi.org/orangepizero/). Dus het is precies voor ons, laten we doorgaan:)
- Metalen/kunststof/houten kist (ik heb een oude Yamaha externe cd-rw-doos gebruikt)
- Oranje PI Nul of beter (GPIO-pinout kan veranderen als u een ander model gebruikt)
- 2x20 RGB LCD-schermen
- Elke SFF 3.5/LFF 2.55 usb-drive
- SATA -> usb-adapter. Houd er rekening mee dat de OrangePI weliswaar geen bovengrens oplegt aan de maximale schijfcapaciteit, maar dat veel USB-naar-SATA-bruggen dat wel doen (2TB max). De oranje PI Zero die ik gebruik heeft slechts één USB 2.0-poort met een effectieve overdrachtssnelheid van maximaal 28 MB/s. Ik heb gekozen voor een USB3.0 (voorbereid voor toekomstige upgrades) -> SATA-brug (merk wordt niet genoemd) en deze overschrijdt de limiet, dus het is beter om een brug te kiezen waarvan bewezen is dat deze grotere schijven ondersteunt, zoals JMicron JMS567-chipgebaseerde bruggen. Doe je eigen onderzoek voordat je er een koopt. Ik kan leven met de snelheids- en harde schijflimiet door een 2TB sata-schijf in dit project te gebruiken (als je grotere schijven plaatst, wordt deze herkend, maar het besturingssysteem ziet alleen de eerste 2TB ervan, dus de rest van de capaciteit zal zijn verloren).
- 12V 2,5 A of hoger versterkeradapter. Bereken ongeveer 500 mA normaal gebruik voor de OPI Zero en 1,5 A piek voor een standaard LFF SATA-schijf. Overmaat kan nooit kwaad. In mijn setup is de Yamaha psu (die op beide 12+5V rails meer dan genoeg stroom had kunnen leveren) helaas ontploft:(vanwege het even sorteren van de hoofdschakelaar op GND dus moest ik er een gewone adapter in lijmen, op het maakte de doos in ieder geval een paar gram lichter.
- Buck-converter DC-DC 12V->5V. Ik heb dezelfde verstelbare minibok gebruikt als bij IronForge, werkt perfect.
Optioneel
Als je bereid bent om + 10 $ uit te geven, kun je de Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) krijgen met een vergelijkbare vormfactor en krijg je Gbe en SATA3. Hiervoor kan de Libra PI-bedradingsbibliotheek worden gebruikt: https://github.com/OrangePiLibra/WiringPi maar aangezien de GPIO-pinout anders is, valt dit buiten het bestek van dit schrijven.
Je kunt deze build ook doen met de nieuwe Orange PI Plus2 die een SATA-connector heeft en je kunt het gebruik van sata->usb-converters met hun beperkingen overslaan. Als je van plan bent om FreeBSD of andere BSD's te gebruiken, is de Orange PI-serie misschien niet de beste keuze omdat hun hardware-ondersteuning beperkt is (je moet bijvoorbeeld een USB-stick gebruiken om op te starten). Voor BSD's is het het beste advies om Raspberry PI te gebruiken. Zowel de C-code voor het LCD-scherm als alle shell-scripts zijn overdraagbaar naar elk ander UNIX-systeem.
Stap 2: Hardware-ontwerp
De Yamaha-doos was net genoeg om dit alles op te slaan, het zou niet genoeg ruimte hebben voor een Orange PI-pc of een gewoon Raspi-vormfactorbord.
Het Ethernet werd naar buiten gebracht met een extender aan de achterkant van de doos. Onthoud dat de Orange PI zero alleen een 100mbit/s Ethernet-interface heeft als je sneller wilt, moet je een ander bord gebruiken, zoals Asus Tinkerboard/RPI3B+/Other Orange PI-modellen.
Verkeerde PIN Out is de enige echte fout die u in dit project kunt maken, daarom is het de moeite waard om enkele vuistregels toe te passen:
1, probeer altijd dezelfde gekleurde kabel van EINDE naar EINDE te gebruiken. Ik bega zelf dezelfde "fout" in sommige projecten waar ik dat niet doe, simpelweg omdat ik niet lang genoeg mannelijke-mannelijke/mannelijke-vrouwelijke/vrouwelijke-vrouwelijke kabels bij de hand heb en ik patch 2 samen om verder te gaan het circuit. Als u uw werk niet goed documenteert, kan dit jaren later tot hoofdpijn leiden waarbij u een reparatie, upgrade, moet uitvoeren.
2, Breng wat hotglue aan op de connectoren. In het geval van het gebruik van deze arduino-starterkit-stijl mm/mf/ff-kabels die niet van topkwaliteit zijn, is het vrij gebruikelijk (vooral als u het apparaat verplaatst/transporteert) dat de connectoren wegglippen. Als je weet dat het een apparaat voor langdurig gebruik zal zijn (mogelijk te gebruiken totdat het kapot gaat?!) Dit kan indien nodig later gemakkelijk worden gesmolten/gekrast.
3, De OrangePI nul bedrading Het slechte nieuws is dat de Orange PI pinout NIET hetzelfde is als de Raspberry PI 0/1/2/3 en er is zelfs verschil tussen andere Orange PI modellen. De beste manier om te gaan is om de bedradingsbibliotheek te krijgen (Oranje PI Zero-versie). De afbeelding is misschien een beetje verwarrend, maar dit waren de beste die ik kon vinden. De ene is een 180 graden spiegel van de andere. Hoewel het niet-grafische beeld van CLI misschien moeilijker te begrijpen is, is het het meest rechttoe rechtaan.
U kunt altijd het 2 uiteinde van de sockets verschillen door het ene uiteinde te beschouwen als het POSITIEVE uiteinde met de (+3.3/+5V) en het andere als het NEGATIEVE uiteinde (één GND) -> dit is het uiteinde van de connector dat naar de ETHERNET-poort is gericht.
Van de Wiring PI Zero-tabel heb je maar één kolom nodig, de wPI vergeet de andere alsof ze er niet zouden zijn.
Dus om bijvoorbeeld de LCD_E 15 (dat is wPI 15!) en LCD_RS 16 (dat is wPI 16!) aan te sluiten, tel je de pinnen vanaf het POSITIEVE uiteinde van de connector (gemakkelijk te doen met een pen of kleine schroevendraaier). Dat zal fysiek 4 pins en 5 pins naar beneden gaan.
4, Groeperen. Als er een mogelijkheid is om gebruikte pinnen naast elkaar te plaatsen (groeperen), kies dan altijd dat, het zorgt ervoor dat ze elkaar vast kunnen houden, zelfs zonder hotglue en ook in andere projecten als je 2x 4x 6x molex connectoren hebt, kun je profiteer gewoon van de pinnen naast elkaar. Hier kunt u het beste een groep van 2-3 doen (ideaal bij het gebruik van geborgen startkabels van oude pc's).
Pinnen gebruikt voor OrangePI LCD-schermverbinding:
// GEBRUIK WIRINGPI PIN-NUMMERS
#define LCD_E 15 //Pin inschakelen #define LCD_RS 16 //Selecteer pin registreren #define LCD_D4 5 //Data pin 4 #define LCD_D5 6 //Data pin 5 #define LCD_D6 10 //Data pin 6 #define LCD_D7 11 // Gegevenspin 7
Pinnen gebruikt voor RGB-achtergrondverlichting
$G schrijf 1 0
$G schrijf 4 1 $G schrijf 7 1
Oranje PI nul wPI-pinnen 1, 4, 7. De enige magie die dit LCD-scherm kan doen in vergelijking met het standaard fix-blauwe of fix-groene achtergrondverlichting-LCD waar je een enkele kathode hebt die naar GND moet worden getrokken dat het 3 heeft voor de 3 kleuren. Rood, groen en blauw. Door de combinatie te wijzigen waarvan er een is ingeschakeld, kunt u verschillende kleuren uit deze basiskleuren mengen, maar alleen de hoge kleuren geen tinten omdat u de helderheid van een kleur niet kunt regelen (deze is aan of uit).
Additieve kleurmenging: rood toevoegen aan groen levert geel op; het toevoegen van rood aan blauw levert magenta op; groen toevoegen aan blauw levert cyaan op; als je alle drie de primaire kleuren bij elkaar optelt, krijg je wit.
Stap 3: Besturingssysteem
De OrangeBOX start op en Armbian linux (gebaseerd op Debian Stretch) 4.14.18-sunxi-kernel met een veilige firewall-omgeving, maakt verbinding met een VPN en wacht op externe back-upopdrachten van de server.
Ontwerpprincipes:
-Volledige op luks gebaseerde schijfversleuteling (het apparaat zelf bevat niet de sleutel voor het openen van de back-upschijf. Het wordt tijdelijk gekopieerd van de externe server naar de ram /dev/shm, de schijf wordt geopend en de sleutel wordt gewist. Nadat de back-up is voltooid de schijf wordt gesloten en de OrangeBox wordt automatisch uitgeschakeld in 1 minuut.)
-Alle commando's en sleutels worden verzonden vanaf de externe server (het apparaat zelf bevat alleen een vpn-certificaat) het heeft GEEN ENKELE toegang tot de externe server, zelfs ssh vanaf dit apparaat is door een firewall uitgeschakeld
-De lokale bestandssystemen zijn niet-gecodeerd om te kunnen opstarten, maar bevatten niets nuttigs en aangezien de VPN-uplink aan de andere kant zeer beperkt is, zelfs met het volledige verlies van het apparaat, kan een aanvaller niets doen
Download de Armbian Stretch van
Zet het systeem aan de gang:
apt-get update && apt-get upgrade
apt-get install sysvinit-core sysvinit-utils
Bewerk /etc/inittab, alle consoles kunnen worden uitgeschakeld omdat de box als headless zal worden gebruikt. Geef commentaar op de volgende sectie:
#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 je box opnieuw op en verwijder systemd om een echt open source bloatware-vrij systeem te hebben.
apt-get remove --purge --auto-remove systemd
Installeer enkele pakketten
apt-get install cryptsetup vim htop rsync screen gcc make git
Installeer de bedradingpi-bibliotheek
cd /usr/src
git clone https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build
Maak oranje gebruiker voor het lcd-scherm
groupadd -g 1000 oranje
useradd -m -d /home/oranje -s /bin/bash -u 1000 -g oranje oranje
De waakhond die niet over je waakt
apt-get install watchdog
Kijkend naar /etc/default/watchdog # Watchdog starten tijdens het opstarten? 0 of 1 run_watchdog=1 # wd_keepalive starten na het stoppen van watchdog? 0 of 1 run_wd_keepalive=1 # Laad module voor het starten van watchdog watchdog_module="none" # Specificeer hier extra watchdog opties (zie manpage).
Kijkend naar /etc/watchdog.conf
# Schakel deze in ieder geval in
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
/etc/init.d/watchdog start
Er moet ten minste 1 kernelthread en 1 proces zijn:
wortel 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/watchdog
Testen:
Zorg ervoor dat u alles stopt en een synchronisatie && synchronisatie && synchronisatie uitvoert om de rest van de gegevens naar de schijf te schrijven. Dan als root-issue:
echo 1 > /dev/watchdog
Na enkele seconden zou de machine opnieuw moeten opstarten.
Zoals de handleiding aangeeft:
o Is de procestabel vol?
o Is er voldoende vrij geheugen? o Is er voldoende toewijsbaar geheugen? o Zijn sommige bestanden toegankelijk? o Zijn sommige bestanden binnen een bepaald interval gewijzigd? o Is de gemiddelde werkdruk te hoog? o Is er een bestandstabeloverloop opgetreden? o Loopt er nog een proces? Het proces wordt gespecificeerd door een pid-bestand. o Reageren sommige IP-adressen op ping? o Ontvangen netwerkinterfaces verkeer? o Is de temperatuur te hoog? (Temperatuurgegevens niet altijd beschikbaar.) o Voer een door de gebruiker gedefinieerd commando uit om willekeurige tests uit te voeren. o Voer een of meer test-/reparatiecommando's uit die te vinden zijn in /etc/watchdog.d. Deze commando's worden aangeroepen met het argument test of repair. Als een van deze controles mislukt, zal watchdog een shutdown veroorzaken. Als een van deze tests, behalve het door de gebruiker gedefinieerde binaire bestand, langer dan een minuut duurt, wordt de machine ook opnieuw opgestart.
Deze waakhond werkte misschien goed op de reguliere x86-architecturen, maar op ARM-gebaseerde boards zoals Raspberry PI's, Orange PI's faalde het me talloze keren. Het systeem kan in hangende toestanden gaan waar zelfs de waakhond hangt. Laten we het toch gewoon configureren, misschien wordt het in de loop der jaren verbeterd met een apt-get-upgrade:(
Stap 4: Software-ontwerp
Het back-upproces zelf is gebaseerd op rsync (beste back-uptool ooit uitgevonden) gegevens worden gepusht vanuit de SERVER->OrangeBOX.
Het extraheren van de gegevens uit rsync was het enige uitdagende onderdeel van het project waarbij een voortgangsbalk over de back-up op het LCD-scherm werd afgedrukt.
Er waren 3 mogelijke manieren om de voortgang van de back-up te berekenen:
1, met behulp van formules zoals https://wintelguy.com/transfertimecalc.pl om te bepalen hoe lang de overdracht ongeveer kan duren
Transfertijd (d:u:m:s): 0:02:44:00
Ter vergelijking: geschatte tijd om 123 GB-bestand over verschillende netwerkverbindingen over te dragen (d:h:m:s): T1/DS1-lijn (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
Als de rsync klaar is, signaleert het het script om de berekening te stoppen. Deze methode is slechts een benadering en niet betrouwbaar, ook de verbindingssnelheid is niet vast, het kan vertragen, opnieuw versnellen. Dit is slechts een theoretische berekening.
2, Groottecontroles uitvoeren op de map om te bepalen hoeveel gegevens we al hebben gesynchroniseerd. Kan erg traag worden met honderden GB's kleine bestanden (hoewel du -s in Linux wat caching doet als je het opnieuw uitvoert)
Host A -> Servergegevens waarvan een back-up moet worden gemaakt Gegevensdirectory: 235GB
Host B -> Orange box-clientgegevens die we nu hebben Data dir: 112GB
De delta is 123 GB.
3, als het bestandssysteem is toegewezen zoals in ons geval /dev/mapper/backup is, kunnen we profiteren van de algemene gebruiksindicator van het bestandssysteem om te bepalen hoe onze back-up vordert en dit is echt verdomd snel. In dit geval hoeven we de rsync stdout niet eens ergens te pipen, voer gewoon een droge rsync uit, wacht tot deze is voltooid, bereken de delta in bytes en controleer dit met de vrije ruimte die we op de back-upschijf hebben en voila we kunnen maak nu een mooi staafdiagram. Dit was de methode die ik koos en hier is mijn script ervoor:
#!/bin/bash
# Back-upvoortgangscalculator voor OrangeBOX door NLD # Versie: 0.2 (2018/03/05) # # Voer het uit als niet-bevoorrechte gebruiker vanuit cron # * * * * * /home/orange/backup_progress.sh &> /dev/null # # Dit script is alleen verantwoordelijk voor het weergeven van gegevens op het LCD-scherm, het communiceert # indirect met het hoofdprogramma via positie- en vergrendelingsbestanden. BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # schijfgebruik aan het begin van de back-up TFILE="$HOME/trans.size" # totale vooraf berekende overdrachtsgrootte BFILE="$HOME/ backup.lck" # bepaalt de startstatus FFILE="$HOME/backup.fin" # bepaalt de voltooide status LFILE1="$HOME/lcd1.bar" # LCD-voortgangsindicatorgegevens LFILE2="$HOME/lcd2.bar" # LCD-voortgang indicator data SHUTDOWN="1" # Indien 1 zal het een ander script starten dat de box afsluit aan het einde van de back-up BACKUP_CURRENT="0" # Moet worden geïnitialiseerd maar zal worden berekend # Schijfgrootte in bytes (secundaire check) LCD="sudo /bin/lcd" functie is_mount() { grep -q "$1" /proc/mounts status=$? } function red() { sudo /bin/lcdcolor red } function green() { sudo /bin/lcdcolor green } function blue() { sudo /bin/lcdcolor blue } # Clear state (ingesteld bij opstarten door bootup_display.sh). Er wordt geen back-up gemaakt, verpest het # status-LCD NIET. Alleen voortgang weergeven als er een back-up is => Geen startbestand EN Geen fin-bestand = stop als [! -f $BFILE] && [! -f $FFILE]; dan exit 1 fi # Als de back-up klaar is, zal dit script dat weergeven en de vergrendelingen verwijderen # om niet opnieuw te kunnen starten tot de volgende initiatie. als [-f $FFILE]; dan groen $LCD " Back-up " "** Voltooid **" echo "Back-up voltooid" rm -rf $BFILE $TFILE $FFILE $LFILE1 $LFILE2 $VFILE # Back-up is klaar met opschonen als [$SHUTDOWN == "1"]; dan echo "Executing shutdown script…" /home/orange/shutdown.sh & fi exit 0 fi # Vanaf dit punt wordt het script ALLEEN uitgevoerd als er een LOPENDE back-up is # daarom worden alle fouten afgedrukt op het LCD-scherm en veroorzaken ze het script # om af te breken, maar het zal het bestand backup.lck niet verwijderen, dus zal het hier # keer op keer ingaan en de voorwaarden evalueren. is_mount $BACKUP_DRIVE als [$status -ne 0]; dan rood $LCD "ERR: Backup drive" "is niet gemount!" echo "Back-upschijf is niet aangekoppeld" exit 1 fi if [! -s $TFILE]; dan rood $LCD "ERR: transfile" "is leeg" echo "Berekeningsbestand transportgrootte is leeg." exit 1 fi BACKUP_OVERALL=$(head -1 $TFILE |tr -d '\n') if [-z $BACKUP_OVERALL]; dan rood $LCD "ERR: Grootte teruglezen" "van server ongeldig" echo "Algemene back-upgrootte teruglezen is ongeldig 1" exit 1 fi if !
Hoewel de code eenvoudig is, volgt hier een beschrijving van wat het doet:
1, Als de BFILE of FFILE niet bestaat (wat de status is na een duidelijke opstart), geeft dit aan dat er geen back-upproces is, dus doe niets en sluit gewoon af. Op deze manier kun je een grafiek maken van alle leuke informatie die je wilt over het opstarten, zoals de hostnaam, ip, uptime enz. en het zal niet in de war raken.
2, laten we naar de sectie is_mount $BACKUP_DRIVE gaan. Gewoon een herinnering, de enige manier waarop we hier zijn gekomen, is dat er een back-up is gestart, zodat de BFILE bestaat. Nu voert de code gewoon verschillende foutcontroles uit, zoals is de back-upschijf gemonteerd? Is de totale grootte van wat we gaan back-uppen groter dan de schijf? of andere fouten. Onthoud dat dit een DISPLAY-programma is, zelfs als de grootte de back-ups zou overschrijden, zal het niets afbreken.
3, OK alle foutcontroles gewist tijd om de percentagegrafiek te berekenen. Eerst maakt het script een "momentopname" van de ruimte die momenteel in bytes wordt gebruikt op het back-upbestandssysteem en slaat het op in VFILE. Wat is het doel hiervan: een bash-script is staatloos, het verliest gegevens tussen uitvoeringen, dus als je wat gegevens van de vorige uitvoering wilt "onthouden", moet je het ergens opslaan. In ons geval is dit slechts een eenvoudig tekstbestand. Om het eenvoudig te maken, laten we zeggen dat onze START_POS 1 GB is (gegevens die we hebben), waarvan we een back-up willen maken is +2 GB en de totale schijfcapaciteit is 10 GB.
4, de volgende keer dat het script de VFILE uitvoert, bestaat en dit wordt teruggelezen (zodat we weten wat de startpositie was voor het geval de schijf niet leeg was) om de BACKUP_CURRENT te berekenen, wat in wezen een delta is van de ruimte die nu wordt gebruikt op de back-upschijf minus de startpositie wat we in de laatste ronde in de VFILE hebben opgeslagen (nogmaals dit zijn de gegevens die we op de schijf hadden toen de back-up begon). Het script werkt intern met bytes, maar om het eenvoudig te maken, hebben we na een half uur een back-up gemaakt van 500 MB gegevens, dan zou de formule BACKUP_CURRENT=1,5 GB - 1 GB (initiële status) => zijn, wat ons precies de echte gegevens 500 MB teruggeeft, dat wil zeggen waar we tot nu toe een back-up van hebben gemaakt. U kunt zien dat zonder bij te houden wat de oorspronkelijke gegevens waren aan het begin van de back-up, deze berekening van de grootte zou mislukken omdat het zou zien dat de momenteel gebruikte ruimte 1,5 GB is zonder te weten dat er al die tijd 1 gig-gegevens op de schijf stonden afkomstig van een eerdere back-up, dus we gaan ervan uit dat de server ons 1,5 GB gegevens heeft gestuurd in plaats van 500 MB.
5, BACKUP_OVERALL zal worden ingelezen, deze gegevens werden berekend door de server toen deze de eerste droge rsync deed (dit is dus een externe gegevensbron die het aantal bytes bevat waarvan een back-up wordt gemaakt van Server->OrangeBOX). Deze waarde wordt op dit moment vergeleken met de totale VRIJE ruimte op de schijf en als deze deze waarde overschrijdt, wordt een foutmelding weergegeven op het lcd-scherm en stopt het script met de uitvoering. Onthoud nogmaals dat dit script ALLEEN wordt weergegeven, het interfereert niet met het back-upproces. Als u bestanden op de schijf opruimt of het aantal bestanden op afstand verandert en daarom de BACKUP_OVERALL op een bepaald moment verandert, zal het doorgaan.
6, Eindelijk zijn we klaar met de controles op het tweede niveau, het is tijd om iets weer te geven. Het script geeft de gegevens zowel op de console als op het lcd weer met behulp van een eenvoudige C-app. De achtergrond wordt naar BLAUW geschakeld om aan te geven dat de back-up eindelijk is begonnen en dat de voortgang is berekend met de volgende formule PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL)). Dit is een basispercentageberekening, we nemen het huidige bedrag, in ons voorbeeld 0,5 GB*100/2 GB = 25%.
7, De nummers worden ook geconverteerd van byte naar Mega/Giga-bytes en het scherm wordt automatisch weergegeven in MB als het lager is dan 1 GB.
8, Een ding om dit in ons geval in kaart te brengen, is de 25% op een LCD-scherm met 20 kolommen. Dat zou in ons voorbeeld 25 * 20 / 100 = 5 zijn. Momenteel is de verversing met het LCD-programma geïmplementeerd dat elke keer dat u het programma aanroept, het hele scherm opnieuw wordt getekend. Dus in dit geval zou het 5 keer een for-lus uitvoeren om 5 hashmarks # op het scherm te tekenen. Dit zou verschijnen als lelijk flikkeren in elke ronde, dus in plaats daarvan schrijf ik de berekende voortgangsbalkgegevens naar LFILE1 en 2, wat in dit geval na de 5 ronden zouden ##### bevatten en dit wordt teruggelezen en weergegeven op het LCD-scherm. Je zou LFILE1 en 2 ook op ramdisk kunnen zetten om de sdcard te redden van extra schrijfoperaties, het veroorzaakte geen problemen voor mij, het script wordt elke minuut uitgevoerd vanuit cron.
9, Wanneer de back-up klaar is, raakt het andere script van de server waarop rsync draait de FFILE (Finish File) aan. Bij de volgende lus zal backup_progress.sh dan laten zien dat de back-up is voltooid en optioneel een ander script aanroepen om de OrangeBOX af te sluiten. Het verwijdert zijn vergrendelingsbestanden op dit punt, waardoor verdere uitvoeringen onmogelijk worden, dus zelfs als je de volgende minuut afsluiten niet inschakelt wanneer dit script wordt uitgevoerd, zal het meteen stoppen omdat de BFILE er niet is en de FFILE er niet is. Daarom wordt het bericht back-up voltooid voor onbepaalde tijd weergegeven, tenzij de back-up opnieuw wordt gestart.
Remote back-upscript (orange-remote.sh):
U moet een ssh-sleutel genereren voor de back-up en een sleutel voor de luks-encryptie voor de schijf. Wanneer u de externe back-up voor de eerste keer handmatig uitvoert, wordt de hostvingerafdruk van de oranje vakken opgeslagen in het hosts-bestand (vanaf dit punt kan het automatisch worden uitgevoerd door cron).
DISK="/dev/disk/by-id/…"
Voer uuid, blkid uit of zoek gewoon de corresponderende /dev/disk/-directory's op om de identificatie van uw harde schijf te achterhalen.
Een directory include include kan worden ingesteld als u niet van alles een back-up wilt maken. Dit is een behoorlijk vervelend proces, want voor rsync als je een enkele submap diep in de structuur wilt uitsluiten, moet je het volgende doen:
+ /a
+ /a/b + /a/b/c + /a/b/c/d - /a/b/c/d/e + /dir2
Aangezien dit script op afstand opdrachten uitvoert op de OrangeBOX, heeft het geen toezicht op de retourvariabelen van die kant, daarom gebruik ik een aantal slimme trucs, zoals het bericht van het openen van de externe schijf naar /tmp/contmsg.txt en vervolgens ontleden het om te zien of het succesvol was, zo niet, dan verandert het de rsync binary in niet-uitvoerbaar, zodat de rsync niet zal proberen om gegevens te uploaden naar de OrangePIs rootfs die de SD-kaart vullen. Het is ook een goede gewoonte om het onveranderlijke bit op chattr +i /mnt/backup in te stellen om dit onmogelijk te maken.
De voorberekening van de grootte vindt lokaal op de server plaats, daarom moet dit bestand in de volgende stap naar de OrangeBOX worden verzonden.
De hoofdback-up wordt gestart als een lus voor ((i=0;i<100;i++)); doen omdat in het geval van DSL/kabel internetverbindingen van lage kwaliteit rsync vaak kan breken, time-out. Als het succesvol is voltooid, wordt de lus verbroken zonder meer herhalingen te proberen. Dit werkt feilloos met goede besturingssystemen, maar als om de een of andere reden de remote box windows zou zijn en de toegang geweigerd zou worden zoals regelmatig op NTUSER. DAT, dan zou rsync een foutcode retourneren en deze lus zou 100 keer worden uitgevoerd en dan nog steeds mislukken.
Stap 5: Afsluiten en takenlijst
Mijn instructable laat nogmaals zien hoe je zelf iets beters, meer aanpasbaar apparaat kunt maken van een 10 $ computer die Buffalo verslaat met zijn eigen vergrendelde NAS-apparaten, rare interne partitionering, drukke linux met segfaulting-tools, beheerd door hun Windows-software, gesloten firmware, slechte documentatie en ondersteuning en hoeveel geld je ook uitgeeft, je zult nooit een voortgangsindicator krijgen die je back-up laat zien om nog maar te zwijgen van hoe cool de OrangeBox eruit ziet (ik gebruik er zelfs een oranje CAT5-kabel mee:D).
Nu minicomputers steeds krachtiger worden terwijl we dezelfde prijs van < 100 $ behouden, kunnen we ze voor steeds meer taken gebruiken. Aangezien Gbe Ethernet-poorten tegenwoordig vrij algemeen zijn in 1-2 jaar, zal het geheugen op deze kaarten drastisch toenemen en kunnen ze ook worden gebruikt voor op ZFS gebaseerde back-upsystemen.
-Fijne korrel voortgangsindicator door het C-programma (zie WasserStation een van mijn andere projecten). Op dit moment alleen # hashmark # tekens gebruikt in tekenmodus met lcdPuts(lcd, regel1), dit zou zelfs verbeterd kunnen worden wanneer teken-LCD's worden gebruikt om 1 kolom in 5 delen te verdelen en het hoofdprogramma van C kan gewoon een geheel getal zoals 25 nemen en eruit halen de voortgangsbalk correct of verder verbeterd door een grafisch LCD-scherm te gebruiken
- Mogelijkheid om een verwijderbare harde schijf te hebben voor het maken van nieuwe en nieuwe back-ups en deze naar verschillende locaties te verplaatsen (als de box een lege schijf detecteert, moet deze deze automatisch formatteren met de coderingssleutel zodra deze is ontvangen).
-Als je je eigen hoesje wilt printen met makerbot is de OrangeNAS misschien interessant voor jou:
Aanbevolen:
Veilig toegang tot uw Pi overal ter wereld: 7 stappen
Veilig toegang tot uw Pi overal ter wereld: ik heb maar weinig applicaties die de klok rond op de Pi draaien. Telkens wanneer ik mijn huis uitkwam, werd het erg moeilijk om de gezondheid en status van de Pi te controleren. Vervolgens heb ik de kleine horde overwonnen met ngrok. Toegang tot het apparaat van buitenaf geeft
Houd uw Windows veilig: 10 stappen
Houd uw Windows veilig: HACKING - Een woord dat ons fascineert en toch bang maakt. Het betekent dat je een all-cool-beans-techy-persoon kunt zijn of degene kunt worden die wordt gehackt. In de digitale wereld van vandaag, waar alles afhankelijk is van computers en smartphones, is gehackt worden niet wat we
Veilig desolderen van elektronische componenten voor hergebruik: 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe elektronische componenten veilig te desolderen voor hergebruik: Hallo! Ik ben een elektronica-nerd, dus ik speel graag met verschillende elektronische componenten in mijn projecten. Het kan echter zijn dat ik niet altijd over de onderdelen beschikt die ik nodig heb om mijn werk gedaan te krijgen. Soms is het gemakkelijker om de componenten die ik nodig heb uit een oude elektronische
VEILIG?, een robot die eigendommen bespaart. 6 stappen (met afbeeldingen)
VEILIG?, een robot die eigendommen opslaat.: Hallo en welkom bij deze instructable! De robot: VEILIG? kan een cool zijn zoals je het wilt maken. Deze vriendelijke robot, zoals je weet, zou ons de gunst kunnen geven om onze bezittingen te redden. Bovendien, in deze versie van SAFE? we konden niet bepalen t
Hoe u gemakkelijk een back-up van uw Linux-box kunt maken met Rdiff-back-up: 9 stappen
Hoe u gemakkelijk een back-up van uw Linux-box kunt maken met behulp van Rdiff-backup: deze instructable laat u zien hoe u een eenvoudig volledig uitgerust back-up- en herstelsysteem op Linux uitvoert met behulp van rdiff-backup en een usb-drive