From eb066bc8ccacfc75a12aefb558de7513a734b512 Mon Sep 17 00:00:00 2001 From: nmemmert Date: Mon, 13 Jul 2026 08:00:49 -0400 Subject: [PATCH] Add backup and restore scripts for migrating user data between PCs Co-Authored-By: Claude Sonnet 4.6 --- scripts/backup-data.sh | 23 +++++++++++++++++++++++ scripts/restore-data.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 scripts/backup-data.sh create mode 100755 scripts/restore-data.sh diff --git a/scripts/backup-data.sh b/scripts/backup-data.sh new file mode 100755 index 0000000..7f4756e --- /dev/null +++ b/scripts/backup-data.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Backs up user data to a timestamped zip file you can copy to your new PC. + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="$(dirname "$SCRIPT_DIR")" +DB_FILE="$APP_DIR/server/data/projects.db" +TIMESTAMP=$(date +"%Y%m%d_%H%M%S") +BACKUP_FILE="$APP_DIR/study-app-backup_$TIMESTAMP.zip" + +if [ ! -f "$DB_FILE" ]; then + echo "ERROR: Database not found at $DB_FILE" + exit 1 +fi + +zip -j "$BACKUP_FILE" "$DB_FILE" + +echo "" +echo "Backup created: $BACKUP_FILE" +echo "" +echo "Copy this file to your new PC, then run:" +echo " scripts/restore-data.sh " diff --git a/scripts/restore-data.sh b/scripts/restore-data.sh new file mode 100755 index 0000000..6d624b0 --- /dev/null +++ b/scripts/restore-data.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Restores user data from a backup zip created by backup-data.sh. +# Usage: scripts/restore-data.sh + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="$(dirname "$SCRIPT_DIR")" +DATA_DIR="$APP_DIR/server/data" +BACKUP_FILE="$1" + +if [ -z "$BACKUP_FILE" ]; then + echo "Usage: scripts/restore-data.sh " + exit 1 +fi + +if [ ! -f "$BACKUP_FILE" ]; then + echo "ERROR: Backup file not found: $BACKUP_FILE" + exit 1 +fi + +mkdir -p "$DATA_DIR" + +# Warn if a database already exists +if [ -f "$DATA_DIR/projects.db" ]; then + echo "WARNING: An existing database was found at $DATA_DIR/projects.db" + read -p "Overwrite it? (y/N): " CONFIRM + if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then + echo "Restore cancelled." + exit 0 + fi + cp "$DATA_DIR/projects.db" "$DATA_DIR/projects.db.bak" + echo "Old database backed up to projects.db.bak" +fi + +unzip -o "$BACKUP_FILE" -d "$DATA_DIR" + +echo "" +echo "Restore complete. Database is at: $DATA_DIR/projects.db" +echo "You can now start the app normally."