Безопасный бэкап контроллера

Здравствуйте, мое начальство требует обеспечит быстрое восстановление всех настроек на контроллере WB7. На нем помимо системных настроек есть Docer и Home asistant. Настройки которых тоже надо восстанавливать. Почитал техподдержку и нашел только метод с помощью dd .
Создал директорию “flash” в папке mnt
Далее смонтировал в нее USB
mount /dev/sda1 /mnt/flash
записал на USB командой
dd if=/dev/mmcblk0 of=/mnt/flash/mmcblk0-backup.img
Файл записался, но потом я обнаружил на форуме, что другой человек использует команду
dd if=/dev/mmcblk0p6 of=/mnt/flash/mmcblk0p6-backup.img
А далее обнаружил тему Ошибка после восстановления
Не хотелось бы превращать контроллер в кирпич, можно ли узнать точные команды dd, которые надо использовать на контроллере WB7 и безопасно ли это будет, а если не безопасно, то в каких именно случаях. И возможна ли ситуация, что ты все сделал правильно, а контроллер все равно умер? Если же за это время появились какие-то другие более безопасные способы восстановления, то хотелось бы о них узнать.

Тема бекапа поднимается постоянно. Но WB пока не реализовал …

Бекап по сути можно делать двумя основными путями: снаружи и изнутри.

Снаружи.
Нужно выключить контроллер. Загрузиться с чего-то другого (а у контроллера есть загрузчик). С помощью этого другого сделать полную копию диска (например, с помощью dd) …
Восстановление аналогично.

Почему так? Какие-то данные находятся в памяти. И если делать бекап работающей системы, то кроме диска нужно сохранить и оперативную память в тот же самый момент времени …
А с восстановлением сложнее: перезаписать открытые и использующиеся в данный момент файлы (контроллер работает) невозможно (не реально).

Изнутри.
Пишется скрипт, который:

  • обновляет систему
  • копирует/восстанавливает (желательно с историей изменений) все конфигурационные (и не только) файлы
  • устанавливает нужные пакеты и сервисы

Так как кто и что поставил WB “не знает” и не может контролировать, за задачу идти вторым путем WB не берется. Но она решаема вполне, в том числе автоматически. Но не простая система (и вообще системы бэкапа стоят немало денег на самом деле)

Первый путь имеет серьезный недостаток - для создания бекапа контроллер нужно перезагружать.
Но почему WB не реализует первый путь … совершенно непонятно. (второй путь не отменяет первого, и вообще, бекапов мало не бывает)

1 лайк

И получить кирпич в итоге.
Это - довольно плохая и совершенно негодная рекомендация.
Для того чтобы делать подобное нужно изучить Обновление прошивки, информация для разработчиков — Wiren Board как минимум и работать только и исключительно с разделами никак не меняя данные вокруг.
И восстанавливать только и исключительно на тот же контроллер с которого был снят дамп.

Добрый день.

Типовой путь: Резервное копирование настроек контроллера — Wiren Board

Нет.
Во-первых небезопасно, во-вторых - ненадежно и избыточно.

Нет никакого смысла сохранять “стандартные” файлы ОС, например.
Ну и задача “восстановить работоспособность” соответственно делится (у меня) на этапы.

Для примера, у меня на стенде постоянно сбрасываются и перенастраиваются контроллеры.
Для того чтобы привести контроллер в “известное” состояние после разных манипуляция использую двойной подход.
Первая часть - это базовые настройки. Такие как отключение wi-fi, добавление на контроллер RSA-ключей.
Для этой цели использую Настройка контроллера с помощью Ansible — Wiren Board

Второй этап: восстановление предварительно сделанного бэкапа стандартных конфигов.
Бэкап делаю так:

FILENAME="backup_`uname -n`_`date '+%Y-%m-%d'`.tar"
tar -zcvf /root/$FILENAME /mnt/data/etc /root/zigbee2mqtt/data
scp /root/$FILENAME sysadmin@10.0.0.7:/mnt/data1/temp/backups/
rm /root/$FILENAME

Ну и разворачиваю его вот прямо как в статье описано.
Естественно, если у вас используется какое-либо дополнительное ПО - то его конфиги и базы данных надо архиивировать. Само ПО - естественно проще поставить снова.
Для HA, к примеру - устанавливаю docker с помощью ansible, затем распаковываю конфиг HA.
Весь процесс (без учета выкачивания образа HA) - занимает пару минут и не требует никакого внимания.

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

Ни разу не сталкивался, если не учитывать применение dd. И как раз его не рекомендую.

Для восстановления “стандартного” ПО - как разз описано в статье. Бэкап конфигов - их восстановление.
Для любого стороннего, установленного на контроллер - надо добавлять их в план архивирования.
У меня получилось ответить на вопрос?

Именно.
И на этих разделах не должно быть файлов, которые меняются прямо сейчас.

Это единственный способ получения бекапа “правильный” и полный.
Но тут важно не трогать загрузчик и … знать аппаратную часть того что восстанавливаешь (есть особенности)

Да. Это как имевший опыт неудачного восстановления копии, сделанной dd, раздела с БД могу подтвердить.

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

Это 2 способ описал.
Он не совсем универсален, к сожалению. Так как первым действием будет обновить пакеты системы (с устаревшими еще больше проблем может быть, чем на момент бекапа), …
Но идеально - точно такой же версии!
Поэтому нужно еще делать бекап версий всех пакетов и возвращать их в то же самое состояние.

Но опыт показывает, что это тоже не дает гарантий.

Гарантированный только первый способ (вариант dd), но очень сложен …

Теоретически этот способ может быть встроен в загрузчик, тогда бэкап выглядит так:

  • вставить пустую флешку … в USB
  • кнопка в веб интерфейсе (команда в консоли)
  • самостоятельная перезагрузка контроллера и загрузчик выполняет бекап на указанную флешку (в том числе того, что находится на микро SD) …

Восстановление точно в том же порядке (кроме варианта восстановления загрузчика)

Это уедет гарантированно. Полностью. И жутко неудобно (+ и тут есть особенности и может попасть не все).

А во втором варианте, более менее гарантированно, если дополнительные все возможные пакеты (докер, HA …) ставятся штатно и поддерживаются (тогда и версия "последняя2 подойдет …). но это требует много работы WB … и не всем нужно.

Универсальным способом было бы добавить в веб интерфейс контроллера возможность управления со входов модулей не только своими реле, но и реле других модулей, ну и логику добавить. сделать по функционалу похожим на HDL-BUS. Так же добавить в него подключение к яндекс облаку и вуаля готовый умный дом без всяких прокладок типа Home asistant. И проблемы с бэкапом сразу решаться ибо посторонних программ можно будет не добавлять, система будет сама в себе.