Без бэкапа — начинаете с нуля. С бэкапом — восстанавливаетесь за полчаса. Правило 3-2-1 гарантирует, что бэкап будет, когда он понадобится.
Вы потратили месяцы на настройку Home Assistant. Десятки автоматизаций, сотни сущностей, интеграции, дашборды, история показаний за год. Zigbee2MQTT с привязанными устройствами. Grafana с дашбордами. Docker Compose-файл, вылизанный до идеала. И вот однажды SD-карта в Raspberry Pi тихо умирает. Или SSD отказывает. Или вы случайно запускаете docker compose down -v вместо docker compose down и сносите все тома с данными.
Правило 3-2-1 — стратегия резервного копирования, сформулированная фотографом Питером Крогом, а затем принятая в ИТ-индустрии как базовый стандарт. Три цифры — три принципа.
3 копии данных. Оригинал и две резервные копии. Одна копия — не бэкап, а иллюзия безопасности. Два независимых бэкапа дают реальную защиту: если одна копия повреждена или недоступна — есть вторая.
2 разных типа носителей. Копии хранятся на физически разных устройствах. Не две копии на одном диске и не два раздела на одном SSD. Если диск отказал — обе копии на нём потеряны одновременно. Разные носители: SSD сервера + внешний жёсткий диск, NAS + USB-накопитель, локальный диск + облако.
1 копия вне дома (offsite). Одна из копий — за пределами вашего физического местоположения. Пожар, затопление, кража, скачок напряжения — любое событие, которое уничтожает всё оборудование в квартире, не должно уничтожить все копии. Облачное хранилище, диск у родственников, VPS — что угодно, лишь бы не в том же здании.
Три — два — один. Просто запомнить. Сложнее — дисциплинированно выполнять.
Не всё на сервере одинаково ценно. Систему можно переустановить. Docker-образы — скачать заново. А вот конфигурацию и данные — нет. Определим, что именно нужно сохранять.
docker-compose.yml — описание всей инфраструктуры. Потерять его — потерять схему, по которой всё собрано. Восстанавливать по памяти — мучительно.
Конфигурация Home Assistant — директория /config. Автоматизации, скрипты, сцены, дашборды, интеграции, configuration.yaml, automations.yaml, secrets.yaml, кастомные компоненты. Это сердце умного дома. Месяцы работы.
Данные Zigbee2MQTT — директория /app/data. Файл coordinator_backup.json содержит ключ сети и список привязанных устройств. Без него при переезде на новый координатор придётся переподключать каждое Zigbee-устройство вручную. Каждое. По одному.
Конфигурация Mosquitto — mosquitto.conf, файл паролей, ACL. Немного файлов, но без них MQTT-брокер не примет клиентов.
Конфигурация Frigate — config.yml. Зоны, маски, настройки камер, детекторов, записи.
Файл .env — секреты, пароли, токены. Если используете.
База данных InfluxDB — история показаний датчиков за месяцы или годы. Функционально умный дом будет работать и без неё — но графики в Grafana станут пустыми, а анализ трендов — невозможным.
Дашборды Grafana — если вы потратили время на красивые графики, терять их обидно. Grafana хранит дашборды в своей базе данных (SQLite по умолчанию) или в примонтированной директории.
База данных Home Assistant — home-assistant_v2.db. История состояний за последние дни (по умолчанию — 10 дней). Не критична для работы, но приятна для восстановления истории.
Docker-образы. Скачиваются заново за минуты. В docker-compose.yml указаны теги — этого достаточно.
Операционную систему. Переустановка Debian/Ubuntu — полчаса. Docker — пять минут. Проще поставить заново, чем восстанавливать из образа диска (хотя полный образ — тоже вариант).
Логи. Полезны для отладки, но не для восстановления. Исключение — если вы храните логи для соблюдения каких-то требований.
Это ваш рабочий сервер. SSD мини-ПК, жёсткий диск NAS, SD-карта Raspberry Pi (хотя SD-карты для сервера — плохая идея, об этом ниже). Здесь данные живут и работают.
Копия на другом физическом устройстве в том же доме. Варианты:
NAS (Synology, QNAP, самосборный). Если сервер умного дома — мини-ПК, а в сети есть NAS — бэкап на NAS. Разные устройства, разные диски. Отказ SSD в мини-ПК не затронет NAS.
Внешний USB-диск. Подключён к серверу или к NAS. Самый бюджетный вариант. Внешний HDD на 1 ТБ стоит около 4000–5000 рублей и вмещает тысячи бэкапов конфигурации умного дома.
Второй внутренний диск. Если сервер позволяет установить два накопителя — основной SSD для работы, второй HDD или SSD для бэкапов.
Другой компьютер в сети. Старый ноутбук, другой Raspberry Pi, рабочий ПК. Rsync по сети — и копия готова.
Копия за пределами вашего дома. Варианты:
Облачное хранилище. Яндекс Диск, Google Drive, Backblaze B2, Wasabi, S3-совместимые хранилища. Для конфигурации умного дома (без InfluxDB) объём — десятки мегабайт. Даже бесплатного тарифа хватит.
VPS/VDS. Если у вас есть арендованный сервер — копируйте бэкапы туда.
Физический диск у родственников / в офисе. Раз в месяц копируете на USB-диск и отвозите. Олдскульно, но работает. Защищает от пожара и затопления лучше любого облака.
Зашифрованный бэкап в облаке. Если данные чувствительны (пароли, конфигурация камер, ключи Zigbee-сети) — шифруйте перед отправкой. Restic и Borg шифруют по умолчанию.
Самый простой вариант, не требующий установки дополнительного софта.
Локальный архив:
bash#!/bin/bash
# backup.sh — скрипт резервного копирования
BACKUP_DIR="/backup"
SOURCE="/opt/smarthome"
DATE=$(date +%Y%m%d-%H%M)
# Останавливаем контейнеры для консистентности
cd $SOURCE
docker compose stop
# Создаём архив
tar czf ${BACKUP_DIR}/smarthome-${DATE}.tar.gz \
--exclude='*/log/*' \
--exclude='*/mosquitto/log/*' \
-C / opt/smarthome/
# Запускаем обратно
docker compose start
# Удаляем бэкапы старше 30 дней
find ${BACKUP_DIR} -name "smarthome-*.tar.gz" -mtime +30 -delete
echo "Backup completed: smarthome-${DATE}.tar.gz"
Копирование на удалённый сервер:
bash# Отправить последний бэкап на удалённый сервер
rsync -avz ${BACKUP_DIR}/smarthome-${DATE}.tar.gz user@remote-server:/backup/smarthome/
Копирование на NAS по сети:
bash# Монтируем сетевую шару NAS (один раз)
sudo mount -t cifs //nas.local/backup /mnt/nas-backup -o username=backup,password=secret
# Копируем
cp ${BACKUP_DIR}/smarthome-${DATE}.tar.gz /mnt/nas-backup/smarthome/
Restic — инструмент резервного копирования с дедупликацией, шифрованием и поддержкой множества хранилищ (локальный диск, SFTP, S3, Backblaze B2, Google Cloud, Azure).
Установка:
bashsudo apt install restic
Инициализация репозитория (один раз):
bash# Локальный
restic init --repo /backup/restic-repo
# Или на Backblaze B2
export B2_ACCOUNT_ID="your-account-id"
export B2_ACCOUNT_KEY="your-account-key"
restic init --repo b2:your-bucket-name:smarthome
Restic попросит задать пароль для шифрования. Запомните его или сохраните в надёжном месте — без пароля данные не восстановить.
Бэкап:
bashcd /opt/smarthome
docker compose stop
restic backup \
--repo /backup/restic-repo \
--exclude='*/log/*' \
/opt/smarthome/
docker compose start
Автоматическое удаление старых копий:
bashrestic forget \
--repo /backup/restic-repo \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
--prune
Хранить: 7 ежедневных, 4 еженедельных, 6 ежемесячных. Остальное — удалить.
Восстановление:
bashrestic restore latest --repo /backup/restic-repo --target /opt/smarthome-restored/
Плюсы Restic: дедупликация (повторяющиеся данные не дублируются, бэкапы занимают мало места), шифрование (данные зашифрованы AES-256), инкрементальность (после первого полного бэкапа копируются только изменения — быстро).
Аналогичный инструмент с дедупликацией и шифрованием. Чуть старше Restic, чуть быстрее на некоторых операциях, чуть менее удобен с облачными хранилищами. Выбор между Restic и Borg — дело вкуса. Оба отлично справляются.
Home Assistant OS и Supervised имеют встроенную функцию бэкапа: Settings → System → Backups → Create Backup. Создаётся полный или частичный снимок, включающий конфигурацию, аддоны и (опционально) базу данных.
Для Home Assistant Container (Docker) этой функции нет — бэкап делается вручную, как описано выше.
Даже если вы используете встроенный бэкап HAOS — не полагайтесь только на него. Бэкап хранится на том же диске, что и система. Диск умер — бэкап умер вместе с ним. Копируйте бэкапы HAOS на внешний носитель. Аддоны Home Assistant (например, Samba Backup, Google Drive Backup) автоматизируют это: создают бэкап и копируют на сетевой диск или в облако.
Бэкап, который нужно делать вручную, не будет делаться. Автоматизируйте.
bashcrontab -e
Добавьте:
bash# Ежедневный бэкап в 3:00
0 3 * * * /opt/smarthome/backup.sh >> /var/log/backup.log 2>&1
# Еженедельная отправка на удалённый сервер (воскресенье, 4:00)
0 4 * * 0 rsync -avz /backup/smarthome/ user@remote:/backup/smarthome/
ini# /etc/systemd/system/smarthome-backup.service
[Unit]
Description=Smart Home Backup
[Service]
Type=oneshot
ExecStart=/opt/smarthome/backup.sh
ini# /etc/systemd/system/smarthome-backup.timer
[Unit]
Description=Daily Smart Home Backup
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
bashsudo systemctl enable smarthome-backup.timer
sudo systemctl start smarthome-backup.timer
Добавьте в конец скрипта бэкапа отправку уведомления — через curl в Telegram, через MQTT в Home Assistant, через любой удобный канал:
bash# Уведомление в Home Assistant через REST API
curl -s -X POST \
-H "Authorization: Bearer YOUR_LONG_LIVED_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Бэкап завершён: smarthome-'${DATE}'.tar.gz"}' \
http://localhost:8123/api/services/notify/mobile_app_your_phone
Или проще — через MQTT:
bashmosquitto_pub -h localhost -u backup -P password \
-t "homeassistant/notification/backup" \
-m "Бэкап завершён: smarthome-${DATE}.tar.gz"
В Home Assistant создайте автоматизацию, которая слушает этот топик и отправляет уведомление на телефон.
Ещё важнее — уведомление об ошибке. Если бэкап не выполнился — вы должны об этом узнать.
Бэкап, который не проверен, — не бэкап, а надежда. Периодически проверяйте, что данные восстанавливаются.
Раз в несколько месяцев — разверните бэкап на тестовом окружении и убедитесь, что всё работает.
bash# Создайте тестовую директорию
mkdir /tmp/restore-test
cd /tmp/restore-test
# Распакуйте последний бэкап
tar xzf /backup/smarthome-20260305-0300.tar.gz
# Проверьте, что файлы на месте
ls -la opt/smarthome/
ls -la opt/smarthome/homeassistant/config/
ls -la opt/smarthome/zigbee2mqtt/data/
# Убедитесь, что ключевые файлы читаемы
cat opt/smarthome/docker-compose.yml
cat opt/smarthome/homeassistant/config/configuration.yaml
Для полного теста — поднимите контейнеры из бэкапа на другом порту или другой машине и убедитесь, что Home Assistant стартует.
bashrestic check --repo /backup/restic-repo
Restic проверит целостность всех данных в репозитории. Делайте это регулярно — особенно для удалённых хранилищ.
Копия 1 (оригинал): SSD сервера, /opt/smarthome/
↓
Ежедневный скрипт backup.sh (cron, 3:00)
↓
Копия 2 (локальная): NAS или внешний HDD, /backup/smarthome/
↓
Еженедельный rsync или Restic (cron, воскресенье 4:00)
↓
Копия 3 (удалённая): Облако (Backblaze B2 / Яндекс Диск)
или диск у родственников
Три копии. Два типа носителей (SSD + HDD/NAS, или SSD + облако). Одна копия за пределами дома. Правило 3-2-1 выполнено.
Чеклист — распечатайте или сохраните.
docker-compose.yml.env (секреты, пароли, токены)config/ (вся директория)data/ (особенно coordinator_backup.json)config/ (конфигурация + файл паролей)config.yml + база данных frigate.dbdata/ (дашборды, настройки)data/ (история показаний)conf/ (настройки, списки фильтрации)data/ (потоки)data/ + letsencrypt/ (сертификаты)Raspberry Pi с SD-картой — популярная конфигурация для Home Assistant. И самая ненадёжная для хранения данных. SD-карты имеют ограниченный ресурс записи. Home Assistant, InfluxDB, Frigate непрерывно пишут данные. SD-карта изнашивается за 6–18 месяцев активного использования. Иногда — быстрее.
Если используете Raspberry Pi — подключите SSD через USB (для Pi 4/5 работает штатно). Если SSD не вариант — хотя бы делайте бэкапы чаще (ежедневно) и на внешний носитель. SD-карта умрёт не «если», а «когда».
«У меня есть бэкап» → бэкап на том же диске. Это не бэкап. Диск умер — и оригинал, и «бэкап» потеряны.
«Я делаю бэкап раз в месяц». Месяц работы — потерян. Для конфигурации, которая меняется активно — ежедневный бэкап. Для стабильной системы — минимум еженедельный.
«Бэкап работает, я проверял год назад». Проверяйте регулярно. Скрипт мог сломаться. Диск мог заполниться. Пароль от облака мог смениться.
Бэкап без шифрования в облаке. secrets.yaml с паролями, конфигурация камер с адресами, ключ Zigbee-сети — всё это не должно лежать в открытом виде в облаке. Restic и Borg шифруют по умолчанию. Для tar — шифруйте GPG перед отправкой.
Нет уведомлений об ошибках. Скрипт бэкапа упал три недели назад, а вы не знаете. Настройте уведомление о каждом успешном и неуспешном бэкапе. Отсутствие уведомления об успехе — тоже повод для беспокойства.
Хранение пароля Restic/Borg только в голове. Забыли пароль — бэкап зашифрован навсегда. Запишите пароль в менеджере паролей (KeePass, Bitwarden) и/или на бумаге в сейфе.
Правило 3-2-1 — это не техническое требование, а дисциплина. Технически — один скрипт на 15 строк и запись в crontab. Практически — уверенность в том, что любой сбой, от сгоревшего SSD до пожара, не уничтожит результаты месяцев работы.
Настройте бэкап сегодня. Не завтра. Не «когда будет время». Сегодня. Скопируйте скрипт из этой статьи, подставьте свои пути, добавьте в cron. Тридцать минут — и ваш умный дом защищён.
Потому что вопрос не в том, потеряете ли вы данные. Вопрос в том, когда. И будет ли у вас бэкап в этот момент.
Статья подготовлена на основе документации Restic, Borg Backup, Docker и материалов сообщества Home Assistant. Все упомянутые торговые марки принадлежат их правообладателям. Материал носит информационный характер и не является рекламой.