46 lines
1.3 KiB
Bash
Executable File
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"
|