Backup MySQL · 1 min read · Jan 30, 2026
Script Shell Para Fazer Backup de Todos os Bancos de Dados MySQL, Cada Tabela em um Arquivo Individual e Fazer Upload para FTP Remoto
Script Shell Para Fazer Backup de Todos os Bancos de Dados MySQL, Cada Tabela em um Arquivo Individual e Fazer Upload para FTP Remoto
Este script criará um backup de cada tabela em cada banco de dados (um arquivo por tabela), comprimirá e fará upload para um ftp remoto.
Primeiro, crie um usuário mysql com privilégios de seleção e bloqueio de tabela (ou use root).
Então use este script no seu crontab a cada hora:
#!/bin/sh
# Script de backup do sistema + MySQL
# Copyright (c) 2008 Marchost
# Este script é licenciado sob a GNU GPL versão 2.0 ou superior
# ---------------------------------------------------------------------
#########################
######A SER MODIFICADO#####
### Configuração do Sistema ###
BACKUP=SEU_DIRETÓRIO_LOCAL_DE_BACKUP
### Configuração do MySQL ###
MUSER="USUÁRIO_MYSQL"
MPASS="SENHA_DO_USUÁRIO_MYSQL"
MHOST="localhost"
### Configuração do servidor FTP ###
FTPD="SEU_DIRETÓRIO_DE_BACKUP_FTP"
FTPU="SEU_USUÁRIO_FTP"
FTPP="SENHA_DO_USUÁRIO_FTP"
FTPS="ENDEREÇO_DO_SEU_SERVIDOR_FTP"
######NÃO FAÇA MODIFICAÇÕES ABAIXO#####
#########################################
### Binários ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
### Hoje + hora em formato 24h ###
NOW=$(date +"%d%H")
### Criar diretório horário ###
mkdir $BACKUP/$NOW
### Obter todos os nomes de bancos de dados ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
### Criar diretório para cada banco de dados, backup de tabelas em arquivos individuais ###
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
### Comprimir todas as tabelas em um arquivo bonito para upload ###
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 <Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.