27 lines
878 B
Bash
27 lines
878 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
BACKUP_DIR="/backup/gitea"
|
|
DATA_DIR="/home/hans/forgejo/data"
|
|
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"
|
|
|
|
/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
|
|
|
|
mv "$TMP_FILE" "$FINAL_FILE"
|
|
chmod 600 "$FINAL_FILE"
|
|
|
|
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 |