Obsah:

OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI: 5 kroků
OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI: 5 kroků

Video: OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI: 5 kroků

Video: OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI: 5 kroků
Video: Заброшенный фэнтезийный курорт в джунглях в Турции - история любви 2024, Listopad
Anonim
OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI
OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI
OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI
OrangeBOX: Zabezpečené záložní úložné zařízení založené na OrangePI

OrangeBOX je zálohovací box pro vzdálené úložiště typu vše v jednom pro všechny servery.

Váš server může být infikován, poškozen, vymazán a všechna vaše data jsou na OrangeBOXu stále v bezpečí a komu by se nelíbila nemožná mise, jako je záložní zařízení, stačí připojit a zobrazit indikátor průběhu, aniž byste dělali cokoli jiného (jen doufat, že kouzlo kouř nakonec nevyjde:)).

OrangeBOX je můj první projekt, který je většinou softwarový, nikoli hardwarový hack. Jedná se v podstatě o vlastní NAS s připojeným LCD.

Krok 1: Součásti hardwaru

Hardware díly
Hardware díly
Hardware díly
Hardware díly
Hardware díly
Hardware díly

Orange PI zero je open-source jednodeskový počítač. Může běžet Android 4.4, Ubuntu, Debian. Používá SoC AllWinner H2 a má 256 MB/512 MB DDR3 SDRAM (256 MB verze je standardní verze. Orange Pi Zero je pro každého, kdo chce začít s technologií tvořit - nejen ji spotřebovávat. Je to jednoduchý, zábavný a užitečný nástroj, který můžete použít k převzetí kontroly nad světem kolem vás (https://www.orangepi.org/orangepizero/). Takže je to přesně pro nás, pojďme se do toho pustit:)

  • Kovový/plastový/dřevěný box (použil jsem starý externí box CD-RW Yamaha)
  • Orange PI Zero nebo lepší (GPIO pinout se může změnit, pokud použijete jiný model)
  • 2x20 RGB LCD obrazovek
  • Libovolný disk SFF 3.5/ LFF 2.55 usb
  • SATA -> USB adaptér. Mějte na paměti, že zatímco OrangePI neukládá horní limit maximální kapacity disku, mnoho mostů USB-SATA ano (2TB max). Oranžový PI Zero, který používám, má pouze jeden port USB 2.0 s efektivní přenosovou rychlostí max. 28 MB/s. Vybral jsem USB3.0 (připraveno pro budoucí upgrady) -> SATA můstek (značka nebude uvedena) a omezuje limit, takže je lepší zvolit most, který prokazuje podporu větších jednotek, jako jsou mosty založené na čipu JMicron JMS567. Před zakoupením si udělejte vlastní průzkum. Mohu žít s omezením rychlosti a pevného disku pomocí 2TB sata disku v tomto projektu (pokud vložíte větší disky, bude to rozpoznáno, ale OS uvidí pouze první 2TB z toho, takže zbytek kapacity bude ztracený).
  • Adaptér zesilovače 12V 2,5 A nebo vyšší. Vypočítejte přibližně 500mA normální využití pro OPI Zero a 1,5A špičku pro standardní LFF SATA disk. Předimenzování nikdy neuškodí. V mém nastavení Yamaha psu (co mohlo dodávat více než dost proudu na obou kolejnicích 12+5V) bohužel vybuchlo: (kvůli třídění hlavního spínače na GND na sekundu, takže jsem musel lepit běžný adaptér, na přinejmenším to udělalo krabici o pár gramů lehčí.
  • Buck převodník DC-DC 12V-> 5V. Použil jsem stejný nastavitelný mini buck jako u IronForge, funguje perfektně.

Volitelný

Pokud jste ochotni utratit + 10 $, můžete získat Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), který má podobný tvarový poměr a získáte Gbe a SATA3. K tomu lze použít knihovnu Libra PI wiring: https://github.com/OrangePiLibra/WiringPi, ale protože GPIO pinout je jiný, je mimo rozsah tohoto psaní.

Můžete to také udělat s novým Orange PI Plus2, který má SATA konektor a můžete přeskočit používání převodníků sata-> usb společně s jejich omezeními. Pokud plánujete používat FreeBSD nebo jiné BSD, řada Orange PI nemusí být tou nejlepší volbou, protože jejich hardwarová podpora je omezená (například k zavedení potřebujete USB flash disk). Pro BSD je nejlepší radou použít Raspberry PI. Jak kód C pro LCD, tak všechny skripty prostředí Shell jsou přenosné do jiných systémů UNIX.

Krok 2: Hardware design

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

Krabice Yamaha stačila k uložení toho všeho, neměla by dostatek místa pro Orange PI PC nebo běžnou desku s tvarovým faktorem Raspi.

Ethernet byl vyveden pomocí prodlužovače do zadní části krabice. Pamatujte, že nula Orange PI má pouze ethernetové rozhraní 100 mbit/s, pokud chcete rychlejší, budete muset použít jinou desku, jako je Asus Tinkerboard/RPI3B+/Jiné modely Orange PI.

Chybný PIN Out je jedinou a jedinou chybou, které se v tomto projektu můžete dopustit, proto stojí za to použít nějaké pravidlo zásad palce:

1, Vždy se pokuste použít stejně barevný kabel od END do END. Sám se dopouštím stejné "chyby" v některých projektech, kde ne, jednoduše proto, že nemám po ruce dostatečně dlouhé kabely muž-muž/muž-žena/žena-žena a propojuji 2 dohromady, abych pokračoval obvodu. Pokud svou práci řádně nedokumentujete, může to po letech vést k bolestem hlavy, kdy budete muset provést opravu, upgrade.

2, Na konektory naneste trochu lepidla. V případě použití těchto arduino-starter kit kabelů mm/mf/ff, které nejsou špičkové kvality, je zcela běžné (zvláště pokud se pohybujete/přepravujete zařízení), že konektory vyklouznou. Pokud víte, že to bude zařízení pro dlouhodobé používání (případně použít, dokud se nerozbije ?!), pak je lepší nanést trochu hotglue jak na OrangePI, tak na LCD konektory, aby byly pohromadě. To lze v případě potřeby později snadno roztavit/poškrábat.

3, Nulové zapojení OrangePI Špatnou zprávou je, že pinout Orange PI NENÍ stejný jako Raspberry PI 0/1/2/3 a mezi jinými modely Orange PI je dokonce rozdíl. Nejlepší způsob, jak jít, je získat knihovnu zapojení (verze Orange PI Zero). Obraz může být trochu matoucí, ale tohle bylo to nejlepší, co jsem mohl najít. Jeden je zrcadlem 180 stupňů toho druhého. I když pochopení grafického obrázku CLI může být obtížnější, je to nejpřímější.

Vždy můžete odlišit 2 konce zásuvek tím, že jeden konec budete považovat za POZITIVNÍ s (+3,3/+5 V) a druhý za NEGATIVNÍ konec (jeden GND) -> toto je konec konektoru otočeného k portu ETHERNET.

Z tabulky Wiring PI Zero budete potřebovat pouze jeden sloupec, na který wPI zapomene, jako by tam nebyli.

Například pro připojení LCD_E 15 (to je wPI 15!) A LCD_RS 16 (to je wPI 16!) Spočítejte kolíky z POZITIVNÍHO konce konektoru (snadno se to dělá perem nebo malým šroubovákem). To bude fyzicky klesat o 4 piny a 5 kolíků.

4, Seskupit. Pokud existuje možnost umístit použité piny vedle sebe (seskupit je), vždy si to vyberte, díky čemuž budou držet jeden u druhého i bez lepidla a také v jiných projektech, když máte konektory 2x 4x 6x molex, můžete jen využijte výhody kolíků, které jsou vedle sebe. Zde to nejlepší, co můžete udělat, je skupina 2–3 s (ideální při použití zachráněných propojovacích kabelů ze starých počítačů).

Piny používané pro připojení LCD obrazovky OrangePI:

// POUŽÍVEJTE ČÍSLA PIN WIRINGPI

#define LCD_E 15 // Povolit pin #define LCD_RS 16 // Registrace vybrat pin #define LCD_D4 5 // datový pin 4 #define LCD_D5 6 // datový pin 5 #define LCD_D6 10 // datový pin 6 #define LCD_D7 11 // Datový pin 7

Piny používané pro ovládání podsvícení RGB

$ G napište 10

$ G napište 4 1 $ G napište 7 1

Oranžové PI nulové wPI piny 1, 4, 7. Jediné kouzlo, které tento LCD dokáže, ve srovnání se standardním fixním modrým nebo fixním zeleným podsvícením LCD, kde máte jedinou katodu, kterou je třeba stáhnout dolů na GND, že má 3 pro 3 barvy. Červená, zelená a modrá. Změnou kombinace, která je zapnutá, můžete z těchto základních barev míchat různé barvy, ale pouze vysoké odstíny bez odstínů, protože nemůžete ovládat jas barvy (je zapnutý nebo vypnutý).

Aditivní míchání barev: přidáním červené do zelené se získá žlutá; přidání červené k modré získá purpurovou; přidáním zelené k modré vznikne azurová; sečtením všech tří základních barev dohromady vznikne bílá.

Krok 3: Operační systém

Operační systém
Operační systém

OrangeBOX se spustí a jádro Armbian linux (založené na Debianu Stretch) 4.14.18-sunxi se zabezpečeným firewallovým prostředím, připojí se k VPN a čeká na příkazy vzdáleného zálohování ze serveru.

Zásady návrhu:

-Úplné šifrování disku založené na luks (samotné zařízení neobsahuje klíč pro otevření záložní jednotky. Bude dočasně zkopírováno ze vzdáleného serveru na ram /dev /shm, jednotka se otevře a klíč se smaže. Po dokončení zálohování disk se zavře a OrangeBox se automaticky vypne za 1 minutu.)

-Všechny příkazy a klíče jsou odesílány ze vzdáleného serveru (samotné zařízení obsahuje pouze certifikát vpn) nemá ŽÁDNÝ přístup na vzdálený server, i když ssh z tohoto zařízení je brána firewall

-Místní souborové systémy jsou nešifrované, aby se mohly spustit, ale neobsahují nic užitečného, a protože uplink VPN je na druhém konci velmi omezený, a to i při úplné ztrátě zařízení, útočník nemůže nic dělat

Stáhněte si Armbian Stretch z

Uvedení systému do provozu:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Upravte soubor /etc /inittab, veškerou konzolu lze deaktivovat, protože pole bude použito jako bezhlavé. Okomentujte následující část:

#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

Restartujte krabici a odeberte systemd, abyste měli skutečný open source systém bez bloatwaru.

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

Nainstalujte si nějaké balíčky

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

Nainstalujte knihovnu wiringpi

cd /usr /src

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

Vytvořte oranžového uživatele pro LCD displej

groupadd -g 1000 oranžová

useradd -m -d /home /orange -s /bin /bash -u 1000 -g oranžová oranžová

Hlídací pes, který na vás nedává pozor

apt-get install watchdog

Při pohledu na/etc/default/watchdog # Spustit hlídacího psa při spuštění? 0 nebo 1 run_watchdog = 1 # Spustit wd_keepalive po zastavení hlídacího psa? 0 nebo 1 run_wd_keepalive = 1 # Načtěte modul před spuštěním watchdog watchdog_module = "none" # Zde zadejte další možnosti hlídacího psa (viz manuál).

Při pohledu na /etc/watchdog.conf

# Povolte alespoň tyto

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

/etc/init.d/watchdog start

Měl by existovat alespoň 1 podproces jádra a 1 proces:

kořen 42 0,0 0,0 0 0? I <10:50 0:00 [watchdogd] root 14613 0,0 0,2 1432 1080? SL 13:31 0:00/usr/sbin/hlídací pes

Testování:

Ujistěte se, že vše zastavíte a provedete synchronizaci && synchronizaci && synchronizaci, abyste zapsali zbývající data na disk. Pak jako problém root:

echo 1> /dev /hlídací pes

Po několika sekundách by se počítač měl restartovat.

Jak uvádí manuál:

o Je tabulka procesů plná?

o Je dostatek volné paměti? o Existuje dostatek přidělitelné paměti? o Jsou některé soubory přístupné? o Změnily se některé soubory v daném intervalu? o Je průměrné pracovní zatížení příliš vysoké? o Došlo k přetečení tabulky souborů? o Je proces stále spuštěn? Proces je určen souborem pid. o Odpovídají některé IP adresy na ping? o Přijímají síťová rozhraní provoz? o Je teplota příliš vysoká? (Údaje o teplotě nejsou vždy k dispozici.) O Spusťte uživatelsky definovaný příkaz a proveďte libovolné testy. o Proveďte jeden nebo více testovacích/opravných příkazů nalezených v /etc/watchdog.d. Tyto příkazy jsou volány s testem argumentů nebo opravou. Pokud některá z těchto kontrol selže, hlídací pes způsobí vypnutí. Pokud některý z těchto testů kromě uživatelem definovaného binárního souboru trvá déle než jednu minutu, počítač bude také restartován.

Tento hlídací pes mohl fungovat dobře na běžných architekturách x86, ale na deskách založených na ARM, jako jsou Raspberry PI, Orange PI, mě to nesčetněkrát zklamalo. Systém může přejít do závěsných stavů, kde visí i hlídací pes. Pojďme to stejně nakonfigurovat, možná se to za ty roky zlepší s upgradem apt-get:(

Krok 4: Softwarový design

Softwarový design
Softwarový design

Samotný proces zálohování je založen na rsync (nejlepší nástroj pro zálohování, jaký byl kdy vynalezen). Data jsou získávána ze serveru SERVER-> OrangeBOX.

Extrahování dat z rsync bylo jedinou náročnou částí projektu, kde byl na LCD vytištěn ukazatel průběhu zálohy.

Existovaly 3 možné způsoby výpočtu průběhu zálohování:

1, Pomocí vzorců, jako je https://wintelguy.com/transfertimecalc.pl, určte přibližnou dobu, po kterou může převod trvat

Doba přenosu (d: h: m: s): 0: 02: 44: 00

Pro srovnání: Odhadovaný čas pro přenos 123 GB souboru přes různá síťová spojení (d: h: m: s): linka T1/DS1 (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

Pokud rsync dokončí, signalizuje skriptu, aby zastavil výpočet. Tato metoda je pouze přibližná a není spolehlivá, také rychlost odkazu není pevná, může zpomalit, znovu zrychlit. Toto je jen teoretický výpočet.

2, Provádění kontrol velikosti v adresáři, abychom zjistili, kolik dat jsme již synchronizovali. Může být velmi pomalý se stovkami GB malých souborů (ačkoli du -s v Linuxu dělá nějaké ukládání do mezipaměti, pokud jej znovu spustíte)

Hostitel A -> Zálohovat data serveru Data: 235 GB

Host B -> Data klientů Orange box máme právě teď Data dir: 112GB

Delta je 123 GB.

3, Pokud je souborový systém vyhrazený jako v našem případě/dev/mapper/backup je, můžeme využít indikátoru celkového využití souborového systému k určení, jak naše zálohování probíhá, a to je opravdu zatraceně rychlé. V tomto případě ani nemusíme kamkoli zapojit rsync stdout, stačí spustit suchý rsync, počkat, až se dokončí, vypočítat deltu v bajtech a překontrolovat to s volným místem, co máme na záložní jednotce a voila můžeme nyní vytvořte pěkný sloupcový graf. Tuto metodu jsem zvolil a zde je můj skript:

#!/bin/bash

# Kalkulačka průběhu zálohování pro OrangeBOX od NLD # Verze: 0.2 (2018/03/05) # # Spusťte jej jako neprivilegovaný uživatel z cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Tento skript je zodpovědný pouze za zobrazování dat na LCD, komunikuje # s hlavním programem nepřímo prostřednictvím pozičních a zamykacích souborů. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # využití disku na začátku zálohy TFILE = "$ HOME/trans.size" # celková předem vypočítaná velikost přenosu BFILE = "$ HOME/ backup.lck " # určuje počáteční stav FFILE =" $ HOME/backup.fin " # určuje dokončený stav LFILE1 =" $ HOME/lcd1.bar " # Data indikátoru průběhu LCD LFILE2 =" $ HOME/lcd2.bar " # Průběh LCD data indikátoru SHUTDOWN = "1" # Pokud 1, spustí další skript, který vypne pole na konci zálohy BACKUP_CURRENT = "0" # Musí být inicializováno, ale bude vypočítáno DRIVE_SIZE = "" # Velikost jednotky v bajtech (sekundární zkontrolovat) LCD = funkce "sudo /bin /lcd" 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 (set on boot by bootup_display.sh). Probíhá žádné zálohování, NEPOKOJTE # stavový LCD displej. Průběh zobrazovat pouze v případě, že probíhá průběžná záloha => Žádný startovací soubor A Žádný finový soubor = ukončete, pokud [! -f $ BFILE] && [! -f $ SOUBOR]; pak ukončete 1 fi # Pokud je záloha dokončena, tento skript to zobrazí a odstraní zámky #, aby se nemohly znovu spustit až do dalšího spuštění. if [-f $ FFILE]; poté zelené $ LCD „Zálohování“„** Dokončeno **“echo „Zálohování dokončeno“rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Zálohování dokončeno vyčištění, pokud [$ SHUTDOWN == "1"]; poté zopakujte „Provádění skriptu pro vypnutí…“/home/orange/shutdown.sh & fi exit 0 fi # Od tohoto okamžiku se skript spustí POUZE, pokud existuje ONGOING záloha #, proto budou všechny chyby vytištěny na LCD a způsobí skript # pro přerušení však neodstraní soubor backup.lck, takže sem bude chodit # znovu a znovu a vyhodnocovat podmínky. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; pak červený $ LCD "ERR: Záložní disk" "není připojen!" echo „Zálohovací jednotka není připojena“ukončete 1 fi, pokud [! -s $ TFILE]; pak červený $ LCD "ERR: transfeil" "je prázdný" echo "Soubor výpočtu velikosti transportu je prázdný." exit 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; pak červeně $ LCD "ERR: Zpětné čtení velikosti" "ze serveru neplatné" echo "Zálohování celkové velikosti čtení je neplatné 1" exit 1 fi if!

Přestože je kód jednoduchý, zde je nějaký popis toho, co dělá:

1, Pokud BFILE nebo FFILE neexistuje (což je stav po jasném spuštění), což znamená, že neexistuje žádný proces zálohování, NEDĚLEJTE nic, jen ukončete. Tímto způsobem můžete vykreslit jakékoli pěkné informace, které chcete ohledně zavádění, jako je název hostitele, IP, doba provozu atd., A nebude to popleteno.

2, Přejdeme k sekci is_mount $ BACKUP_DRIVE. Jen připomínáme, že jediný způsob, jak jsme se sem dostali, je, že byla spuštěna záloha, takže BFILE existuje. Nyní kód pouze provádí různé kontroly chyb, jako je připojená záložní jednotka? Je celková velikost toho, co se chystáme zálohovat, větší než jednotka? nebo jiné chyby. Pamatujte, že se jedná pouze o program DISPLAY, i když velikost překročí zálohy, nic se tím nezruší.

3, OK všechny chyby kontroly vymazány čas pro výpočet procentuálního grafu. Nejprve skript pořídí „snímek“místa použitého v bajtech na záložním souborovém systému právě teď a uloží jej do souboru VFILE. Co je účelem tohoto: bash skript je bez státní příslušnosti, ztrácí data mezi popravami, takže pokud si chcete „zapamatovat“některá data z předchozího spuštění, musíte je někam uložit. V našem případě je to jen jednoduchý textový soubor. Aby to bylo jednoduché, řekněme, že náš START_POS je 1 GB (data, která máme), to, co chceme zálohovat, je +2 GB a celková kapacita disku je 10 GB.

4, Příště, když skript spustí VFILE existovat, a to bude přečteno zpět (takže víme, jaká byla počáteční pozice v případě, že disk nebyl prázdný) pro výpočet BACKUP_CURRENT, což je v podstatě delta prostoru, který se právě používá na záložní disk minus počáteční pozici to, co jsme uložili do VFILE v posledním kole (opět to jsou data, která jsme měli na disku, když se zálohování spustilo). Skript interně pracuje s bajty, ale aby to bylo jednoduché, po půl hodině jsme zazálohovali 500 MB dat, vzorec by byl BACKUP_CURRENT = 1,5 GB - 1 GB (počáteční stav) => což nám vrací přesně ta skutečná data 500 MB, tj. co jsme dosud zálohovali. Můžete vidět, že bez sledování toho, jaká byla původní data na začátku zálohy, by tento výpočet velikosti selhal, protože by viděl, že místo, které je právě teď použito, je 1,5 GB, aniž by věděl, že na disku byla po celou dobu 1 gigová data pochází z předchozí zálohy, takže by předpokládalo, že nám server poslal 500 GB dat místo 500 MB.

5, načte se BACKUP_OVERALL, tato data byla vypočítána serverem, když provedl počáteční suchý rsync (jedná se tedy o externí zdroj dat obsahující množství bajtů, které budou zálohovány ze serveru-> OrangeBOX). Tato hodnota bude v současné době zkontrolována oproti celkovému volnému místu na disku a pokud ji překročí, zobrazí se na LCD displeji chybová zpráva a skript zastaví provádění. Znovu si zapamatujte, že celý tento skript zobrazuje POUZE, nezasahuje do procesu zálohování. Pokud vyčistíte soubory na disku nebo se počet souborů vzdáleně změní, a proto se BACKUP_OVERALL změní v jednom bodě, bude pokračovat.

6, Nakonec jsme skončili s kontrolami druhé úrovně, je čas něco zobrazit. Skript zobrazuje data na konzole i na LCD pomocí jednoduché aplikace C. Pozadí se přepne na MODROU, což znamená, že zálohování konečně začalo a průběh se vypočítá podle následujícího vzorce PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Toto je základní procentuální výpočet, vezmeme aktuální částku, v našem případě 0,5 GB*100/2 GB = 25%.

7, Čísla jsou také převedena z bajtů na Mega/Giga bajty a obrazovka je automaticky zobrazena v MB, pokud je nižší než 1 GB.

8, Jedna věc, kterou v našem případě zbývá zmapovat, je 25% na 20sloupcovém LCD. To by v našem případě bylo 25 * 20 /100 = 5. Aktuálně je implementována aktualizace pomocí programu LCD, která pokaždé, když zavoláte program, překreslí celou obrazovku. V tomto případě by tedy běželo 5krát smyčku for a nakreslilo 5 hashmarků # na obrazovku, to by se v každém kole ukázalo jako ošklivé blikání, takže místo toho zapisuji vypočítaná data indikátoru průběhu do LFILE1 a 2, což v tomto případě po 5 kol by obsahovalo ##### a to se přečte zpět a zobrazí se na LCD. Můžete také umístit LFILE1 a 2 na ramdisk, abyste ušetřili sdcard z dalších operací zápisu, nezpůsobilo mi to žádné problémy, skript se spouští jednou za minutu z cronu.

9, Po dokončení zálohování se další skript ze serveru, na kterém běží rsync, dotkne FFILE (Dokončit soubor). Na další smyčce backup_progress.sh pak zobrazí, že je záloha dokončena, a volitelně zavolá další skript pro vypnutí OrangeBOX. V tomto okamžiku odstraní soubory zámku, čímž znemožní další spuštění, takže i když nepovolíte vypnutí další minutu při spuštění tohoto skriptu, okamžitě se ukončí, protože BFILE tam není a FFILE tam není. Pokud se tedy záloha znovu nerestartuje, bude zobrazovat zprávu o dokončení zálohování na neurčito.

Skript pro vzdálené zálohování (orange-remote.sh):

Budete muset vygenerovat klíč ssh pro zálohování a klíč pro šifrování luks pro jednotku. Když poprvé spustíte vzdálenou zálohu ručně, uloží otisk prstu hostitele v oranžových polích do souboru hosts (od tohoto okamžiku se může spustit automaticky pomocí cron).

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

Chcete -li zjistit identifikátor pevného disku, spusťte uuid, blkid nebo jednoduše vyhledejte odpovídající adresáře/dev/disk/.

Pokud nechcete vše zálohovat, můžete nastavit vyloučení zahrnutí adresáře. To je docela nepříjemný proces, protože pro rsync, pokud chcete vyloučit jeden podadresář hluboko ve struktuře, musíte udělat:

+ /a

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

Protože tento skript provádí příkazy na OrangeBOXu vzdáleně, nemá z této strany žádný dohled nad návratovými proměnnými, proto používám několik chytrých triků, jako je například výstup zprávy vzdáleného disku na /tmp/contmsg.txt, poté analyzovat aby zjistil, zda to bylo úspěšné, pokud ne, pak změní binární soubor rsync na neproveditelný, takže se rsync nepokusí nahrát data do rootfů OrangePI, které vyplní SD kartu. Také je dobré nastavit neměnný bit na chattr +i /mnt /backup, aby to bylo nemožné.

Předběžný výpočet velikosti probíhá lokálně na Serveru, proto musí být tento soubor v dalším kroku odeslán na OrangeBOX.

Hlavní záloha je inicializována jako smyčka pro ((i = 0; i <100; i ++)); udělat, protože v případě nízké kvality DSL/kabelového připojení k internetu se může rsync často přerušit, časový limit. Pokud se úspěšně dokončí, smyčka se přeruší, aniž by se zkoušely další iterace. To funguje bezchybně s dobrými operačními systémy, ale pokud by z nějakého důvodu byla vzdálená schránka Windows a přístup by byl odepřen jako pravidelně na NTUSER. DAT, pak by rsync vrátil kód chyby a tato smyčka by se spustila 100krát a pak by stále selhala.

Krok 5: Uzavření a seznam úkolů

Seznam uzavření a úkolů
Seznam uzavření a úkolů
Seznam uzavření a úkolů
Seznam uzavření a úkolů

Můj instructable znovu ukazuje, jak si můžete vytvořit něco lepšího, přizpůsobitelnějšího zařízení z počítače s 10 $, které vlastní bitcoiny překoná Buffalo s jeho proprietárními uzamčenými zařízeními NAS, divnými interními oddíly, zaneprázdněným linuxem zmrzačeným se segfaultingovými nástroji, spravovaným jejich software pro Windows, uzavřený firmware, špatná dokumentace a podpora a bez ohledu na to, kolik peněz utratíte, nikdy nedostanete indikátor průběhu zobrazující vaši zálohu, nemluvě o tom, jak skvěle vypadá OrangeBox (dokonce s ním používám oranžový kabel CAT5: D).

Vzhledem k tomu, že se minipočítače stávají stále výkonnějšími při zachování stejné cenové řady <100 $, můžeme je používat pro další a další úkoly. Jelikož jsou Gbe ethernetové porty v dnešní době za 1–2 roky celkem běžné, paměť na těchto deskách se dramaticky zvýší a lze je použít i pro záložní systémy založené na ZFS.

-Indikátor průběhu jemného zrna programem C (viz WasserStation jeden z mých dalších projektů). Právě teď se používá # znak # hashmark # ve znakovém režimu s lcdPuts (lcd, line1), to by se dalo vylepšit i při použití znakových LCD k rozdělení 1 sloupce na 5 částí a hlavní program C by mohl vzít celé číslo jako 25 a nakreslit ukazatel průběhu správně nebo dále vylepšit pomocí grafického LCD

-Možnost mít vyměnitelný hdd pro vytváření nových a nových záloh a jejich přesouvání na různá místa (pokud box detekuje prázdný disk, měl by jej po přijetí automaticky naformátovat šifrovacím klíčem).

-Pokud chcete vytisknout svůj vlastní případ pomocí makerbot, může pro vás být zajímavý OrangeNAS:

Doporučuje: