Автоматическая отправка бэкапа Home Assistant в Telegram
### Установка inotify
sudo apt-get update
sudo apt-get install inotify-tools curl -y
nano /usr/local/bin/ha-backup-watcher.sh #Добавить содержимое сниппета
chmod +x /usr/local/bin/ha-backup-watcher.sh
### Добавим демона
nano /etc/systemd/system/ha-backup-watcher.service # вставить содержимое ↓
#### Конфиг
```
[Unit]
Description=HA Backup to Telegram
After=network.target
[Service]
ExecStart=/usr/local/bin/ha-backup-watcher.sh
Restart=always
User=homeassistant
Group=homeassistant
[Install]
WantedBy=multi-user.target
```
### Запуск
sudo systemctl daemon-reload
sudo systemctl enable --now ha-backup-watcher.service
#!/bin/bash
BACKUP_DIR="/var/lib/homeassistant/backup"
BOT_TOKEN="ТОКЕН_ТВОЕГО_БОТА"
CHAT_ID="ТВОЙ_CHAT_ID"
STABLE_CHECKS=3 # сколько раз подряд размер должен совпасть
CHECK_INTERVAL=10 # интервал проверки (сек)
inotifywait -m -e create -e moved_to --format "%f" "$BACKUP_DIR" | while read FILENAME
do
if [[ "$FILENAME" == *.tar ]]; then
FILEPATH="$BACKUP_DIR/$FILENAME"
START_TIME=$(date +%s)
echo "$(date) Новый бэкап: $FILEPATH"
# ждём пока файл "замрёт" по размеру
stable_count=0
last_size=0
while true; do
size=$(stat -c %s "$FILEPATH" 2>/dev/null || echo 0)
if [[ "$size" -eq "$last_size" && "$size" -gt 0 ]]; then
((stable_count++))
else
stable_count=0
fi
last_size=$size
if [[ $stable_count -ge $STABLE_CHECKS ]]; then
break
fi
sleep $CHECK_INTERVAL
done
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
# собираем инфу
FILESIZE=$(du -h "$FILEPATH" | cut -f1)
FILEDATE=$(stat -c %y "$FILEPATH" | cut -d'.' -f1)
FILEHASH=$(sha256sum "$FILEPATH" | awk '{print $1}')
CAPTION="📦 Новый бэкап готов
🗄 Имя файла: $FILENAME
📏 Размер: $FILESIZE
⏰ Дата создания: $FILEDATE
🔑 SHA256: $FILEHASH
⏳ Время до готовности: ${DURATION} сек."
curl -s -F document=@"$FILEPATH" \
-F chat_id="$CHAT_ID" \
-F caption="$CAPTION" \
"https://api.telegram.org/bot$BOT_TOKEN/sendDocument" \
>/dev/null
echo "$(date) Отправлено в Telegram: $FILENAME ($FILESIZE)"
fi
done