Files
BrainKP/scripts/backup-git.sh
T

46 lines
1.3 KiB
Bash
Executable File

#!/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"