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 <
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.