Files
SkyArtShop/migrate-prepare.sh

165 lines
4.6 KiB
Bash
Raw Normal View History

#!/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 ""