diff options
Diffstat (limited to 'p1.sh')
-rwxr-xr-x | p1.sh | 74 |
1 files changed, 74 insertions, 0 deletions
@@ -0,0 +1,74 @@ +#!/bin/bash + +# Configuration +SRC_DIR="/home/mastodon/live" +DEST_DIR="/home/mastodon/backup" +PG_DB_NAME="mastodon_production" +PG_USER="mastodon" +PG_HOST="38.102.127.174" # Use database IP +PG_PORT="5432" +TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") +BACKUP_DIR="${DEST_DIR}/mastodon_backup" # Removed the timestamp here for simplicity +LOG_FILE="$(pwd)/migration_checklist_${TIMESTAMP}.log" # Create log file in the same directory +REMOTE_USER="root" +REMOTE_HOST="38.102.127.167" # New server IP +REMOTE_DIR="/home/mastodon" + +# Initialize the log file +echo "Migration checklist for real run on $(date)" > $LOG_FILE +echo "========================================" >> $LOG_FILE + +# Step 1: Ensure necessary directories exist on the new server +echo "Checking if 'mastodon' user exists..." >> $LOG_FILE +id -u mastodon &>/dev/null || useradd -m mastodon + +echo "Ensuring backup and log directories exist..." >> $LOG_FILE +mkdir -p /home/mastodon/mastodon_backup +mkdir -p /home/mastodon/logs + +echo "Ensuring mastodon directory exists on remote server..." >> $LOG_FILE +mkdir -p "$DEST_DIR/mastodon_backup" + +# Step 2: Check if the database is reachable +echo "Checking if the database is reachable..." >> $LOG_FILE +psql -U $PG_USER -h $PG_HOST -d $PG_DB_NAME -c 'SELECT 1;' || { echo "Database connection failed" >> $LOG_FILE; exit 1; } + +# Step 3: Check if S3 storage is reachable +echo "Checking if S3 storage is reachable..." >> $LOG_FILE +curl --silent --head --fail 'https://chatwithus-live.us-east-1.linodeobjects.com' || echo 'S3 storage is not reachable' >> $LOG_FILE + +# Step 4: Transfer files and directories +echo "Starting backup transfer..." >> $LOG_FILE + +# Ensure the destination directory exists +mkdir -p $BACKUP_DIR + +# Transfer Mastodon files from old server +rsync -avz --delete $SRC_DIR $BACKUP_DIR/mastodon_files # The '-z' flag compresses the data during transfer + +# Transfer Nginx config +rsync -avz /etc/nginx $BACKUP_DIR/nginx_configs # Added compression for Nginx config transfer + +# Backup PostgreSQL database +echo "Backing up PostgreSQL database..." >> $LOG_FILE +pg_dump -U $PG_USER -d $PG_DB_NAME > "$DEST_DIR/mastodon_db.sql" + +# Ensure the backup directory is created (to be safe) +mkdir -p "$DEST_DIR/mastodon_backup" + +# Compress the backup directory with tar (to reduce size) +echo "Creating backup archive..." >> $LOG_FILE +tar -czf "$DEST_DIR/mastodon_backup.tar.gz" -C "$DEST_DIR" mastodon_backup # Compress the backup directory + +# Step 5: Transfer backup to new server +echo "Transferring backup to new server..." >> $LOG_FILE +rsync -avz ${DEST_DIR}/mastodon_backup.tar.gz ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} # Using compression during transfer + +# Step 6: Remove local compressed backup file +rm ${DEST_DIR}/mastodon_backup.tar.gz + +# Step 7: Move log files to /home/mastodon/logs +mv $LOG_FILE /home/mastodon/logs/backup_${TIMESTAMP}.log + +# End of Part 1: Setup, checks, and transfer. +echo "Step 1-7 completed. Proceed with Part 2 to install Glitch-Soc." >> $LOG_FILE |