infrastructure/scripts/system_config_backup.sh

35 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Retrieve environment variables
PRIVATE_KEY="${PRIVATE_KEY}"
SSH_PORT="${SSH_PORT}"
REMOTE_USER="${REMOTE_USER}"
SERVER_IP="${SERVER_IP}"
BACKUP_DIR="/home/$REMOTE_USER/system_config_backup"
set -e # Exit on error
# Create the backup directory remotely
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "mkdir -p $BACKUP_DIR"
# Backup UFW configurations
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "sudo cp -r /etc/ufw/* $BACKUP_DIR/ufw/"
# Backup Fail2Ban configurations
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "mkdir -p $BACKUP_DIR/fail2ban && sudo cp -r /etc/fail2ban/* $BACKUP_DIR/fail2ban/"
# Backup SSH configurations
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "sudo cp /etc/ssh/sshd_config $BACKUP_DIR/"
# Backup Systemd configurations
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "mkdir -p $BACKUP_DIR/systemd && sudo cp -r /etc/systemd/system/* $BACKUP_DIR/systemd/"
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "mkdir -p $BACKUP_DIR/caddy && sudo cp -r /var/lib/caddy/.local/share/caddy/ $BACKUP_DIR/"
# Tar the backup directory
ssh -i $PRIVATE_KEY -p $SSH_PORT $REMOTE_USER@$SERVER_IP "sudo tar czvf ~/system_config_backup.tar.gz -C ~ system_config_backup/"
# Optionally fetch the backup to local computer
scp -i $PRIVATE_KEY -P $SSH_PORT $REMOTE_USER@$SERVER_IP:~/system_config_backup.tar.gz .
echo "Backup process completed and fetched to local machine!"