PassioniInformaticaLinux

Guida: Backup automatici con rsync + cron

24/02/2026

Sistema di backup automatico per server Linux

Come configurare backup incrementali con rsync, schedulati via cron, con notifica e retention.

1. Backup base con rsync

# Backup locale
rsync -avz --delete /var/www/ /mnt/backup/www/

# Backup remoto via SSH
rsync -avz -e ssh /var/www/ root@192.168.1.90:/backup/www/

2. Script di backup completo

nano /usr/local/bin/backup.sh
#!/bin/bash
set -euo pipefail

DATE=$(date +%Y-%m-%d)
DEST="/mnt/backup"
LOG="/var/log/backup.log"

log() { echo "[$(date +%F %T)] $*" >> "$LOG"; }

log "Inizio backup"

# Backup file di sistema
rsync -avz --delete /etc/ "$DEST/etc/" >> "$LOG" 2>&1
rsync -avz --delete /var/www/ "$DEST/www/" >> "$LOG" 2>&1

# Dump MySQL
mysqldump -u root --all-databases | gzip > "$DEST/mysql/dump_${DATE}.sql.gz"

# Retention: elimina dump piu vecchi di 30 giorni
find "$DEST/mysql/" -name "*.sql.gz" -mtime +30 -delete

log "Backup completato"
chmod +x /usr/local/bin/backup.sh

3. Schedulazione con cron

crontab -e
# Backup giornaliero alle 3:00
0 3 * * * /usr/bin/flock -n /var/lock/backup.lock /usr/local/bin/backup.sh

flock impedisce esecuzioni sovrapposte.

4. Backup su NFS remoto

# Mount NFS
mount -t nfs 192.168.1.90:/share/backup /mnt/backup

# In fstab per mount automatico
echo "192.168.1.90:/share/backup /mnt/backup nfs defaults,_netdev 0 0" >> /etc/fstab

5. Notifica Telegram

send_telegram() {
  curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" 
    -d chat_id="${CHAT_ID}" --data-urlencode text="$1"
}
send_telegram "Backup completato: $(du -sh $DEST | awk '{print $1}')"

Risultato: Backup automatici giornalieri con rsync, dump MySQL, retention e notifiche.

← Guida: SSH sicuro — chiavi, hardening e tunneling Guida: Monitoraggio server con Prometheus + Gra... →
← Torna all'elenco