1,878 21/03/2026 07/04/2026 3 min

Automatizzare il Backup di PostgreSQL con pg_dump e Cron su un VPS

Introduzione

La gestione dei dati è cruciale in ambienti di produzione. Se stai utilizzando un VPS con PostgreSQL, un backup regolare è fondamentale per evitare perdite di dati. In questo articolo, vedremo come configurare un sistema di backup automatico utilizzando pg_dump e cron.

Prerequisiti

  • Un VPS con sistema operativo Linux (Ubuntu, Debian, CentOS, ecc.)
  • PostgreSQL installato e in esecuzione
  • Accesso con permessi di superuser (root) o a un utente con permessi sufficienti
  • Conoscenze di base su cron e shell Linux

Step 1: Creare uno Script di Backup

Il primo passo è creare uno script che esegua il backup del tuo database utilizzando pg_dump.

#!/bin/bash

# Variabili
DB_NAME="nome_del_tuo_database"
BACKUP_DIR="/path/to/backup/"
TIMESTAMP=$(date +'%Y%m%d_%H%M%S')

# Creazione della directory di backup se non esiste
mkdir -p $BACKUP_DIR

# Esecuzione del backup
pg_dump $DB_NAME > ${BACKUP_DIR}${DB_NAME}_$TIMESTAMP.sql

# Output: Il backup sarà salvato in /path/to/backup/nome_del_tuo_database_YYYYMMDD_HHMMSS.sql

Perché funziona: pg_dump crea un file SQL contenente tutti i comandi necessari per ricreare il database.

Nota cross-distro:

Il comando pg_dump è disponibile su tutte le distribuzioni, ma assicurati che il pacchetto PostgreSQL sia installato.

Step 2: Rendere Eseguibile lo Script

Per eseguire lo script, è necessario renderlo eseguibile.

chmod +x /path/to/your_backup_script.sh

# Output: Nessun output atteso, ma il comando non dovrebbe restituire errori.

Perché funziona: Il comando chmod +x modifica i permessi del file per renderlo eseguibile.

Step 3: Pianificare il Backup con Cron

Ora dobbiamo pianificare l'esecuzione automatica dello script di backup utilizzando cron.

crontab -e

Aggiungi la seguente riga per eseguire il backup ogni giorno alle 2:00 AM:

0 2 * * * /path/to/your_backup_script.sh

# Output: Nessun output atteso, ma il comando non dovrebbe restituire errori.

Perché funziona: Questa riga di cron esegue lo script ogni giorno a un'ora specifica.

Nota cross-distro:

Il comando per modificare il crontab è lo stesso su tutte le distribuzioni.

Verifica Finale

Per verificare che il backup funzioni correttamente, puoi controllare il contenuto della directory di backup:

ls -l /path/to/backup/

# Output: Dovresti vedere i file di backup con il timestamp nel nome.

Se i file sono presenti, il backup è stato eseguito correttamente.

Troubleshooting

Ecco alcuni errori comuni che potresti incontrare:

  • Errore: pg_dump: database "nome_del_tuo_database" non trovato
    • Causa: Il nome del database è errato.
    • Soluzione: Controlla che il nome del database nel tuo script sia corretto.
  • Errore: bash: /path/to/your_backup_script.sh: Permission denied
    • Causa: Lo script non ha i permessi di esecuzione.
    • Soluzione: Assicurati di aver eseguito il comando chmod +x.
  • Errore: pg_dump: could not connect to server: Connection refused
    • Causa: Il server PostgreSQL non è in esecuzione.
    • Soluzione: Controlla lo stato del servizio PostgreSQL.

Conclusione

Abbiamo configurato un sistema di backup automatico per PostgreSQL utilizzando pg_dump e cron. Questo metodo garantisce che i dati siano salvati regolarmente senza intervento manuale. Il passo successivo è testare il ripristino del backup per assicurarti che funzioni come previsto.