60 lines
2.6 KiB
Bash
Raw Normal View History

#!/bin/bash
#blargh
# Configuration
SRC_DIR="/home/mastodon/live"
DEST_DIR="/home/mastodon/backup"
PG_DB_NAME="mastodon_production"
PG_USER="mastodon"
PG_HOST="" # Leave empty for local socket connection
PG_PORT="5432"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_DIR="${DEST_DIR}/mastodon_backup_${TIMESTAMP}"
LOG_FILE="${DEST_DIR}/backup_${TIMESTAMP}.log"
# Ensure the destination directory exists
mkdir -p "$BACKUP_DIR" || { echo "Failed to create backup directory"; exit 1; }
# Backup Mastodon files
echo "Starting rsync backup of Mastodon files..."
rsync -av --delete "$SRC_DIR" "$BACKUP_DIR/mastodon_files" >> "$LOG_FILE" 2>&1 || { echo "rsync failed"; exit 1; }
# Backup Nginx configuration files
echo "Starting backup of Nginx configuration files..."
rsync -av /etc/nginx "$BACKUP_DIR/nginx_configs" >> "$LOG_FILE" 2>&1 || { echo "rsync failed to backup Nginx configs"; exit 1; }
# Backup PostgreSQL database
echo "Starting PostgreSQL database backup..."
pg_dump -U "$PG_USER" -d "$PG_DB_NAME" > "$BACKUP_DIR/mastodon_db_${TIMESTAMP}.sql" >> "$LOG_FILE" 2>&1 || { echo "pg_dump failed"; exit 1; }
# Compress the backup
echo "Compressing backup..."
tar -czf "${BACKUP_DIR}.tar.gz" -C "$DEST_DIR" "mastodon_backup_${TIMESTAMP}" >> "$LOG_FILE" 2>&1 || { echo "Compression failed"; exit 1; }
# Remove the uncompressed backup directory
echo "Removing uncompressed backup directory..."
ls -l "$BACKUP_DIR" >> "$LOG_FILE" 2>&1 # Debugging output
rm -rf "$BACKUP_DIR" >> "$LOG_FILE" 2>&1 || { echo "Failed to remove uncompressed backup directory"; exit 1; }
# Transfer backup to remote server
REMOTE_USER="root"
REMOTE_HOST="209.209.9.128"
REMOTE_DIR="/mnt/e"
echo "Transferring backup to remote server..." >> "$LOG_FILE" 2>&1
rsync -av "${DEST_DIR}/mastodon_backup_${TIMESTAMP}.tar.gz" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}" >> "$LOG_FILE" 2>&1 || { echo "Remote rsync failed"; exit 1; }
# Remove local compressed backup file
echo "Removing local compressed backup file..." >> "$LOG_FILE" 2>&1
rm "${DEST_DIR}/mastodon_backup_${TIMESTAMP}.tar.gz" >> "$LOG_FILE" 2>&1 || { echo "Failed to remove local backup file"; exit 1; }
# Move log files to /home/mastodon/logs
LOG_DEST_DIR="/home/mastodon/logs"
mkdir -p "$LOG_DEST_DIR" >> "$LOG_FILE" 2>&1 || { echo "Failed to create log destination directory"; exit 1; }
mv "$LOG_FILE" "${LOG_DEST_DIR}/backup_${TIMESTAMP}.log" >> "$LOG_FILE" 2>&1 || { echo "Failed to move log file"; exit 1; }
# Clean up backup directory
echo "Cleaning up backup directory..." >> "$LOG_FILE" 2>&1
rm -rf "${DEST_DIR}"/* >> "$LOG_FILE" 2>&1 || { echo "Failed to clean up backup directory"; exit 1; }
echo "Backup completed: ${BACKUP_DIR}.tar.gz"