Docs / Backup & Recovery / Automating Server Configuration Backups

Automating Server Configuration Backups

By Admin · Feb 25, 2026 · Updated Apr 23, 2026 · 31 views · 1 min read

What to Back Up

Server configuration is often overlooked in backup plans. Rebuilding from scratch without config backups is painful and error-prone.

Essential Config Files

#!/bin/bash
# /root/scripts/config-backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/configs/$DATE"
mkdir -p "$BACKUP_DIR"

# Web server
cp -r /etc/nginx "$BACKUP_DIR/"
# or /etc/apache2

# PHP
cp -r /etc/php "$BACKUP_DIR/"

# Database
cp -r /etc/mysql "$BACKUP_DIR/"

# SSH
cp -r /etc/ssh "$BACKUP_DIR/"

# Firewall
ufw status verbose > "$BACKUP_DIR/ufw-rules.txt"
iptables-save > "$BACKUP_DIR/iptables-rules.txt"

# Crontabs
crontab -l > "$BACKUP_DIR/root-crontab.txt"
for user in $(cut -d: -f1 /etc/passwd); do
    crontab -u "$user" -l 2>/dev/null > "$BACKUP_DIR/${user}-crontab.txt"
done

# Systemd custom services
cp /etc/systemd/system/*.service "$BACKUP_DIR/" 2>/dev/null

# Package list
dpkg --get-selections > "$BACKUP_DIR/packages.list"

# Compress
tar -czf "/backup/config-${DATE}.tar.gz" -C "/backup/configs" "$DATE"
rm -rf "$BACKUP_DIR"

# Keep only last 30 days
find /backup -name "config-*.tar.gz" -mtime +30 -delete

echo "Config backup completed: $(date)"

Schedule

0 1 * * * /root/scripts/config-backup.sh >> /var/log/config-backup.log 2>&1

Was this article helpful?