Backup del database: PostgreSQL, MySQL, rsync, rclone, CloudBox | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

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.

Impostazioni del profilo CloudBox
Campo chiavi pubbliche CloudBox

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 sftp o ssh;
  • inserisci l'indirizzo del server nel formato box$$$$$.introserv.cloud, nome utente nel formato box$$$$$, 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:

  1. Seleziona n per creare una nuova connessione;
  2. Inserisci un nome, ad esempio remote;
  3. Seleziona il tipo di storage (ad esempio s3, drive, dropbox);
  4. 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 /backup e 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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA