#!/bin/bash
# Seafile backup script.
# Backs up MySQL databases and seafile data directory.
# Runs every 3 days via root crontab. Keeps last 5 backups.
# Notifies Zabbix (item seafile.backup.ts, id 70369 on AgapHost) after success.

set -euo pipefail

BACKUP_DIR="/mnt/backups/seafile"
DATA_DIR="/mnt/misc/seafile"
DATE=$(date '+%Y%m%d-%H%M')
DEST="$BACKUP_DIR/$DATE"

mkdir -p "$DEST"

# Dump all three Seafile databases from the running container
for DB in ccnet_db seafile_db seahub_db; do
  docker exec seafile-mysql mysqldump \
    -u seafile -pFWsYYeZa15ro6x \
    --single-transaction "$DB" > "$DEST/${DB}.sql"
  echo "Dumped: $DB"
done

# Copy seafile data (libraries, config — excludes mysql and caddy dirs)
rsync -a --delete \
  --exclude='seafile-mysql/' \
  --exclude='seafile-caddy/' \
  "$DATA_DIR/" "$DEST/data/"

echo "$(date): Backup complete: $DEST"
ls "$DEST/"

# Notify Zabbix
if [[ -f /root/.zabbix_token ]]; then
  ZABBIX_TOKEN=$(cat /root/.zabbix_token)
  NOW_EPOCH=$(date '+%s')
  env -u HTTPS_PROXY -u HTTP_PROXY -u ALL_PROXY -u https_proxy -u http_proxy -u all_proxy \
    curl -s -X POST http://192.168.1.4:81/api_jsonrpc.php \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $ZABBIX_TOKEN" \
    -d "{\"jsonrpc\":\"2.0\",\"method\":\"history.push\",\"id\":1,\"params\":{\"itemid\":\"70369\",\"value\":$NOW_EPOCH}}" > /dev/null \
    && echo "Zabbix notified (seafile.backup.ts=$NOW_EPOCH)."
fi

# Rotate: keep last 5 backups
ls -1dt "$BACKUP_DIR"/[0-9]*-[0-9]* 2>/dev/null | tail -n +6 | xargs -r rm -rf
