Оглавление:

OrangeBOX: Безопасное устройство хранения резервных копий на базе OrangePI: 5 шагов
OrangeBOX: Безопасное устройство хранения резервных копий на базе OrangePI: 5 шагов

Видео: OrangeBOX: Безопасное устройство хранения резервных копий на базе OrangePI: 5 шагов

Видео: OrangeBOX: Безопасное устройство хранения резервных копий на базе OrangePI: 5 шагов
Видео: Как почистить память на андроид устройства | Чистка Android памяти 2024, Ноябрь
Anonim
OrangeBOX: безопасное устройство хранения резервных копий на базе OrangePI
OrangeBOX: безопасное устройство хранения резервных копий на базе OrangePI
OrangeBOX: безопасное устройство хранения резервных копий на базе OrangePI
OrangeBOX: безопасное устройство хранения резервных копий на базе OrangePI

OrangeBOX - это универсальное устройство для резервного копирования удаленного хранилища для любых серверов.

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

OrangeBOX - мой первый проект, который в основном представляет собой программное обеспечение, а не аппаратный взлом. По сути, это NAS, созданный по индивидуальному заказу, с прикрепленным ЖК-дисплеем.

Шаг 1. Детали оборудования

Детали оборудования
Детали оборудования
Детали оборудования
Детали оборудования
Детали оборудования
Детали оборудования

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

  • Коробка из металла / пластика / дерева (я использовал старую внешнюю коробку для компакт-дисков Yamaha)
  • Orange PI Zero или лучше (распиновка GPIO может измениться, если вы используете другую модель)
  • ЖК-экраны 2x20 RGB
  • Любой USB-накопитель SFF 3.5 / LFF 2.55
  • Sata -> usb-адаптер. Имейте в виду, что хотя OrangePI не устанавливает верхний предел максимальной емкости накопителя, но многие мосты USB-SATA это делают (максимум 2 ТБ). Оранжевый PI Zero, который я использую, имеет только один порт USB 2.0 с максимальной эффективной скоростью передачи 28 МБ / с. Я выбрал USB3.0 (подготовлен для будущих обновлений) -> мост SATA (бренд не будет упоминаться), и он ограничивает лимит, поэтому лучше выбрать мост, доказавший свою поддержку больших дисков, таких как мосты на базе микросхемы JMicron JMS567.. Перед покупкой проведите собственное исследование. Я могу жить с ограничением скорости и жесткого диска, используя в этом проекте диск sata 2 ТБ (если вы вставите диски большего размера, он будет распознан, но ОС увидит только первые 2 ТБ из них, поэтому остальная емкость будет потерянный).
  • Адаптер усилителя 12 В 2,5 А или выше. Вычислите около 500 мА при нормальном использовании для нулевого значения OPI и пиковое значение 1,5 А для стандартного диска SATA большого форм-фактора. Больше никогда не помешает. В моей настройке блок питания Yamaha (который мог обеспечить более чем достаточный ток на обе шины 12 + 5 В), к сожалению, взорвался: (из-за сортировки главного переключателя на GND на секунду, поэтому мне пришлось приклеить обычный адаптер, на По крайней мере, это сделало коробку на пару граммов легче.
  • Понижающий преобразователь 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 для ЖК-дисплея, и все сценарии оболочки переносимы в любые другие системы UNIX.

Шаг 2: проектирование оборудования

Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн
Аппаратный дизайн

Коробки Yamaha было достаточно для хранения всего этого, в ней не хватило бы места для компьютера Orange PI или обычной платы форм-фактора Raspi.

Ethernet был вынесен с удлинителем на заднюю часть коробки. Помните, что Orange PI zero имеет только интерфейс Ethernet 100 Мбит / с, если вы хотите быстрее, вам нужно будет использовать другую плату, такую как Asus Tinkerboard / RPI3B + / другие модели Orange PI.

Неверный PIN-код - единственная ошибка, которую вы можете сделать в этом проекте, поэтому стоит применить несколько практических принципов:

1. Всегда старайтесь использовать кабель одного цвета от КОНЦА до КОНЦА. Я сам совершаю ту же «ошибку» в некоторых проектах, где я этого не делаю, просто потому, что у меня под рукой недостаточно длинных кабелей мужчина-мужчина / мужчина-женщина / женщина-женщина, и я соединяю 2 вместе, чтобы продолжить схема. Если вы не документируете свою работу должным образом, это может привести к головным болям спустя годы, когда вам придется делать ремонт, обновлять.

2, нанесите немного горячего клея на разъемы. В случае использования этих кабелей mm / mf / ff в стиле набора arduino-starter kit, которые не являются лучшими по качеству линии, довольно часто (особенно если вы перемещаете / транспортируете устройство), разъемы выскальзывают. Если вы знаете, что это будет устройство для длительного использования (возможно, использовать до тех пор, пока оно не сломается ?!), то лучше нанести немного горячего клея на разъемы OrangePI и LCD, чтобы соединить их вместе. Его можно легко расплавить / поцарапать позже, если потребуется.

3. Нулевое соединение OrangePI. Плохая новость заключается в том, что распиновка Orange PI НЕ такая же, как у Raspberry PI 0/1/2/3, и даже есть разница между другими моделями Orange PI. Лучше всего получить библиотеку проводки (версия Orange PI Zero). Изображение может немного сбивать с толку, но это лучшее, что я смог найти. Один является зеркалом другого на 180 градусов. Хотя неграфическое изображение интерфейса командной строки может быть труднее для понимания, оно является наиболее простым.

Вы всегда можете различать 2 конца разъема, рассматривая один конец как ПОЛОЖИТЕЛЬНЫЙ конец с (+ 3,3 / + 5 В), а другой как ОТРИЦАТЕЛЬНЫЙ конец (один GND) -> это конец разъема, обращенный к порту ETHERNET..

Из таблицы Wiring PI Zero вам понадобится только один столбец, чтобы wPI забыл о других, как будто их там не было.

Так, например, для подключения LCD_E 15 (то есть wPI 15!) И LCD_RS 16 (то есть wPI 16!) Подсчитайте контакты с ПОЛОЖИТЕЛЬНОГО конца разъема (это легко сделать ручкой или небольшой отверткой). Это будет физически опускаться на 4 контакта и 5 контактов.

4, группа вверх. Если есть возможность разместить использованные контакты рядом друг с другом (сгруппировать их), всегда выбирайте это, это заставляет их удерживать друг друга даже без горячего клея, а также в других проектах, когда у вас есть 2x 4x 6x разъемы Molex, вы можете просто воспользуйтесь преимуществами того, что булавки находятся рядом друг с другом. Лучшее, что вы можете сделать, - это группа из 2-3 шлейфов (идеально при использовании утилизированных перемычек от старых ПК).

Контакты, используемые для подключения ЖК-экрана OrangePI:

// ИСПОЛЬЗУЙТЕ ПИН-коды WIRINGPI

#define LCD_E 15 // Включить вывод #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 написать 1 0

$ G написать 4 1 $ G написать 7 1

Оранжевый PI zero wPI, контакты 1, 4, 7. Единственное волшебство, которое этот ЖК-дисплей может творить по сравнению со стандартным фиксированным синим или фиксированным зеленым ЖК-дисплеем с подсветкой, где у вас есть один катод, который нужно подтянуть к GND, а у него 3 для 3 цвета. Красный, зеленый и синий. Изменяя комбинацию того, какой из них включен, вы можете смешивать разные цвета из этих основных цветов, но только верхние грани без оттенков, потому что вы не можете контролировать яркость цвета (она либо включена, либо выключена).

Аддитивное смешивание цветов: добавление красного к зеленому дает желтый; добавление красного к синему дает пурпурный цвет; добавление зеленого к синему дает голубой; сложение всех трех основных цветов вместе дает белый цвет.

Шаг 3: Операционная система

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

OrangeBOX загружается, и ядро Armbian linux (на основе Debian Stretch) 4.14.18-sunxi с защищенной межсетевой экраном подключается к VPN и ожидает удаленных команд резервного копирования с сервера.

Принципы дизайна:

-Полное шифрование диска на основе luks (само устройство не содержит ключа для открытия резервного диска. Он будет временно скопирован с удаленного сервера в оперативную память / dev / shm, диск будет открыт, а ключ будет удален. После завершения резервного копирования привод закрывается, и OrangeBox автоматически выключается через 1 минуту.)

-Все команды и ключи отправляются с удаленного сервера (само устройство содержит только сертификат vpn) у него нет ЛЮБОГО доступа к удаленному серверу, даже ssh с этого устройства защищен брандмауэром

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

Загрузите Armbian Stretch с

Установите и запустите систему:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Отредактируйте / etc / inittab, всю консоль можно отключить, так как поле будет использоваться как безголовое. Закомментируйте следующий раздел:

# 1: 2345: респаун: / 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: респаун: / sbin / getty 38400 tty6

Перезагрузите компьютер и удалите systemd, чтобы получить настоящую систему с открытым исходным кодом, свободную от вредоносного ПО.

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

Установите несколько пакетов

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

Установите библиотеку wiringpi

cd / usr / src

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

Создайте оранжевого пользователя для ЖК-дисплея

groupadd -g 1000 апельсин

useradd -m -d / home / orange -s / bin / bash -u 1000 -g оранжевый апельсин

Сторожевой пес, который не следит за вами

apt-get install watchdog

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

Глядя на /etc/watchdog.conf

# По крайней мере, включите эти

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

/etc/init.d/watchdog start

Должен быть как минимум 1 поток ядра и 1 процесс:

корень 42 0,0 0,0 0 0? Я <10:50 0:00 [сторожевой таймер] корень 14613 0,0 0,2 1432 1080? SLs 13:31 0:00 / usr / sbin / watchdog

Тестирование:

Убедитесь, что вы остановили все и выполнили синхронизацию && синхронизацию && синхронизацию, чтобы записать остальные данные на диск. Тогда как корень проблемы:

эхо 1> / dev / сторожевой таймер

Через несколько секунд машина должна перезагрузиться.

Как указано в руководстве:

o Заполнена ли таблица процессов?

o Достаточно ли свободной памяти? o Достаточно ли выделяемой памяти? o Доступны ли некоторые файлы? o Изменились ли некоторые файлы в течение заданного интервала? o Не слишком ли высока средняя рабочая нагрузка? o Произошло ли переполнение файловой таблицы? o Процесс все еще запущен? Процесс определяется файлом pid. o Отвечают ли некоторые IP-адреса на пинг? o Получают ли сетевые интерфейсы трафик? o Не слишком ли высокая температура? (Данные о температуре не всегда доступны.) O Выполнение определенной пользователем команды для проведения произвольных тестов. o Выполнить одну или несколько команд тестирования / восстановления из /etc/watchdog.d. Эти команды вызываются с аргументом test или repair. Если какая-либо из этих проверок не удалась, сторожевой таймер отключит систему. Если любой из этих тестов, кроме определяемого пользователем двоичного файла, длился дольше одной минуты, компьютер также будет перезагружен.

Этот сторожевой таймер мог нормально работать на обычных архитектурах x86, но на платах на базе ARM, таких как Raspberry PI, Orange PI, он подводил меня бесчисленное количество раз. Система может перейти в состояние зависания, при котором зависает даже сторожевой таймер. Давайте все равно настроим его, может быть, с годами он улучшится с обновлением apt-get:(

Шаг 4: Разработка программного обеспечения

Разработка программного обеспечения
Разработка программного обеспечения

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

Извлечение данных из rsync было единственной сложной частью проекта, когда на ЖК-дисплее была распечатана шкала выполнения резервной копии.

Было 3 возможных способа подсчитать прогресс резервного копирования:

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

Время передачи (д: ч: м: с): 0: 02: 44: 00

Для сравнения: Расчетное время передачи файла размером 123 ГБ по разным сетевым каналам (д: ч: мин: с): линия T1 / DS1 (1,544 Мбит / с) - 7: 09: 01: 46 Ethernet (10 Мбит / с) - 1:03: 20:00 Fast Ethernet (100 Мбит / с) - 0: 02: 44: 00 Gigabit Ethernet (1000 Мбит / с) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Гбит / с) - 0: 00: 01: 38

Если rsync завершает работу, он сигнализирует сценарию о необходимости остановить вычисление. Этот метод является приблизительным и ненадежным, также скорость связи не фиксируется, может замедляться, снова увеличиваться. Это всего лишь теоретический расчет.

2. Выполнение проверки размера каталога, чтобы определить, сколько данных мы уже синхронизировали. Может работать очень медленно с небольшими файлами размером в сотни ГБ (хотя du -s в Linux выполняет некоторое кеширование, если вы его перезапустите)

Хост A -> Данные сервера для резервного копирования Каталог данных: 235 ГБ

Хост B -> Данные клиента Orange box, которые у нас есть прямо сейчас Data dir: 112GB

Дельта - 123 ГБ.

3. Если файловая система выделена, как в нашем случае / dev / mapper / backup, мы можем воспользоваться индикатором общего использования файловой системы, чтобы определить, как продвигается наше резервное копирование, и это действительно чертовски быстро. В этом случае нам даже не нужно куда-либо направлять stdout rsync, просто запустите сухой rsync, дождитесь его завершения, вычислите дельту в байтах и перепроверьте это со свободным пространством, которое у нас есть на резервном диске, и вуаля, мы можем теперь сделайте красивую гистограмму. Я выбрал этот метод, и вот мой сценарий для него:

#! / bin / bash

# Калькулятор прогресса резервного копирования для OrangeBOX от NLD # Версия: 0.2 (2018/03/05) # # Запускать его как непривилегированный пользователь из cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Этот скрипт отвечает только за отображение данных на ЖК-дисплее, # он напрямую связывается с основной программой через файлы положения и блокировки. 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 "# Данные ЖК-индикатора выполнения LFILE2 =" $ HOME / lcd2.bar "# ЖК-индикатор выполнения индикатор данных SHUTDOWN = "1" # Если 1, он инициирует другой сценарий, который завершает работу устройства в конце резервного копирования BACKUP_CURRENT = "0" # Должен быть инициализирован, но будет вычислен DRIVE_SIZE = "" # Размер диска в байтах (вторичный check) LCD = "sudo / bin / lcd" function 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} # Очистить состояние (устанавливается при загрузке с помощью bootup_display.sh). Резервное копирование не выполняется, НЕ портите # статус ЖК-дисплея. Отображать прогресс только в том случае, если есть текущее резервное копирование => Нет стартового файла И Нет файла fin = выйти, если [! -f $ BFILE] && [! -f $ FFILE]; then exit 1 fi # Если резервное копирование завершено, этот сценарий отобразит это и снимет блокировки #, чтобы не было возможности запускаться снова до следующего запуска. если [-f $ FFILE]; затем зеленый $ LCD "Резервное копирование" "** Завершено **" echo "Резервное копирование завершено" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Резервное копирование завершено, очистка, если [$ SHUTDOWN == "1"]; затем введите команду «Выполнение сценария выключения…» /home/orange/shutdown.sh & fi exit 0 fi # С этого момента сценарий выполняется ТОЛЬКО при наличии ПРОДОЛЖАЮЩЕЙСЯ резервной копии # поэтому все ошибки будут распечатаны на ЖК-дисплее и вызовут сценарий # для прерывания, однако при этом не удаляется файл backup.lck, поэтому он будет # заходить сюда снова и снова и оценивать условия. is_mount $ BACKUP_DRIVE если [$ status -ne 0]; затем красный $ LCD «ERR: Backup drive» «не смонтирован!» echo «Резервный диск не смонтирован» выход 1 fi, если [! -s $ TFILE]; затем красный $ LCD "ERR: transfile" "пуст" echo "Файл расчета транспортного размера пуст." выход 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; затем красный $ LCD "ERR: Size readback" "с сервера недопустимое" echo "Резервное общее считывание размера недопустимо 1" exit 1 fi if!

Хотя код прост, вот некоторое описание того, что он делает:

1. Если BFILE или FFILE не существует (что является состоянием после чистого запуска), это указывает на отсутствие процесса резервного копирования, поэтому НЕ делайте ничего, просто завершите работу. Таким образом, вы можете изобразить любую полезную информацию о загрузке, такую как имя хоста, ip, время безотказной работы и т. Д., И это не будет испорчено.

2. Давайте перейдем к разделу is_mount $ BACKUP_DRIVE. Напоминаем, что единственный способ, которым мы здесь оказались, - это то, что было запущено резервное копирование, поэтому BFILE существует. Теперь код просто выполняет различные проверки ошибок, например, смонтирован ли резервный диск? Не превышает ли общий размер того, что мы собираемся создать резервную копию, размер диска? или другие ошибки. Помните, что это программа, предназначенная только для ДИСПЛЕЯ, даже если размер превышает размер резервных копий, она ничего не прервет.

3, ОК, все проверки ошибок очищены, время для расчета процентного графика. Сначала сценарий делает «снимок» пространства, используемого в байтах в файловой системе резервного копирования прямо сейчас, и сохраняет его в VFILE. Какова цель этого: сценарий bash не имеет состояния, он теряет данные между выполнениями, поэтому, если вы хотите «запомнить» некоторые данные из предыдущего выполнения, вам нужно где-то их сохранить. В нашем случае это простой текстовый файл. Для простоты предположим, что наш START_POS составляет 1 ГБ (данные, которые у нас есть), то, что мы хотим сделать резервную копию, составляет +2 ГБ, а общая емкость диска составляет 10 ГБ.

4. В следующий раз, когда скрипт запустит, VFILE существует, и он будет считан обратно (чтобы мы знали, какая была начальная позиция в случае, если диск не был пуст), чтобы вычислить BACKUP_CURRENT, который, по сути, является дельтой используемого сейчас пространства. на резервном диске минус начальная позиция, которую мы сохранили в VFILE в последнем раунде (опять же, это данные, которые у нас были на диске, когда началось резервное копирование). Сценарий внутренне работает с байтами, но, чтобы упростить его, через полчаса мы создали резервную копию данных 500 МБ, тогда формула будет BACKUP_CURRENT = 1,5 ГБ - 1 ГБ (начальное состояние) =>, что возвращает нам именно реальные данные 500 МБ, то есть то, что мы сделали резервную копию до сих пор. Вы можете видеть, что без отслеживания исходных данных в начале резервного копирования этот расчет размера не удастся, потому что он увидит, что используемое сейчас пространство составляет 1,5 ГБ, не зная, что на диске все время находился 1 гигабайт данных. исходящий из предыдущей резервной копии, поэтому предполагается, что сервер отправил нам 1,5 ГБ данных вместо 500 МБ.

5, будет прочитан BACKUP_OVERALL, эти данные были рассчитаны сервером при выполнении первоначального сухого rsync (так что это внешний источник данных, содержащий количество байтов, которые будут скопированы из Server-> OrangeBOX). Это значение будет сравниваться с общим СВОБОДНЫМ пространством на диске в данный момент, и если оно превышает его, на ЖК-дисплее будет отображаться сообщение об ошибке, и скрипт прекратит выполнение. Еще раз помните, что все, что делает этот сценарий, ТОЛЬКО отображается, он не мешает процессу резервного копирования. Если вы очистите файлы на диске или количество файлов изменится удаленно и, следовательно, BACKUP_OVERALL изменится в какой-то момент, он будет продолжен.

6. Наконец, мы закончили проверки второго уровня, пора что-то отобразить. Сценарий отображает данные как на консоли, так и на ЖК-дисплее с помощью простого приложения C. Фон переключается на СИНИЙ, указывая, что резервное копирование, наконец, началось, и прогресс рассчитывается по следующей формуле PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Это базовый процентный расчет, мы берем текущую сумму, в нашем примере 0,5 ГБ * 100/2 ГБ = 25%.

7. Числа также преобразуются из байтов в мегабайты / гигабайты, и экран автоматически отображается в МБ, если он меньше 1 ГБ.

8. В нашем случае осталось лишь отобразить 25% на ЖК-дисплее с 20 столбцами. В нашем примере это будет 25 * 20/100 = 5. В настоящее время реализовано обновление с помощью ЖК-программы, при которой каждый раз, когда вы вызываете программу, она перерисовывает весь экран. Таким образом, в этом случае он будет запускать цикл for 5 раз, чтобы нарисовать 5 хэш-меток # на экране, это будет отображаться как уродливое мерцание в каждом раунде, поэтому вместо этого я записываю вычисленные данные индикатора выполнения в LFILE1 и 2, которые в этом случае после 5 раундов будут содержать #####, и это будет считываться и отображаться на ЖК-дисплее. Вы также можете поместить LFILE1 и 2 на ramdisk, чтобы уберечь SD-карту от дополнительных операций записи, это не вызвало у меня никаких проблем, скрипт запускается раз в минуту из cron.

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

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

Вам нужно будет сгенерировать ssh-ключ для резервной копии и ключ для шифрования luks для диска. Когда вы запускаете удаленное резервное копирование вручную в первый раз, он сохранит отпечаток хоста, выделенный оранжевыми полями, в файл hosts (с этого момента он может запускаться автоматически с помощью cron).

ДИСК = "/ 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.

Основное резервное копирование инициируется как цикл for ((i = 0; i <100; i ++)); сделать, потому что в случае низкого качества DSL / кабельного интернет-соединения rsync может часто прерываться, тайм-аут. Если он завершится успешно, цикл прервется без повторения повторений. Это работает безупречно с хорошими операционными системами, однако, если по какой-то причине удаленный ящик будет окнами, и доступ будет запрещен, как обычно в NTUSER. DAT, тогда rsync вернет код ошибки, и этот цикл будет выполняться 100 раз, а затем все равно завершится ошибкой.

Шаг 5: завершение и список дел

Завершение и список дел
Завершение и список дел
Завершение и список дел
Завершение и список дел

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

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

-Индикатор прогресса мелкого зерна программой C (см. WasserStation один из моих других проектов). Прямо сейчас в символьном режиме с lcdPuts (lcd, line1) используются только символы # hashmark #, это можно улучшить даже при использовании символьных ЖК-дисплеев для разделения 1 столбца на 5 частей, а основная программа C может просто взять целое число, например 25, и вывести индикатор выполнения правильно или улучшен с помощью графического ЖК-дисплея

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

-Если вы хотите напечатать свой корпус с помощью makerbot, OrangeNAS может быть вам интересен:

Рекомендуемые: