Backup контроллера WB7 и 8 с установленным сторонним ПО

Подскажите, возможно ли сделать полный бэкап контроллера с установленным сторонним ПО? На контроллере установлен docker и Home Assistant в контейнере.

  1. возможно ли забэкапить контроллер как образ дисковой системы, например при помощи Acronis True Image? Не возникнут ли потом какие-то проблемы с восстановлением из образа? с одной стороны это миниПК с установленным Linux, но переживаю, не превратится ли контроллер в кирпич или что-то уйдет в рассинхрон, когда будут восстанавливаться системные файлы.
  2. если такой вариант бэкапа допустимый, не могли бы дать рекомендации каким методом лучше всего это сделать? предполагаю следующий сценарий: создаю загрузочный образ акрониса на флешку, вставляю загрузочную флешку в usb порт контроллера, далее каким-то образом нужно указать приоритет загрузки с флешки(???), делаю рестарт контроллера и подключившись через debug port получаю доступ к GUI Acronis (выполняю стандартный бэкап ОС с дисками на эту же флешку). Рабочий вариант или не взлетит?

P.S. очень хочется создать полный образ контроллера, на HA уже много настроек которые тоже хотелось бы сохранить. Бэкапить все это добро по отдельности и потом синхронизировать выглядит не очень рационально.

Добрый день.
Вопрос довольно подробно обсуждался: Безопасный бэкап контроллера

Не очень понимаю, простите… А что такое “Acronis”?

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

По сути dd с gui

Поискал, да, похоже на то.
Ну, тут весьма-весьма амбициозный проект, я с трудом могу себе представить как вывести GUI в консоль.
Если загрузка с флешки, в принципе, вполне осуществима и используется - то остальное мне кажется усложнением.

а Х-ы через консоль не получится пробросить?
Debug port не аналог видео порта, он только терминальную сессию пробрасывает?

Ну, теоретически возможно…

Нет, не аналог. Просто последовательный порт.

1 лайк

Есть ощущение что если слепо следовать этой инструкции, то бэкап получится неконсистентным. Ну и про “несколько строчек” мне кажется тут немного упрощенно выглядит.
На мой взгляд полный бэкап для начала должен предполагать остановку процессов (в частности контейнера HA или его можно на ходу бэкапить?), потом бэкап отдельных директорий (в инструкции речь только про “/mnt/data/etc”, больше нигде данные/настройки не хранятся?

если конфиги самого HA не меняются (не редактируются) в момент бэкапа - вполне можно без остановки. Только БД потенциально может быть неконсистентной. Но - всегда можно выполнить бэкап штатными средствами самого HA и забрать файл.
То есть единственный потенциально опасный элемент - БД.

Для штатного ПО контроллера - больше нигде.
Ну и они не меняются автоматически, только путем редактирования и сохранения из веб-интерфейса.

У меня сложился такой алгоритм действий, не могли бы вы дать свою оценку:

Порядок создания полного бэкапа контроллера с docker контейнером HA

  1. останавливаю контейнер:
docker ps -a
docker stop contatiner_id
  1. выполняю бэкап директорий с конфигами и контейнером HA:
tar -zcvf /mnt/data/etc_full_bkp_`date '+%Y-%m-%d'`.tar /mnt/data/etc
tar -zcvf /mnt/data/HA_full_bkp_`date '+%Y-%m-%d'`.tar /mnt/data/.HA
tar -zcvf /mnt/data/docker_full_bkp_`date '+%Y-%m-%d'`.tar /mnt/data/.docker
  1. Выполняю бэкап rootfs из web консоли WB

  2. запускаю контейнер:
    docker start contatiner_id

  3. выношу бэкапы с контроллера

Порядок восстановления:

  1. останавливаю контейнер:
    docker stop contatiner_id
  2. Выполняю восстановление rootfs из web консоли WB (на этом шаге ли после конфигов?)
  3. выполняю восстановление директорий с конфигами и контейнером HA:
tar --overwrite -xvpf /mnt/data/etc_full_bkp_2024-12-12.tar -C /
tar --overwrite -xvpf /mnt/data/HA_full_bkp_2024-12-12.tar -C /
tar --overwrite -xvpf /mnt/data/docker_full_bkp_2024-12-12.tar -C /

docker start contatiner_id

Вопросы:

  1. Алгоритм/команды верные? rootfs восстанавливается до конфигов и нужно ли его вообще бэкапить?

  2. Что-то еще из директории /mnt/data бэкапить? или еще из каких-то директорий? состав директории следующий:

root@wirenboard:/mnt/data# ls -la
total 40
drwxr-xr-x 10 root     root     4096 Jun 17 14:16 .
drwxr-sr-x  4 root     root     4096 Jun 18  2023 ..
drwxr-xr-x  7 root     root     4096 Dec  6 11:03 .HA
drwx--x--- 12 root     root     4096 Oct 30 16:03 .docker
drwxr-xr-x  2 root     root     4096 Jan  1  1970 .wb-restore
drwxr-xr-x  2 www-data www-data 4096 Jan  1  2020 .wb-update
drwxr-xr-x 12 root     root     4096 Aug  6 15:44 etc
drwx--S---  5 root     root     4096 Dec 11 13:48 root
drwxr-xr-x  2 www-data www-data 4096 Dec 20  2023 uploads
drwxr-xr-x  5 root     root     4096 Jan  1  2020 var
root@wirenboard:/mnt/data# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  990M  838M  55% /
devtmpfs        998M     0  998M   0% /dev
tmpfs          1007M     0 1007M   0% /dev/shm
tmpfs           403M  1.4M  402M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/mmcblk0p6   55G  9.3G   43G  18% /mnt/data
overlay          55G  9.3G   43G  18% /mnt/data/.docker/overlay2/ba96584351356fe01e0a71sdf534fa917a7f4/merged
tmpfs           202M     0  202M   0% /run/user/0
  1. в инструкции https://wirenboard.com/wiki/Wiren_Board_Web_Interface#backup раздел “Резервная копия”, есть опция “скачать все”, в моей версии прошивки контроллера wb-2401 данную опцию не вижу (видимо устарела, буду обновлять после бэкапа). Подскажите, с какой версии доступна данная опция и заменяет ли она все описанные мною в виде команд действия? т.е могу ли я ее использовать как альтернативу (предварительно остановив контейнер HA)?

P.S. прошу прощения за дотошность, но с бэкапами лучше разобраться хорошо до того как они понадобятся))

