diff --git a/scripts/backup-appfactory.sh b/scripts/backup-appfactory.sh index 258159d..12d7947 100755 --- a/scripts/backup-appfactory.sh +++ b/scripts/backup-appfactory.sh @@ -2,26 +2,58 @@ set -euo pipefail CONFIG_FILE="/opt/appfactory/config/appfactory.env" -source "$CONFIG_FILE" + +if [ -f "$CONFIG_FILE" ]; then + set -a + # shellcheck disable=SC1090 + source "$CONFIG_FILE" + set +a +fi + +APPFACTORY_DIR="${APPFACTORY_DIR:-/opt/appfactory}" +WORKSPACE_DIR="${WORKSPACE_DIR:-$APPFACTORY_DIR/workspace}" +BACKUP_DIR="${BACKUP_DIR:-$APPFACTORY_DIR/backups}" TIMESTAMP="$(date +%Y%m%d-%H%M%S)" BACKUP_FILE="$BACKUP_DIR/appfactory-backup-$TIMESTAMP.tar.gz" +MANIFEST_FILE="$(mktemp)" mkdir -p "$BACKUP_DIR" +add_path() { + local path="$1" + + if [ -e "$path" ]; then + echo "$path" >> "$MANIFEST_FILE" + else + echo "WARN: missing path skipped: $path" >&2 + fi +} + +add_path "$APPFACTORY_DIR/apps" +add_path "$APPFACTORY_DIR/config" + +# AppFactory portal/platform DB and internal data. +add_path "$APPFACTORY_DIR/data/appfactory" + +# Core service persistent data. +add_path "$APPFACTORY_DIR/data/gitea" +add_path "$APPFACTORY_DIR/data/registry" +add_path "$APPFACTORY_DIR/data/caddy" +add_path "$APPFACTORY_DIR/data/caddy-config" + +add_path "$APPFACTORY_DIR/deploy" +add_path "$APPFACTORY_DIR/gateway" +add_path "$APPFACTORY_DIR/templates" +add_path "$APPFACTORY_DIR/services" +add_path "$WORKSPACE_DIR" + echo "Creating backup:" echo "$BACKUP_FILE" -tar -czf "$BACKUP_FILE" \ - "$APPFACTORY_DIR/apps" \ - "$APPFACTORY_DIR/config" \ - "$APPFACTORY_DIR/data/gitea" \ - "$APPFACTORY_DIR/data/registry" \ - "$APPFACTORY_DIR/deploy" \ - "$APPFACTORY_DIR/gateway" \ - "$APPFACTORY_DIR/templates" \ - "$APPFACTORY_DIR/services" \ - "$WORKSPACE_DIR" +tar -czf "$BACKUP_FILE" --files-from "$MANIFEST_FILE" + +rm -f "$MANIFEST_FILE" echo "" echo "DONE"