Embed backup scripts in Docker image
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user