Раздел нельзя восстановить из веб-интерфейса.

А это по большей степени бесполезно (только место занимать), сам контейнер проще ведь поставить.

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

С 2404 по-моему.
Нет, это именно образ системного раздела, с точки зрения восстановления он бесполезен, но может пригодиться если что-то устанавливалось именно в него.
Ну и - если стоит zigbee2mqtt - то его конфиг лежит в /root/zigbee2mqtt/
Я бы сохранил вообще все файлы из разделов, перед тем как обновляться.

может я не совсем понял идею. У меня в HA настроены правила, интеграции, дашборды, если я поставлю контейнер с нуля там же всего этого не будет.

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

  • Скачать всё — соберёт в архив всё, что есть на контроллере: файлы конфигурации, установленный софт и т.п. Самый большой архив, зато позволяет сохранить конфиги стороннего софта, который мы не включили в компактный архив с файлами конфигурации.

Есть понимание какие разделы бэкапит эта опция? или речь про то что он бэкапит тот же раздел (rootfs) просто большее количество файлов из этого раздела захватывает?
P.S. к сожалению не могу проверить у себя.

Контейнер - статичен и не меняется совсем, то есть никогда. Все что настроено - лежит в монтируемом в него каталоге, то еть идеология докера - данные отдельно от контейнера.


ё
Собственно вызываются три скрипта:

/usr/lib/cgi-bin/download_rootfs.sh
/usr/lib/cgi-bin/download_configs.sh
/usr/lib/cgi-bin/download_everything.sh

Результат работы третьего - это tar --one-file-system -cf - / /mnt/data
То есть как раз архив файлов двух разделов.

то есть данная функция в WB консоли позволяет как раз бэкапить все содержимое в разделе /mnt/data/ (включая стороннее ПО и нужные мне директории etc, .HA, .docker и т.д.), т.е. по факту является альтернативой моего скрипта, верно?

P.S. По поводу контейнера “услышал”, спасибо за пояснение

В общем - да, но размер такого архива - посто огромен.

1 лайк

Кстати дополню, в консоли Home Assistant с 22ого года появился функционал, позволяющий делать бэкап конфигов HA работающего из контейнера через GUI/Web интерфейса (Раздел: Настройки->Система->Резервные Копии), создает бэкап и тарит его в домашнуюю директорию HA (в каталог backup), более подробно на видео (англ):

Ну да, вполне можно использовать. Так и сам делаю.