Copia de Seguridad · 1 min read · Jan 30, 2026
Script de Shell Para Hacer Copia de Seguridad de Todas las Bases de Datos MySQL, Cada Tabla en un Archivo Individual y Subir a FTP Remoto
Script de Shell Para Hacer Copia de Seguridad de Todas las Bases de Datos MySQL, Cada Tabla en un Archivo Individual y Subir a FTP Remoto
Este script creará una copia de seguridad de cada tabla en cada base de datos (un archivo por tabla), lo comprimirá y lo subirá a un ftp remoto.
Primero, crea un usuario de mysql con privilegios de selección y bloqueo de tablas (o usa root).
Luego, usa este script en tu crontab cada hora:
#!/bin/sh
# Script de copia de seguridad del sistema + MySQL
# Copyright (c) 2008 Marchost
# Este script está licenciado bajo GNU GPL versión 2.0 o superior
# ---------------------------------------------------------------------
#########################
######DEBE SER MODIFICADO#####
### Configuración del sistema ###
BACKUP=YOUR_LOCAL_BACKUP_DIR
### Configuración de MySQL ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"
### Configuración del servidor FTP ###
FTPD="YOUR_FTP_BACKUP_DIR"
FTPU="YOUR_FTP_USER"
FTPP="YOUR_FTP_USER_PASSWORD"
FTPS="YOUR_FTP_SERVER_ADDRESS"
######NO HAGA MODIFICACIONES A CONTINUACIÓN#####
#########################################
### Binarios ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
### Hoy + hora en formato 24h ###
NOW=$(date +"%d%H")
### Crear directorio horario ###
mkdir $BACKUP/$NOW
### Obtener todos los nombres de bases de datos ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
### Crear directorio para cada base de datos, hacer copia de seguridad de tablas en archivos individuales ###
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 las tablas en un bonito archivo para subir ###
ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW
$TAR -cvf $ARCHIVE $ARCHIVED
### Volcar copia de seguridad usando FTP ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.