Съдържание:

OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI: 5 стъпки
OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI: 5 стъпки

Видео: OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI: 5 стъпки

Видео: OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI: 5 стъпки
Видео: SCP-261 Пан-мерное Торговый и эксперимент Войти 261 объявление Де + полный + 2024, Юли
Anonim
OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI
OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI
OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI
OrangeBOX: Устройство за съхранение на защитени резервни копия на базата на OrangePI

OrangeBOX е кутия за архивиране на отдалечено хранилище за всички сървъри.

Вашият сървър може да бъде заразен, повреден, изтрит и всичките ви данни все още са защитени на OrangeBOX и кой не би искал невъзможна мисия като резервно устройство, което просто включите и вижте индикатора за напредък, без да правите нищо повече (просто се надявайте на магията дим няма да излезе в края:)).

OrangeBOX е първият ми проект, който е предимно софтуерен, а не хардуерен хак. По същество това е NAS по поръчка с прикрепен LCD дисплей.

Стъпка 1: Хардуерни части

Хардуерни части
Хардуерни части
Хардуерни части
Хардуерни части
Хардуерни части
Хардуерни части

Orange PI zero е едноплатен компютър с отворен код. Може да работи с Android 4.4, Ubuntu, Debian. Той използва AllWinner H2 SoC и има 256MB/512MB DDR3 SDRAM (256MB версията е стандартна версия. Orange Pi Zero е за всеки, който иска да започне да създава с технология - не просто да я използва. Това е прост, забавен, полезен инструмент, който вие можете да използвате, за да започнете да контролирате света около вас (https://www.orangepi.org/orangepizero/). Така че е точно за нас, нека да продължим с него:)

  • Метална/пластмасова/дървена кутия (използвал съм стара външна кутия за cd-rw на Yamaha)
  • Оранжево PI Zero или по -добро (разклонението на GPIO може да се промени, ако използвате друг модел)
  • 2x20 RGB LCD екрани
  • Всяко SFF 3.5/ LFF 2.55 USB устройство
  • Sata -> usb адаптер. Имайте предвид, че въпреки че OrangePI не налага горна граница на максималния капацитет на устройството, обаче много мостове USB към SATA правят (максимум 2TB). Оранжевият PI Zero, който използвам, има само един USB 2.0 порт с ефективна скорост на трансфер от 28 MB/s макс. Избрах USB3.0 (подготвен за бъдещи надстройки) -> SATA мост (марката няма да се споменава) и той ограничава границата, така че е по -добре да изберете мост, доказано поддържащ по -големи устройства, като JMicron JMS567 чип базирани мостове. Направете свое собствено проучване, преди да го купите. Мога да живея с ограничението на скоростта и твърдия диск, като използвам 2TB sata устройство в този проект (ако поставите по -големи дискове, той ще бъде разпознат, но операционната система ще види само първите 2TB от него, така че останалият капацитет ще бъде изгубен).
  • 12V 2.5 A или по -висок адаптер за усилвател. Изчислете около 500mA нормална употреба за OPI Zero и 1.5A пик за стандартно LFF SATA устройство. Излишният размер никога не боли. В моята настройка Yamaha psu (това, което би могло да осигури повече от достатъчно ток на двете релси 12+5V) за съжаление се взриви: (поради сортирането на главния превключвател към GND за секунда, така че трябваше да лепя в обикновен адаптер, при поне направи кутията по -лека с няколко грама.
  • Преобразувател Buck DC-DC 12V-> 5V. Използвах същия регулируем мини долар като при IronForge, работи перфектно.

По избор

Ако сте готови да похарчите + 10 $, тогава можете да получите Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), който е с подобен форм-фактор и ви осигурява Gbe и SATA3. За тази цел може да се използва библиотеката за окабеляване на Libra PI: https://github.com/OrangePiLibra/WiringPi, но тъй като разклонението на GPIO е различно, това е извън обхвата на това писане.

Можете също да направите тази компилация с новия Orange PI Plus2, който има SATA конектор и можете да пропуснете използването на sata-> usb конвертори заедно с техните ограничения. Ако планирате да използвате FreeBSD или други BSD, Orange PI серията може да не е най -добрият избор, тъй като тяхната хардуерна поддръжка е ограничена (например трябва да използвате USB стик за зареждане). За BSD това е най -добрият съвет да използвате Raspberry PI. Както C кодът за LCD, така и всички скриптове на обвивката са преносими към всякакви други UNIX системи.

Стъпка 2: Дизайн на хардуера

Хардуерен дизайн
Хардуерен дизайн
Хардуерен дизайн
Хардуерен дизайн
Хардуерен дизайн
Хардуерен дизайн

Кутията на Yamaha беше достатъчно за съхранение на всичко това, нямаше да има достатъчно място за Orange PI компютър или обикновена платка с форм-фактор Raspi.

Ethernet беше изведен с разширител в задната част на кутията. Не забравяйте, че Orange PI нулата има само 100mbit/s Ethernet интерфейс, ако искате по -бързо, ще трябва да използвате друга платка, като Asus Tinkerboard/RPI3B+/Други модели Orange PI.

Wrong PIN Out е единствената грешка, която можете да направите в този проект, затова си струва да приложите някои правила на принципите на палеца:

1, Винаги се опитвайте да използвате кабел от един и същи цвят от END до END. Аз самият допускам същата "грешка" в някои проекти, в които не го правя, просто защото нямам достатъчно дълги мъжки-мъжки/мъжки-женски/женско-женски кабели под ръка и закърпвам 2 заедно, само за да продължа веригата. Ако не документирате правилно работата си, това може да доведе до главоболие години по -късно, когато трябва да направите ремонт, надстройка.

2, Нанесете малко горещо лепило върху съединителите. В случай, че използвате тези кабели за ардуино стартер в стил mm/mf/ff кабели, които не са на върха на качеството, доста често (особено ако се движите/транспортирате устройството), конекторите се изплъзват. Ако знаете, че това ще бъде устройство за дългосрочна употреба (възможно е да се използва, докато се счупи ?!), тогава е по -добре да нанесете малко горещо лепило както върху OrangePI, така и върху LCD страницата на конекторите, за да ги държите заедно. Това може лесно да се разтопи/надраска по -късно, ако е необходимо.

3, нулевото окабеляване на OrangePI Лошата новина е, че разпределението на Orange PI НЕ е същото като Raspberry PI 0/1/2/3 и дори има разлика между другите модели Orange PI. Най -добрият начин да отидете е да получите библиотека за окабеляване (Orange PI Zero версия). Изображението може да е малко объркващо, но това бяха най -доброто, което можах да намеря. Едното е огледало на 180 градуса на другото. Въпреки че CLI не графичното изображение може да бъде по -трудно за разбиране, то е най -правото.

Винаги можете да различавате двата края на гнездата, като разглеждате единия край като ПОЗИТИВЕН край с (+3.3/+5V), а другия като НЕГАТИВНИЯ край (един GND) -> това е краят на конектора, обърнат към порта ETHERNET.

От таблицата Wiring PI Zero ще ви трябва само една колона, в която wPI да забрави за останалите, сякаш няма да ги има.

Така например, за да свържете LCD_E 15 (това е wPI 15!) И LCD_RS 16 (това е wPI 16!), Пребройте щифтовете от ПОЗИТИВНИЯ край на конектора (лесно се прави с химикалка или малка отвертка). Това физически ще намалее с 4 пина и 5 пина.

4, Групирайте се. Ако има възможност да поставите употребявани щифтове един до друг (групирането им) винаги е избирало това, това ги кара да се държат един без друг дори без hotglue, а също и в други проекти, когато имате 2x 4x 6x molex конектори, които можете просто се възползвайте от щифтовете един до друг. Тук най-доброто, което можете да направите, е група от 2-3 (идеално, когато използвате спасени кабели от джъмпери от стари компютри).

Пинове, използвани за свързване на OrangePI LCD екран:

// ИЗПОЛЗВАЙТЕ ПИН НОМЕРОВЕ НА WIRINGPI

#define LCD_E 15 // Активиране на Pin #define LCD_RS 16 // Регистриране на избора на щифт #define LCD_D4 5 // Данък за данни 4 #define LCD_D5 6 // Данък за данни 5 #define LCD_D6 10 // Данък за данни 6 #define LCD_D7 11 // Пин 7 за данни

Щифтове, използвани за управление на RGB подсветка

$ G напишете 10

$ G запис 4 1 $ G запис 7 1

Оранжев PI нула wPI щифтове 1, 4, 7. Единствената магия, която този LCD може да направи в сравнение със стандартния фиксиран син или фиксиран зелен подсветка LCD, където имате един катод, който трябва да бъде изтеглен до GND, че има 3 за 3 цветове. Червено, зелено и синьо. Чрез промяна на комбинацията, която е включена, можете да смесите различни цветове от тези основни цветове, но само високите краища без нюанси, защото не можете да контролирате яркостта на даден цвят (той е включен или изключен).

Адитивно смесване на цветовете: добавянето на червено към зелено дава жълто; добавянето на червено към синьо дава магента; добавянето на зелено към синьо дава циан; добавянето на трите основни цвята заедно дава бяло.

Стъпка 3: Операционна система

Операционна система
Операционна система

OrangeBOX се зарежда и Armbian linux (на базата на Debian Stretch) 4.14.18-sunxi ядро със защитена защитна среда, свързва се с VPN и чака за отдалечени команди за архивиране от сървъра.

Принципи на проектиране:

-Пълно шифроване на дискове, основано на лукс (самото устройство не съдържа ключа за отваряне на резервното устройство. Той ще бъде временно копиран от отдалечения сървър в ram /dev /shm, устройството се отваря и ключът се изтрива. След като архивирането приключи устройството е затворено и OrangeBox се изключва автоматично след 1 минута.)

-Всички команди и ключове се изпращат от отдалечения сървър (самото устройство съдържа само vpn сертификат) то няма НИКАКЪВ достъп до отдалечения сървър, дори ssh от това устройство е защитно защитено

-Локалните файлови системи са некриптирани, за да могат да се зареждат, но не съдържат нищо полезно и тъй като връзката нагоре към VPN е силно ограничена в другия край дори при пълната загуба на устройството, нападателят не може да направи нищо

Изтеглете Armbian Stretch от

Стартирайте системата:

apt-get update && apt-get upgrade

apt-get инсталирайте sysvinit-core sysvinit-utils

Редактирайте /etc /inittab, цялата конзола може да бъде деактивирана, тъй като полето ще се използва като без глава. Коментирайте следния раздел:

#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

Рестартирайте кутията си и премахнете systemd, за да имате истинска система без софтуер с отворен код.

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

Инсталирайте някои пакети

apt-get install cryptsetup vim htop rsync екран gcc make git

Инсталирайте библиотеката wiringpi

cd /usr /src

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

Създайте оранжев потребител за LCD дисплея

groupadd -g 1000 оранжево

useradd -m -d /home /оранжево -s /bin /bash -u 1000 -g оранжево оранжево

Пазачът, който не бди над вас

apt-get install watchdog

Преглеждане на/etc/default/watchdog # Стартиране на наблюдател по време на зареждане? 0 или 1 run_watchdog = 1 # Стартиране на wd_keepalive след спиране на наблюдател? 0 или 1 run_wd_keepalive = 1 # Заредете модула, преди да стартирате watchdog watchdog_module = "none" # Посочете тук допълнителни опции за наблюдение (вижте страницата man).

Преглеждам /etc/watchdog.conf

# Поне ги активирайте

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

/etc/init.d/watchdog старт

Трябва да има поне 1 нишка на ядрото и 1 процес:

корен 42 0.0 0.0 0 0? I <10:50 0:00 [watchdogd] корен 14613 0,0 0,2 1432 1080? SLs 13:31 0:00/usr/sbin/watchdog

Тестване:

Уверете се, че сте спрели всичко и направете синхронизация && sync && sync, за да запишете останалата част от данните на диска. След това като root проблем:

echo 1> /dev /watchdog

След няколко секунди машината трябва да се рестартира.

Както се посочва в ръководството:

o Пълна ли е таблицата на процесите?

o Има ли достатъчно свободна памет? o Има ли достатъчно разпределяща се памет? o Достъпни ли са някои файлове? o Променени ли са някои файлове в рамките на определен интервал? o Прекалено високо ли е средното работно натоварване? o Има ли препълване на файлова таблица? o Процесът продължава ли? Процесът се определя от pid файл. o Някои IP адреси отговарят ли на ping? o Получават ли мрежовите интерфейси трафик? o Температурата е твърде висока? (Данните за температурата не винаги са налични.) O Изпълнете дефинирана от потребителя команда за извършване на произволни тестове. o Изпълнете една или повече команди за тест/ремонт, намерени в /etc/watchdog.d. Тези команди се извикват с аргумента тест или поправка. Ако някоя от тези проверки не успее, наблюдателят ще доведе до изключване. Ако някой от тези тестове, с изключение на дефинирания от потребителя двоичен файл, продължи повече от една минута, машината също ще бъде рестартирана.

Този пазач можеше да работи добре на обикновените x86 архитектури, но на ARM базирани платки като Raspberry PIs, Orange PIs ме провали безброй пъти. Системата може да премине в състояния на окачване, където дори пазачът виси. Нека просто го конфигурираме така или иначе може би ще се подобри с apt-get надстройка през годините:(

Стъпка 4: Проектиране на софтуер

Софтуерен дизайн
Софтуерен дизайн

Самият процес на архивиране е базиран на rsync (най-добрият инструмент за архивиране, изобретен някога) данните се изтласкват от SERVER-> OrangeBOX.

Извличането на данните от rsync беше единствената предизвикателна част от проекта да има лента за напредъка относно архива, отпечатана на LCD.

Имаше 3 възможни начина за изчисляване на напредъка на архивирането:

1, Използвайки формули като https://wintelguy.com/transfertimecalc.pl, за да определите приблизително времето, което може да отнеме прехвърлянето

Време за трансфер (d: h: m: s): 0: 02: 44: 00

За сравнение: Приблизително време за прехвърляне на 123 GB файл през различни мрежови връзки (d: h: m: s): 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

Ако rsync завърши, той сигнализира на скрипта да спре изчислението. Този метод е само приблизителен и не е надежден, скоростта на връзката също не е фиксирана, може да се забави, да се ускори отново. Това е само теоретично изчисление.

2, Извършване на проверки на размера в директорията, за да се определи колко данни вече сме синхронизирали. Може да стане много бавен със стотици GB файлове с малък размер (въпреки че du -s в Linux прави кеширане, ако го повторите)

Хост A -> Данни на сървъра, които трябва да бъдат архивирани Код на данните: 235GB

Хост B -> Orange box клиентски данни, които имаме в момента Код на данните: 112GB

Делтата е 123 GB.

3, Ако файловата система е посветена, както в нашия случай/dev/mapper/backup е, можем да се възползваме от общия индикатор за използване на файловата система, за да определим как напредва архивирането ни и това е адски бързо. В този случай дори не е нужно да извеждаме rsync stdout навсякъде, просто стартирайте сух rsync, изчакайте, докато приключи, изчислете делтата в байтове и проверете това със свободното пространство какво имаме на резервното устройство и voila можем сега направете хубава гистограма. Това беше методът, който избрах и ето моя скрипт за него:

#!/bin/bash

# Калкулатор за напредъка на архивиране за OrangeBOX от NLD # Версия: 0.2 (2018/03/05) # # Изпълнете го като непривилегирован потребител от cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # Този скрипт е отговорен само за показване на данни на LCD дисплея, той комуникира # с основната програма индиректно чрез позиционни и заключващи файлове. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # използване на диска в началото на архива TFILE = "$ HOME/trans.size" # общ предварително изчислен размер на трансфер BFILE = "$ HOME/ backup.lck " # определя стартирано състояние FFILE =" $ HOME/backup.fin " # определя завършено състояние LFILE1 =" $ HOME/lcd1.bar " # Данни за индикатора на LCD дисплея LFILE2 =" $ HOME/lcd2.bar " # LCD напредък индикаторни данни SHUTDOWN = "1" # Ако 1, той ще инициира друг скрипт, който изключва кутията в края на архивирането BACKUP_CURRENT = "0" # Трябва да бъде инициализиран, но ще бъде изчислен DRIVE_SIZE = "" # Размер на диска в байтове (вторичен проверете) LCD = "sudo /bin /lcd" функцията is_mount () {grep -q "$ 1" /proc /mounts status = $? } функция red () {sudo /bin /lcdcolor red} функция green () {sudo /bin /lcdcolor green} функция blue () {sudo /bin /lcdcolor blue} # Изчистване на състоянието (зададено при зареждане от bootup_display.sh). Не се извършва архивиране, НЕ обърквайте LCD дисплея за състоянието #. Показвайте само напредъка, в случай че има текущо архивиране => Няма начален файл И Няма файл с перки = излезте, ако [! -f $ BFILE] && [! -f $ FFILE]; след това излезте 1 fi # Ако архивирането завърши, този скрипт ще покаже това и ще премахне ключалките #, за да не може да се изпълнява отново до следващото иницииране. if [-f $ FFILE]; след това зелено $ LCD "Архивиране" "** Завършено **" ехо "Архивиране завършено" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Архивирането завърши почистване, ако [$ SHUTDOWN == "1"]; след това ехо "Изпълнение на скрипт за изключване …" /home/orange/shutdown.sh & fi изход 0 fi # От този момент скриптът се изпълнява САМО ако има НЕЗАБАВНО архивиране # следователно всички грешки ще бъдат отпечатани на LCD и ще причинят скрипта # за прекъсване обаче няма да премахне файла backup.lck, така че ще влиза тук # отново и отново и ще евакулира условията. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; след това червен $ LCD "ERR: Резервно устройство" "" не е монтирано! " echo "Резервното устройство не е монтирано" изход 1 fi, ако [! -s $ TFILE]; след това червено $ LCD "ERR: transfile" "е празно" echo "Файлът за изчисляване на транспортния размер е празен." изход 1 fi BACKUP_OVERALL = $ (глава -1 $ TFILE | tr -d '\ n') ако [-z $ BACKUP_OVERALL]; след това червено $ LCD "ERR: Обратно отчитане на размера" "от сървъра невалидно" echo "Обратното отчитане на общия размер на резервното копие е невалидно 1" изход 1 fi ако!

Въпреки че кодът е прост, тук има описание какво прави:

1, Ако BFILE или FFILE не съществуват (което е състоянието след ясно стартиране), което показва, че няма процес на архивиране, така че НЕ правете нищо, просто излезте. По този начин можете да начертаете каквато и да е хубава информация относно стартирането като име на хост, ip, време за работа и т.н., и няма да бъде объркана.

2, Нека да преминем към раздела is_mount $ BACKUP_DRIVE. Само напомняне, единственият начин, по който стигнахме тук, е, че бе стартирано архивиране, така че BFILE съществува. Сега кодът само прави ли различни проверки за грешки, като например монтирано ли е резервното устройство ?, общият размер на това, което ще архивираме, надвишава устройството? или други грешки. Не забравяйте, че това е програма само за DISPLAY, дори ако размерът би надвишил архивите, тя няма да прекъсне нищо.

3, ОК всички проверки за грешки изчистено време за изчисляване на процентната графика. Първо скриптът прави "моментна снимка" на пространството, използвано в байтове във файловата система за архивиране в момента и го съхранява във VFILE. Каква е целта на това: bash скрипт е без състояние, той губи данни между изпълненията, така че ако искате да "запомните" някои данни от предишното изпълнение, трябва да ги запазите някъде. В нашия случай това е просто обикновен текстов файл. За да опростим, нека кажем, че нашият START_POS е 1GB (данни, които имаме), това, което искаме да архивираме, е +2GB, а общият капацитет на устройството е 10GB.

4, Следващият път, когато скриптът изпълнява VFILE съществува и това ще бъде прочетено обратно (така че знаем каква е началната позиция в случай, че устройството не е празно), за да се изчисли BACKUP_CURRENT, което по същество е делта на пространството, използвано в момента на резервното устройство минус началната позиция това, което сме записали във VFILE в последния кръг (отново това са данните, които имахме на устройството, когато архивирането започна). Скриптът вътрешно работи с байтове, но за да стане по -лесно след половин час, ние направихме резервно копие на 500 MB данни, тогава формулата ще бъде BACKUP_CURRENT = 1,5 GB - 1 GB (първоначално състояние) => което ни връща точно реалните данни 500 MB, т.е. това, което подкрепихме досега. Можете да видите, че без да следите какви са първоначалните данни в началото на архивирането, това изчисление на размера ще се провали, защото ще види, че използваното място в момента е 1,5 GB, без да знаете, че 1 гиг данни са били там на диска през цялото време идващи от предишен архив, така че би предположил, че сървърът ни е изпратил 1.5GB данни вместо 500MB.

5, BACKUP_OVERALL ще бъде прочетено, тези данни бяха изчислени от сървъра, когато той направи първоначалната суха rsync (така че това е външен източник на данни, съдържащ количеството байтове, което ще бъде архивирано от Server-> OrangeBOX). Тази стойност ще бъде проверена спрямо общото БЕЗПЛАТНО място на диска в момента и ако го надвишава, тогава на LCD ще се покаже съобщение за грешка и скриптът ще спре изпълнението. Не забравяйте отново, че всичко, което този скрипт прави, е да се показва САМО, това не пречи на процеса на архивиране. Ако почиствате файлове на диска или количеството на файловете се променя дистанционно и следователно BACKUP_OVERALL се променя в един момент, той ще продължи.

6, накрая приключихме с проверките на второ ниво, време е да покажем нещо. Скриптът показва данните както на конзолата, така и на lcd -а, като използва просто C приложение. Фонът се превключва в СИН, което показва, че архивирането най -накрая е започнало и напредъкът се изчислява по следната формула PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Това е основно изчисление в проценти, като вземем текущата сума, в нашия пример 0.5GB*100/2GB = 25%.

7, Номерата също се преобразуват от байтове в мега/гига байтове и екранът автоматично се показва в MB, ако е по -малък от 1 GB.

8, Остава да картографирате това в нашия случай е 25% на LCD дисплей с 20 колони. Това би било 25 * 20 /100 = 5 в нашия пример. Понастоящем се осъществява опресняването с LCD програмата, така че всеки път, когато извикате програмата, тя ще прерисува целия екран. Така че в този случай той ще изпълни цикъл for 5 пъти, за да нарисува 5 хешмарки # на екрана, това ще се покаже като грозно трептене във всеки кръг, така че вместо това изписвам изчислените данни за напредъка в LFILE1 и 2, които в този случай след 5 -те кръга ще съдържат ##### и това се чете обратно и се показва на LCD. Можете също така да поставите LFILE1 и 2 на ramdisk, за да запазите sdcard от допълнителни операции на запис, това не ми създаде проблеми, скриптът се изпълнява веднъж на всяка минута от cron.

9, Когато архивирането приключи, другият скрипт от сървъра, който изпълнява rsync, ще докосне FFILE (Finish File). В следващия цикъл backup_progress.sh ще покаже, че архивирането е завършено и по желание извиква друг скрипт, за да изключи OrangeBOX. Той изтрива заключващите си файлове на този етап, което прави по -нататъшните изпълнения невъзможни, така че дори и да не активирате изключването в следващата минута, когато този скрипт се изпълнява, той ще се откаже веднага, защото BFILE не е там и FFILE не е там. Следователно той ще показва съобщението за завършване на архивирането за неопределено време, освен ако архивирането не се рестартира отново.

Скрипт за отдалечено архивиране (orange-remote.sh):

Ще трябва да генерирате ssh ключ за архивиране и ключ за криптиране luks за устройството. Когато стартирате дистанционното архивиране ръчно за първи път, той ще запази пръстовия отпечатък на хост оранжевите кутии във файла hosts (от този момент той може да се изпълнява автоматично от cron).

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

За да разберете идентификатора на вашия твърд диск, стартирайте uuid, blkid или просто потърсете съответните директории/dev/disk/.

Директория include exclude може да бъде настроена, ако не искате да архивирате всичко. Това е доста досаден процес, защото за rsync, ако искате да изключите една поддиректория дълбоко в структурата, трябва да направите:

+ /а

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

Тъй като този скрипт изпълнява команди от OrangeBOX отдалечено, той няма надзор върху връщащите се променливи от тази страна, затова използвам някои хитри трикове, като например ще извежда съобщението за отваряне на отдалеченото устройство към /tmp/contmsg.txt, след което анализира тя, за да види дали е успешна, ако не, тогава променя двоичния файл rsync в неизпълним, така че rsync няма да се опитва да качва данни в rootfs на OrangePIs, запълвайки SD картата нагоре. Също така е добра практика да зададете неизменния бит на chattr +i /mnt /backup, за да направите това невъзможно.

Предварителното изчисляване на размера се извършва локално на сървъра, поради което този файл трябва да бъде изпратен до OrangeBOX в следващата стъпка.

Основното архивиране се инициира като цикъл за ((i = 0; i <100; i ++)); направете, защото в случай на нискокачествени DSL/кабелни интернет връзки rsync често може да прекъсне, изчакване. Ако завърши успешно, цикълът ще се прекъсне, без да се опитват повече повторения. Това работи безупречно с добри операционни системи, но ако по някаква причина отдалечената кутия ще бъде Windows и ще има отказ за достъп, както редовно на NTUSER. DAT, тогава rsync ще върне код за грешка и този цикъл ще се изпълни 100 пъти и след това ще се провали.

Стъпка 5: Затваряне и ToDo списък

Списък за затваряне и ToDo
Списък за затваряне и ToDo
Списък за затваряне и ToDo
Списък за затваряне и ToDo

Моят инструктаж демонстрира за пореден път как можете да създадете нещо по -добро, по -персонализирано устройство от компютър на стойност 10 $, който побеждава по дяволите Buffalo със своите собствени заключени NAS устройства, странно вътрешно разделяне, закъсал осакатен Linux с инструменти за сегфалинг, управляван от техния софтуер за windows, затворен фърмуер, лоша документация и поддръжка и без значение колко пари ще похарчите, никога няма да получите индикатор за напредък, показващ архива ви, да не говорим колко готино изглежда OrangeBox (дори използвам оранжев кабел CAT5 с него: D).

Тъй като мини компютрите стават все по -мощни, като същевременно поддържаме същата ценова линия <100 $, можем да ги използваме за все повече задачи. Тъй като Gbe Ethernet портовете са доста често срещани в днешно време след 1-2 години, паметта на тези платки ще се увеличи драстично и те могат да се използват и за базирани на ZFS системи за архивиране.

-Индикатор за напредък на финото зърно по програмата C (вижте WasserStation един от другите ми проекти). В момента само # хешмарк # знака, използвани в режим на знаци с lcdPuts (lcd, line1), това може да се подобри дори когато използвате LCD символи за разделяне на 1 колона на 5 части и основната програма на C може просто да вземе цяло число като 25 и да извади лентата за напредъка правилно или допълнително подобрена чрез използване на графичен LCD дисплей

-Възможност да имате сменяем твърд диск за създаване на нови и нови архиви и преместването им на различни места (ако кутията открие празно устройство, то трябва автоматично да го форматира с ключа за шифроване, след като бъде получено).

-Ако искате да отпечатате свой собствен калъф с makerbot, OrangeNAS може да ви е интересен:

Препоръчано: