From 68fa063ccc0579e358768f16f0ad084e855f7be0 Mon Sep 17 00:00:00 2001 From: founder Date: Fri, 5 Jun 2026 02:31:27 +0200 Subject: [PATCH] Add backup script, fix Caddy routing --- backup.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 backup.sh diff --git a/backup.sh b/backup.sh new file mode 100644 index 0000000..c3ed77a --- /dev/null +++ b/backup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Backup script for /opt/infra +# Run daily via cron + +BACKUP_DIR=/opt/backups +RETENTION_DAYS=7 +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +BACKUP_FILE="$BACKUP_DIR/infra_backup_$TIMESTAMP.tar.gz" + +mkdir -p "$BACKUP_DIR" + +# Create backup +tar -czf "$BACKUP_FILE" -C /opt infra 2>/dev/null + +# Backup Docker volumes +for vol in infra_caddy_data infra_caddy_config infra_gitea_data infra_gitea_config infra_uptime_kuma_data; do + vol_path=$(sudo docker volume inspect $vol --format '{{.Mountpoint}}' 2>/dev/null) + if [ -n "$vol_path" ] && [ -d "$vol_path" ]; then + vol_backup="$BACKUP_DIR/${vol}_${TIMESTAMP}.tar.gz" + sudo tar -czf "$vol_backup" -C "$vol_path" . 2>/dev/null + fi +done + +# Cleanup old backups +find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete 2>/dev/null + +echo "Backup completed: $BACKUP_DIR ($(du -sh $BACKUP_DIR | cut -f1))"