Backup del database: PostgreSQL, MySQL, rsync, rclone, CloudBox
Il backup del database è una delle procedure più importanti per garantire la sicurezza e l'affidabilità di siti web e applicazioni. La perdita di dati può verificarsi per molte ragioni: guasto del server, errore dell'amministratore, problemi di aggiornamento, malware o semplicemente errore umano. I backup regolari consentono di ripristinare rapidamente il tuo progetto senza perdita di dati.
Questa guida spiega come eseguire il backup dei database PostgreSQL e MySQL, come memorizzare i backup su un server Linux remoto utilizzando rsync o scp, e come caricarli su un cloud storage utilizzando rclone.
Backup di PostgreSQL
PostgreSQL fornisce l'utilità standard pg_dump, che consente di creare una copia completa del database come file SQL.
Esempio di creazione di un backup:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Spiegazione dei parametri:
- -U myuser — nome utente del database;
- -h localhost — indirizzo del server (può essere omesso se locale);
- mydatabase — nome del database;
- /backup/... — percorso di destinazione;
- $(date +%F) — aggiunge la data corrente al nome del file.
Per risparmiare spazio, comprimi immediatamente il backup:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Per eseguire il backup di tutti i database sul server:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
Backup di MySQL
Per MySQL e MariaDB, utilizza l'utilità mysqldump.
Esempio di backup di un singolo database:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Quando esegui questo comando, il sistema chiederà la password dell'utente.
Per eseguire il backup di tutti i database:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Per includere procedure memorizzate e trigger, aggiungi le opzioni --routines --triggers.
Backup su CloudBox
CloudBox di INTROSERV è una soluzione di cloud storage che supporta più protocolli di connessione (inclusi rsync, scp, rsync su SSH, WebDAV). La facilità d'uso di CloudBox semplifica notevolmente le attività di caricamento, gestione e recupero dei dati.
Puoi usarlo come posizione remota per memorizzare i tuoi backup di database. Di seguito sono riportati i dettagli di configurazione e gli esempi di script.
Passo 1. Ottenere l'accesso a CloudBox
Ordina uno dei piani CloudBox disponibili sul nostro sito web — https://introserv.com/solutions/cloudbox/
Dopo il pagamento, il servizio diventa disponibile entro pochi minuti. Dopo l'attivazione del servizio, riceverai i dettagli di connessione:
- indirizzo del server (box$$$$$.introserv.cloud)
- nome utente (box$$$$$) e password
Passo 2. Connessione e Sincronizzazione Utilizzando rsync o scp
Utilizzando rsync (consigliato):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Dove:
- user — nome utente di CloudBox;
- cloudbox-server — indirizzo di connessione;
- /path_to_cloudbackups/ — percorso su CloudBox.
Per un funzionamento automatizzato, è consigliabile configurare le chiavi SSH.
1) Genera una chiave pubblica:
ssh-keygen -t rsa
2) Copia il contenuto del file della chiave pubblica creata, ad esempio /root/.ssh/id_rsa.pub negli appunti.
3) Vai alla sezione "Profilo" (passa il mouse sopra l'icona dell'utente in alto a destra), aggiungi il contenuto della chiave al campo "Chiavi pubbliche" e salva le impostazioni.


