Backup MySQL · 1 min read · Jan 30, 2026

Script Shell Per Eseguire Il Backup Di Tutte Le Basi Di Dati MySQL, Ogni Tabella In Un File Individuale E Caricare Su FTP Remoto

Script Shell Per Eseguire Il Backup Di Tutte Le Basi Di Dati MySQL, Ogni Tabella In Un File Individuale E Caricare Su FTP Remoto

Questo script creerà un backup di ogni tabella in ogni database (un file per tabella), lo comprimerà e lo caricherà su un ftp remoto.

Prima crea un utente mysql con privilegi di selezione e blocco tabelle (o usa root).

Poi usa questo script nel tuo crontab ogni ora:

#!/bin/sh
# Script di backup di sistema + MySQL
# Copyright (c) 2008 Marchost
# Questo script è concesso in licenza sotto GNU GPL versione 2.0 o superiore
# ---------------------------------------------------------------------

#########################
######DA MODIFICARE#####

### Configurazione del sistema ###
BACKUP=YOUR_LOCAL_BACKUP_DIR

### Configurazione di MySQL ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"

### Configurazione del server FTP ###
FTPD="YOUR_FTP_BACKUP_DIR"
FTPU="YOUR_FTP_USER"
FTPP="YOUR_FTP_USER_PASSWORD"
FTPS="YOUR_FTP_SERVER_ADDRESS"

######NON MODIFICARE QUI SOTTO#####
#########################################

### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### Oggi + ora in formato 24h ###
NOW=$(date +"%d%H")

### Crea la directory oraria ###

mkdir $BACKUP/$NOW

### Ottieni tutti i nomi dei database ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do

### Crea una directory per ogni database, backup delle tabelle in file individuali ###
  mkdir $BACKUP/$NOW/$db

  for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
    FILE=$BACKUP/$NOW/$db/$i.sql.gz
    echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
  done
done

### Comprimi tutte le tabelle in un bel file da caricare ###

ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -cvf $ARCHIVE $ARCHIVED

### Dump backup usando FTP ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.