#!/bin/bash # SkyArtShop Migration Preparation Script # Run this on the SOURCE server set -e echo "=========================================" echo " SkyArtShop Migration - Preparation" echo "=========================================" echo "" # Configuration BACKUP_DIR=~/skyartshop-backup DATE=$(date +%Y%m%d_%H%M%S) APP_DIR=/var/www/SkyArtShop # Colors for output GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Create backup directory echo -e "${YELLOW}[1/6] Creating backup directory...${NC}" mkdir -p $BACKUP_DIR/configs echo -e "${GREEN}✓ Backup directory created: $BACKUP_DIR${NC}" echo "" # Export MongoDB echo -e "${YELLOW}[2/6] Exporting MongoDB database...${NC}" if command -v mongodump &> /dev/null; then mongodump --db=SkyArtShopDB --out=$BACKUP_DIR/mongodb-dump cd $BACKUP_DIR tar -czf mongodb-backup-$DATE.tar.gz mongodb-dump/ rm -rf mongodb-dump/ # Get database stats DB_SIZE=$(du -sh mongodb-backup-$DATE.tar.gz | cut -f1) echo -e "${GREEN}✓ MongoDB backup created: mongodb-backup-$DATE.tar.gz ($DB_SIZE)${NC}" else echo -e "${RED}✗ MongoDB not found! Skipping database backup.${NC}" fi echo "" # Package application files echo -e "${YELLOW}[3/6] Packaging application files...${NC}" if [ -d "$APP_DIR" ]; then cd /var/www tar --exclude='SkyArtShop/bin' \ --exclude='SkyArtShop/obj' \ --exclude='SkyArtShop/publish/runtimes' \ --exclude='SkyArtShop/.vs' \ --exclude='SkyArtShop/.git' \ --exclude='SkyArtShop/node_modules' \ -czf $BACKUP_DIR/skyartshop-app-$DATE.tar.gz SkyArtShop/ APP_SIZE=$(du -sh $BACKUP_DIR/skyartshop-app-$DATE.tar.gz | cut -f1) echo -e "${GREEN}✓ Application packaged: skyartshop-app-$DATE.tar.gz ($APP_SIZE)${NC}" else echo -e "${RED}✗ Application directory not found: $APP_DIR${NC}" exit 1 fi echo "" # Save configuration files echo -e "${YELLOW}[4/6] Backing up configuration files...${NC}" # Nginx config if [ -f /etc/nginx/sites-available/skyartshop ]; then cp /etc/nginx/sites-available/skyartshop $BACKUP_DIR/configs/nginx-skyartshop.conf echo -e "${GREEN}✓ Nginx config backed up${NC}" else echo -e "${YELLOW}⚠ No Nginx config found${NC}" fi # Systemd service if [ -f /etc/systemd/system/skyartshop.service ]; then cp /etc/systemd/system/skyartshop.service $BACKUP_DIR/configs/skyartshop.service echo -e "${GREEN}✓ Systemd service backed up${NC}" else echo -e "${YELLOW}⚠ No systemd service found${NC}" fi # Save environment info cat > $BACKUP_DIR/configs/environment-info.txt << EOF Migration Package Information ============================== Created: $(date) Source Server: $(hostname) IP Address: $(hostname -I | awk '{print $1}') .NET Version: $(dotnet --version 2>/dev/null || echo "Not installed") MongoDB Version: $(mongod --version 2>/dev/null | head -1 || echo "Not installed") OS Information: $(cat /etc/os-release | grep PRETTY_NAME) Application Path: $APP_DIR Backup Date: $DATE EOF echo -e "${GREEN}✓ Environment info saved${NC}" echo "" # Create manifest echo -e "${YELLOW}[5/6] Creating migration manifest...${NC}" cat > $BACKUP_DIR/MANIFEST.txt << EOF ======================================== SkyArtShop Migration Package ======================================== Created: $(date) Source Server: $(hostname) Package ID: $DATE CONTENTS: --------- $(ls -lh $BACKUP_DIR/*.tar.gz 2>/dev/null | awk '{print " " $9 " (" $5 ")"}') Configuration Files: $(ls -1 $BACKUP_DIR/configs/ | sed 's/^/ - /') Total Package Size: $(du -sh $BACKUP_DIR | cut -f1) NEXT STEPS: ----------- 1. Transfer this entire directory to the new server: scp -r ~/skyartshop-backup username@new-server-ip:/home/username/ 2. On the new server, run: cd /var/www/SkyArtShop bash migrate-restore.sh For detailed instructions, see: MIGRATION_PACKAGE.md ======================================== EOF echo -e "${GREEN}✓ Manifest created${NC}" echo "" # Display summary echo -e "${YELLOW}[6/6] Migration package ready!${NC}" echo "" echo "=========================================" echo " 📦 MIGRATION PACKAGE SUMMARY" echo "=========================================" cat $BACKUP_DIR/MANIFEST.txt echo "" echo -e "${GREEN}✓ All files backed up successfully!${NC}" echo "" echo "Next Steps:" echo "1. Transfer the backup to new server:" echo -e " ${YELLOW}scp -r $BACKUP_DIR username@new-server-ip:/home/username/${NC}" echo "" echo "2. Or create a single archive:" echo -e " ${YELLOW}cd ~ && tar -czf skyartshop-migration-$DATE.tar.gz skyartshop-backup/${NC}" echo "" echo "3. On the new server, extract and run migrate-restore.sh" echo ""