Dopo questo, rsync funzionerà senza richieste di password, il che è conveniente per i lavori cron.
Alternativa — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Passo 3. Connessione e Sincronizzazione Utilizzando rclone
Se desideri utilizzare rclone per interagire con CloudBox, configurarlo come segue.
1) Installa rclone:
sudo apt install rclone
2) Avvia la configurazione:
rclone config
Durante la configurazione seleziona:
- n — per creare un nuovo remoto;
- nome, ad esempio,
cloudbox; - tipo di storage — scegli
sftpossh; - inserisci l'indirizzo del server nel formato
box$$$$$.introserv.cloud, nome utente nel formatobox$$$$$, porta (SSH — predefinito 22), percorso della directory; - esegui l'autorizzazione (se richiesta).
Testa la connessione:
rclone ls cloudbox:/path_to_cloudbackups/
Copia i dati di backup:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Sincronizza con eliminazione dei file mancanti localmente:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Se necessario — crittografa i file prima del trasferimento:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Passo 4. Esempio di Script di Automazione con CloudBox
Crea lo script /usr/local/bin/db_backup_cloudbox.sh:
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Carica su CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Carica su CloudBox (opzione rclone, decommenta se usata) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Rimuovi i backup più vecchi di 7 giorni find /backup/ -type f -mtime +7 -delete
Quindi aggiungi un lavoro cron (lo script viene eseguito giornalmente alle 2:00 AM):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Considerazioni importanti:
- Assicurati che la connessione a CloudBox sia stabile e che la larghezza di banda sia sufficiente.
- Configura il monitoraggio: verifica che i file vengano effettivamente copiati.
- Testa periodicamente il ripristino dai backup di CloudBox.
- Quando utilizzi dati riservati — considera la crittografia dei backup.
Copia su un Server Linux Remoto tramite SSH
Se desideri memorizzare i backup non solo localmente ma anche su un altro server, utilizza rsync o scp.
Utilizzando rsync (consigliato, poiché copia solo le modifiche):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Spiegazione dei parametri:
- user — nome utente sul server remoto;
- remote.server — indirizzo IP o nome di dominio del server remoto;
- /remote_backups/ — percorso per memorizzare i backup.
Per lavorare senza inserire una password, configura le chiavi SSH.
Genera chiavi SSH:
ssh-keygen -t rsa
Copia la chiave sul server remoto:
ssh-copy-id [email protected]
Dopo questo, rsync funzionerà senza richieste di password, il che è conveniente per i lavori cron.
Alternativa — utilizzando scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Copia su Cloud Storage tramite rclone
Se hai bisogno di memorizzare i backup nel cloud (Google Drive, Dropbox, Amazon S3, ecc.), utilizza rclone — uno strumento universale per sincronizzare i dati con vari servizi cloud.
Installazione:
sudo apt install rclone
Configurazione:
rclone config
Segui i passaggi di configurazione interattiva:
- Seleziona n per creare una nuova connessione;
- Inserisci un nome, ad esempio
remote; - Seleziona il tipo di storage (ad esempio
s3,drive,dropbox); - Inserisci le chiavi di accesso o autorizza tramite browser.
Verifica la connessione:
rclone ls remote:path
Esempio di caricamento dei backup nel cloud:
rclone copy /backup/ remote:db-backups/ --progress
Comando di sincronizzazione (rimuove i file mancanti localmente):
rclone sync /backup/ remote:db-backups/ --progress
Puoi anche crittografare i file prima del caricamento:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sicurezza e Controllo
- Memorizza i backup in almeno due posizioni — localmente e remotamente.
- Verifica regolarmente che i backup vengano creati e caricati con successo.
- Esegui test di ripristino almeno una volta al mese.
- Crittografa i file contenenti dati sensibili se utilizzi cloud pubblici:
gpg -c /backup/mysql_mydatabase.sql.gz
- Assicurati di avere i permessi corretti per i file in
/backupe proteggi le tue credenziali del database.
Ripristino da Backup
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Conclusione
Eseguire il backup dei database PostgreSQL e MySQL è una procedura semplice ma di importanza critica. Anche l'infrastruttura più affidabile non può proteggerti da errori umani o guasti tecnici. La migliore strategia è eseguire backup automatici regolari memorizzati su almeno un server esterno e nel cloud, con test di ripristino periodici.
Utilizzando una combinazione di pg_dump, mysqldump, rsync, rclone e cron, puoi costruire un sistema di backup affidabile e completamente automatizzato senza alcun software di terze parti a pagamento. Questo approccio è facile da implementare e adatto a tutti i sistemi Linux.