понедельник, 13 сентября 2021 г.

Domoticz. Резервное копирование

В документации к Domoticz описаны несколько вариантов копирования, но почему-то нет самого очевидного варианта с SMB. Набросал простой скрипт для резервного копирования базы domoticz.db на общий сетевой диск. В моём случае это общая папка на роутере keenetic. Внимательно читаем официальную инструкцию как расшарить диск и правильно назначить права на шару. Скрипт размещу на самом сервере Domoticz. 

Ставим необходимые пакеты

sudo apt-get install cifs-utils

На сервере domoticz внесем изменения в fstab чтобы монтировать общий диск backup. Добавим строчку

sudo nano /etc/fstab 
//10.0.0.1/Backup /media/backup cifs username=name,password=pwd,uid=1000,gid=1000,nofail 0 0

//10.0.0.1/Backup - путь до сетевой папки

/media/backup - точка монтирования на сервере

cifs - тип файловой системы

username=name,password=pdw,uid=1000,gid=1000,nofail - параметры монтирования сетевой диска 

!РЕКОМЕНДУЮ обязательно добавлять nofail для продолжения загрузки сервера в случае ошибок при монтировании (недоступность сетевой папки)

Перезагружаемся и проверяем содержимое

ls /media/backup

Создаем новый скрипт в папке domoticz (актуальная версия)

cd domoticz\sctipts&&nano domoticz-backup.sh
#!/bin/bash
# Задаем переменные с настройками доступа к серверу Domoticz и пути к файлам
D_IP="localhost"
D_PORT="505"
D_DEST="/media/backup/Domoticz"
D_SRC="/home/pi/domoticz/"
FIND="/usr/bin/find"

# Задаем формат именования файлов для копирования
D_DATABASE="$(date '+%Y%m%d')_database.db"
D_SCRIPTS="$(date '+%Y%m%d')_scripts.tar.gz"
D_PLUGINS="$(date '+%Y%m%d')_plugins.tar.gz"

# Создаем файл и перемещаем его на примонтированный сетевой диск
/usr/bin/curl -s http://$D_IP:$D_PORT/backupdatabase.php > $D_DEST/$D_DATABASE

# Архивируем данные
gzip -9 $D_DEST/$D_DATABASE --force
tar -zcvf $D_DEST/$D_SCRIPTS $D_SRC/scripts/ --ignore-failed-read
tar -zcvf $D_DEST/$D_PLUGINS $D_SRC/plugins/ --ignore-failed-read

# Удаляем файлы бэкапов старше 14 дней
$FIND $D_DEST -name '*.gz' -mtime +14 -delete
Делаем файл исполняемым
chmod +x domoticz_backup.sh
Добавляем в cron выполняться раз в день
crontab -e
0 1 * * * /home/pi/domoticz/scripts/domoticz-backup.sh >/dev/null 2>&1

Комментариев нет :

Отправить комментарий