fix(backup): Improve backup/restore scripts, allow specifying backup directory (#1541)

This commit is contained in:
seals187
2026-02-19 13:13:12 +01:00
committed by GitHub
parent 414418130d
commit 7758312e05
2 changed files with 53 additions and 32 deletions
+28 -17
View File
@@ -1,13 +1,22 @@
#!/bin/bash
# Stop on Error
# Stop on error
set -e
# Configure those to match your PLANKA Docker container names
PLANKA_DOCKER_CONTAINER_POSTGRES="planka-postgres-1"
PLANKA_DOCKER_CONTAINER_PLANKA="planka-planka-1"
# Configure those to match your Docker container names
DOCKER_CONTAINER_POSTGRES="planka-postgres-1"
DOCKER_CONTAINER_PLANKA="planka-planka-1"
# Use provided directory or default to current directory
BACKUP_DIR="${1:-$(pwd)}"
if [ -z "$1" ]; then
echo "No backup directory specified, backing up to current directory: $BACKUP_DIR"
else
echo "Backing up to: $BACKUP_DIR"
fi
echo
# Create Temporary folder
if date --version >/dev/null 2>&1; then
# GNU date (Linux)
BACKUP_DATETIME=$(date --utc +%FT%H-%M-%SZ)
@@ -15,28 +24,30 @@ else
# BSD date (macOS)
BACKUP_DATETIME=$(date -u +%FT%H-%M-%SZ)
fi
mkdir -p "$BACKUP_DATETIME-backup"
# Dump DB into SQL File
BACKUP_TEMP="$BACKUP_DIR/$BACKUP_DATETIME-backup"
# Create temporary directory
mkdir -p "$BACKUP_TEMP"
echo -n "Exporting postgres database ... "
docker exec -t "$PLANKA_DOCKER_CONTAINER_POSTGRES" pg_dumpall -c -U postgres > "$BACKUP_DATETIME-backup/postgres.sql"
docker exec -t "$DOCKER_CONTAINER_POSTGRES" pg_dumpall -c -U postgres > "$BACKUP_TEMP/postgres.sql"
echo "Success!"
echo
# Export Docker Volume
echo -n "Exporting data volume ... "
docker run --rm --volumes-from "$PLANKA_DOCKER_CONTAINER_PLANKA" -v "$(pwd)/$BACKUP_DATETIME-backup:/backup" ubuntu cp -r /app/data /backup/data
docker run --rm --volumes-from "$DOCKER_CONTAINER_PLANKA" -v "$BACKUP_TEMP:/backup" node:22-alpine cp -r /app/data /backup/data
echo "Success!"
echo
# Create tgz
echo -n "Creating final tarball $BACKUP_DATETIME-backup.tgz ... "
tar -czf "$BACKUP_DATETIME-backup.tgz" \
"$BACKUP_DATETIME-backup/postgres.sql" \
"$BACKUP_DATETIME-backup/data"
tar -C "$BACKUP_DIR" -czf "$BACKUP_TEMP.tgz" "$BACKUP_DATETIME-backup"
echo "Success!"
echo
# Remove source files
echo -n "Cleaning up temporary files and folders ... "
rm -rf "$BACKUP_DATETIME-backup"
echo -n "Cleaning up temporary files and directories ... "
rm -rf "$BACKUP_TEMP"
echo "Success!"
echo
echo "Backup Complete!"