Files
mates-server-maintenance/scripts/docker-zalohy.sh
T
mates 1eede74dc6 fix: odstranit emoji ze vsech souboru
Kompletne odstraneno:
- Emoji (smajliky, symboly, boxes, arrows) z README
- Emoji ze skriptu (sipky, symboly)
- Emoji z docker-compose (adresare)

Nahrano za:
- Textove alternativy (sipky -> '->', boxes -> '+', atd.)
- ASCII pouze kde to slo

Ciste vsechny 7 repo (overeno Python skriptem).
2026-08-02 08:50:13 +02:00

109 lines
2.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
#
# docker-zalohy.sh - zaloha Docker Compose projektu a jejich dat (./data adresaru)
# na NAS (nebo jiny backup disk) + Telegram notifikace.
#
# Spust jednou rucne: bash docker-zalohy.sh
# Spust automaticky: systemd timer docker-zalohy.timer (kazde utery 20:00)
#
# Konfigurace: /home/mates/.telegram.conf
# Log: /home/mates/zalohy/docker/docker.log
#
set -euo pipefail
# === KONFIGURACE ===
USER_NAME="mates"
WORK_DIR="/home/$USER_NAME"
SOURCE_DIR="$WORK_DIR/docker"
BACKUP_DIR="$WORK_DIR/zalohy/docker"
LOG_FILE="$BACKUP_DIR/docker.log"
CONFIG_FILE="$WORK_DIR/.telegram.conf"
# Seznam sluzeb k zalohovani (uprav podle potreby)
APP_DIRS=(
audiobookshelf
calibre-web
flatnotes
homeassistant
jswiki
miniflux
nginx
plex
speedtest
vaultwarden
wiki
glance
)
DATE_DIR=$(date +"%Y%m%d")
TIMESTAMP=$(date +"%H%M%S")
HOST=$(hostname)
# === TELEGRAM KONFIGURACE ===
if [[ -f "$CONFIG_FILE" ]]; then
# shellcheck disable=SC1090
source "$CONFIG_FILE"
fi
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-}"
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID:-}"
# === TELEGRAM HELPER ===
send_msg() {
local TEXT="$1"
if [[ -z "$TELEGRAM_BOT_TOKEN" || -z "$TELEGRAM_CHAT_ID" ]]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Telegram neni nakonfigurovan, preskakuji" >> "$LOG_FILE"
return 0
fi
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d text="$TEXT" \
-d parse_mode="Markdown" \
--max-time 10 \
--retry 3 > /dev/null || echo "[$(date '+%Y-%m-%d %H:%M:%S')] Telegram chyba" >> "$LOG_FILE"
}
# === HLAVNI LOGIKA ===
mkdir -p "$BACKUP_DIR/$DATE_DIR"
START_TIME=$(date +%s)
ZALOHOVANO=()
CHYBY=()
for APP in "${APP_DIRS[@]}"; do
APP_PATH="$SOURCE_DIR/$APP"
if [[ ! -d "$APP_PATH" ]]; then
continue
fi
cd "$APP_PATH"
# Pokud existuje data/ adresar, zalohuj ho
if [[ -d "./data" ]]; then
BACKUP_FILE="$BACKUP_DIR/$DATE_DIR/${APP}-${TIMESTAMP}.tar.zst"
if tar --zstd -cf "$BACKUP_FILE" -C "$APP_PATH" data 2>>"$LOG_FILE"; then
ZALOHOVANO+=("$APP ($(du -h "$BACKUP_FILE" | cut -f1))")
else
CHYBY+=("$APP")
fi
fi
done
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
if [[ ${#CHYBY[@]} -eq 0 ]]; then
send_msg " *[$HOST]* Docker zalohy dokonceny (${DURATION}s).
Zalohovano: ${#ZALOHOVANO[@]} sluzeb
Adresar: \`$BACKUP_DIR/$DATE_DIR\`"
else
send_msg " *[$HOST]* Docker zalohy dokonceny s chybami.
Zalohovano: ${#ZALOHOVANO[@]}
Chyby: ${CHYBY[*]}"
fi
exit 0