#!/bin/bash # Backup Gitea + repos → Google Drive (Git) set -e DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/tmp/backup-git" DEST="gdrive:Git" echo "[$(date)] Backup Git started" # Cleanup old temp rm -rf "$BACKUP_DIR" mkdir -p "$BACKUP_DIR" # Find Gitea data directory GITEA_DATA=$(docker inspect gitea-yccsckck4g004gosccwc4kg4 --format '{{range .Mounts}}{{if eq .Destination "/data"}}{{.Source}}{{end}}{{end}}' 2>/dev/null || echo "") if [ -n "$GITEA_DATA" ]; then echo "Found Gitea data at $GITEA_DATA" tar -czf "$BACKUP_DIR/gitea-data-$DATE.tar.gz" "$GITEA_DATA" 2>/dev/null || true else # Try common paths for path in /var/lib/gitea /root/gitea /data/gitea; do if [ -d "$path" ]; then tar -czf "$BACKUP_DIR/gitea-data-$DATE.tar.gz" "$path" 2>/dev/null || true break fi done fi # Also backup docker volumes related to git for vol in $(docker volume ls -q 2>/dev/null | grep -iE "gitea|git" | head -5); do docker run --rm -v "${vol}:/src" -v "${BACKUP_DIR}:/dest" alpine tar -czf "/dest/${vol}-${DATE}.tar.gz" -C /src . 2>/dev/null || true done # Sync to Google Drive (folder ID already in path, no extra flag needed) rclone copy "$BACKUP_DIR" "$DEST" --progress # Keep only last 7 days in GDrive rclone delete "$DEST" --min-age 7d # Cleanup local rm -rf "$BACKUP_DIR" echo "[$(date)] Backup Git finished"