mirror of
https://github.com/plankanban/planka.git
synced 2026-05-04 18:00:55 +03:00
54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# Stop on error
|
|
set -e
|
|
|
|
# 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
|
|
|
|
if date --version >/dev/null 2>&1; then
|
|
# GNU date (Linux)
|
|
BACKUP_DATETIME=$(date --utc +%FT%H-%M-%SZ)
|
|
else
|
|
# BSD date (macOS)
|
|
BACKUP_DATETIME=$(date -u +%FT%H-%M-%SZ)
|
|
fi
|
|
|
|
BACKUP_TEMP="$BACKUP_DIR/$BACKUP_DATETIME-backup"
|
|
|
|
# Create temporary directory
|
|
mkdir -p "$BACKUP_TEMP"
|
|
|
|
echo -n "Exporting postgres database ... "
|
|
docker exec -t "$DOCKER_CONTAINER_POSTGRES" pg_dumpall -c -U postgres > "$BACKUP_TEMP/postgres.sql"
|
|
echo "Success!"
|
|
echo
|
|
|
|
echo -n "Exporting data volume ... "
|
|
docker run --rm --volumes-from "$DOCKER_CONTAINER_PLANKA" -v "$BACKUP_TEMP:/backup" node:22-alpine cp -r /app/data /backup/data
|
|
echo "Success!"
|
|
echo
|
|
|
|
echo -n "Creating final tarball $BACKUP_DATETIME-backup.tgz ... "
|
|
tar -C "$BACKUP_DIR" -czf "$BACKUP_TEMP.tgz" "$BACKUP_DATETIME-backup"
|
|
echo "Success!"
|
|
echo
|
|
|
|
echo -n "Cleaning up temporary files and directories ... "
|
|
rm -rf "$BACKUP_TEMP"
|
|
echo "Success!"
|
|
echo
|
|
|
|
echo "Backup Complete!"
|