Automatizzare i Backup con un Script Bash e `rsync`

Script Linux

`rsync` è un'utility a riga di comando per Linux incredibilmente potente e versatile per la sincronizzazione di file e directory. È lo strumento perfetto per creare script di backup, perché trasferisce solo le differenze tra la sorgente e la destinazione, rendendo i backup successivi al primo (incrementali) molto veloci.

Lo Script di Backup

Creiamo uno script che fa il backup di una cartella (`/home/utente/documenti`) su un disco esterno montato in `/mnt/backup`.

File: `backup.sh`

#!/bin/bash

# --- CONFIGURAZIONE ---
SORGENTE="/home/utente/documenti/"
DESTINAZIONE="/mnt/backup/documenti_backup/"
FILE_LOG="/var/log/backup.log"

# --- ESECUZIONE ---
echo "Backup iniziato il $(date)" >> "$FILE_LOG"

rsync -avh --delete "$SORGENTE" "$DESTINAZIONE" >> "$FILE_LOG" 2>&1

echo "Backup terminato con successo il $(date)" >> "$FILE_LOG"
echo "------------------------------------" >> "$FILE_LOG"

exit 0

Analisi dello Script

  • `#!/bin/bash`: Lo shebang.
  • `SORGENTE` e `DESTINAZIONE`: Usiamo delle variabili per rendere lo script facile da modificare. Nota la barra `/` alla fine di `SORGENTE`: dice a `rsync` di copiare il contenuto della cartella, non la cartella stessa.
  • Comando `rsync`:
    • `-a` (archive): È una scorciatoia per un insieme di opzioni che preservano permessi, proprietari e timestamp.
    • `-v` (verbose): Mostra i file che vengono trasferiti.
    • `-h` (human-readable): Mostra le dimensioni in un formato leggibile (KB, MB).
    • `--delete`: Opzione potentissima. Se un file viene cancellato dalla sorgente, `rsync` lo cancellerà anche dalla destinazione, mantenendo le due cartelle perfettamente sincronizzate.
  • `>> "$FILE_LOG" 2>&1`: Questa parte reindirizza sia l'output standard (`stdout`) che l'output di errore (`stderr`) e li accoda (`>>`) al nostro file di log.

Automatizzare con `cron`

Per eseguire questo backup automaticamente ogni notte, puoi aggiungere una riga al tuo `crontab`:

0 3 * * * /percorso/al/tuo/backup.sh

Questo script può essere facilmente adattato per fare backup su un server remoto, usando `rsync` su SSH.

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza