165 lines
4.6 KiB
Bash
165 lines
4.6 KiB
Bash
|
|
#!/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 ""
|