#!/bin/bash # System configuration backup script # Generated by Ansible DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/opt/backups/system" LOG_FILE="/var/log/backups/system.log" echo "$(date): Starting system backup" >> "$LOG_FILE" # Create backup directory mkdir -p "$BACKUP_DIR/$DATE" # Backup important system directories for dir in /etc /var/lib/dpkg /var/lib/apt/extended_states; do if [ -d "$dir" ]; then echo "$(date): Backing up $dir" >> "$LOG_FILE" rsync -av "$dir" "$BACKUP_DIR/$DATE/" >> "$LOG_FILE" 2>&1 fi done # Backup crontabs if [ -d /var/spool/cron/crontabs ]; then cp -r /var/spool/cron/crontabs "$BACKUP_DIR/$DATE/" fi # Create system info snapshot { echo "=== System Info ===" uname -a lsb_release -a 2>/dev/null echo "" echo "=== Installed Packages ===" dpkg --get-selections echo "" echo "=== Services ===" systemctl list-unit-files --type=service --state=enabled } > "$BACKUP_DIR/$DATE/system-info.txt" # Keep only last 30 days of system backups find "$BACKUP_DIR" -type d -name "20*" -mtime +30 -exec rm -rf {} \; 2>/dev/null echo "$(date): System backup completed" >> "$LOG_FILE"