summaryrefslogtreecommitdiff
path: root/p1.sh
diff options
context:
space:
mode:
Diffstat (limited to 'p1.sh')
-rwxr-xr-xp1.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/p1.sh b/p1.sh
new file mode 100755
index 0000000..0213a11
--- /dev/null
+++ b/p1.sh
@@ -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