backups werden mit rsync uebertragen

This commit is contained in:
2026-05-27 18:17:29 +02:00
parent a2f7ea9f6b
commit d6d040728a
2 changed files with 57 additions and 32 deletions
+16 -21
View File
@@ -1,32 +1,27 @@
#!/bin/bash
# /usr/local/bin/gitea-backup.sh
set -euo pipefail
BACKUP_DIR="/backup/gitea"
DATA_DIR="/home/hans/forgejo/data"
CONTAINER_NAME="forgejo" # Dein container_name aus der Compose-Datei
CONTAINER_NAME="forgejo"
RETENTION_DAYS=14
REMOTE_USER="hans"
REMOTE_HOST="10.0.0.104"
REMOTE_DIR="/volume1/homes/hans/backup_gitea"
SSH_KEY="/root/.ssh/id_ed25519_gitea_backup"
SSH_OPTS="-i ${SSH_KEY} -o BatchMode=yes -o StrictHostKeyChecking=yes"
mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date +%Y%m%d-%H%M)
TMP_FILE="$DATA_DIR/gitea-dump.zip"
FINAL_FILE="$BACKUP_DIR/gitea-dump-$TIMESTAMP.zip"
echo "[$(date)] Starting Gitea backup..."
/usr/bin/docker exec -u git -w /data "$CONTAINER_NAME" /app/gitea/gitea dump -c /data/gitea/conf/app.ini --file /data/gitea-dump.zip
# Backup im Container erstellen
docker exec -u git -w /data "$CONTAINER_NAME" \
/app/gitea/gitea dump -c /data/gitea/conf/app.ini \
--file /data/gitea-dump.zip
mv "$TMP_FILE" "$FINAL_FILE"
chmod 600 "$FINAL_FILE"
# Vom gemappten Volume ins Backup-Verzeichnis verschieben
if [ -f "$DATA_DIR/gitea-dump.zip" ]; then
mv "$DATA_DIR/gitea-dump.zip" "$BACKUP_DIR/gitea-dump-$TIMESTAMP.zip"
chmod 600 "$BACKUP_DIR/gitea-dump-$TIMESTAMP.zip"
# Alte Backups entfernen
find "$BACKUP_DIR" -name "gitea-dump-*.zip" -mtime +$RETENTION_DAYS -delete
SIZE=$(du -h "$BACKUP_DIR/gitea-dump-$TIMESTAMP.zip" | cut -f1)
echo "[$(date)] Backup completed: gitea-dump-$TIMESTAMP.zip ($SIZE)"
else
echo "[$(date)] ERROR: Backup file not found!"
exit 1
fi
rsync -a --partial --human-readable -e "ssh ${SSH_OPTS}" "$FINAL_FILE" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/"
find "$BACKUP_DIR" -name 'gitea-dump-*.zip' -mtime +$RETENTION_DAYS -delete