Copia de seguridad de base de datos: PostgreSQL, MySQL, rsync, rclone, CloudBox
La copia de seguridad de la base de datos es uno de los procedimientos más importantes para garantizar la seguridad y fiabilidad de sitios web y aplicaciones. La pérdida de datos puede ocurrir por muchas razones: fallo del servidor, error del administrador, problemas de actualización, malware o simplemente error humano. Las copias de seguridad regulares te permiten restaurar rápidamente tu proyecto sin pérdida de datos.
Esta guía explica cómo hacer copias de seguridad de bases de datos PostgreSQL y MySQL, cómo almacenar copias de seguridad en un servidor Linux remoto usando rsync o scp, y cómo subirlas a almacenamiento en la nube usando rclone.
Copia de Seguridad de PostgreSQL
PostgreSQL proporciona la utilidad estándar pg_dump, que permite crear una copia completa de la base de datos como un archivo SQL.
Ejemplo de creación de una copia de seguridad:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Explicación de los parámetros:
- -U myuser — nombre de usuario de la base de datos;
- -h localhost — dirección del servidor (puede omitirse si es local);
- mydatabase — nombre de la base de datos;
- /backup/... — ruta de destino;
- $(date +%F) — añade la fecha actual al nombre del archivo.
Para ahorrar espacio, comprime la copia de seguridad inmediatamente:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Para hacer una copia de seguridad de todas las bases de datos en el servidor:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
Copia de Seguridad de MySQL
Para MySQL y MariaDB, utiliza la utilidad mysqldump.
Ejemplo de copia de seguridad de una sola base de datos:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Cuando ejecutes este comando, el sistema pedirá la contraseña del usuario.
Para hacer una copia de seguridad de todas las bases de datos:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Para incluir procedimientos almacenados y triggers, añade las opciones --routines --triggers.
Copia de Seguridad en CloudBox
CloudBox de INTROSERV es una solución de almacenamiento en la nube que soporta múltiples protocolos de conexión (incluyendo rsync, scp, rsync sobre SSH, WebDAV). La facilidad de uso de CloudBox simplifica significativamente las tareas de carga, gestión y recuperación de datos.
Puedes usarlo como una ubicación remota para almacenar tus copias de seguridad de bases de datos. A continuación se detallan los pasos de configuración y ejemplos de scripts.
Paso 1. Obtener Acceso a CloudBox
Ordena uno de los planes disponibles de CloudBox en nuestro sitio web — https://introserv.com/solutions/cloudbox/
Después del pago, el servicio estará disponible en minutos. Tras la activación del servicio, recibirás los detalles de conexión:
- dirección del servidor (box$$$$$.introserv.cloud)
- nombre de usuario (box$$$$$) y contraseña
Paso 2. Conexión y Sincronización Usando rsync o scp
Usando rsync (recomendado):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Dónde:
- user — nombre de usuario de CloudBox;
- cloudbox-server — dirección de conexión;
- /path_to_cloudbackups/ — ruta en CloudBox.
Para operación automatizada, es recomendable configurar claves SSH.
1) Genera una clave pública:
ssh-keygen -t rsa
2) Copia el contenido del archivo de clave pública creado, por ejemplo, /root/.ssh/id_rsa.pub al portapapeles.
3) Ve a la sección "Perfil" (pasa el ratón sobre el icono de usuario en la parte superior derecha), añade el contenido de la clave al campo "Claves públicas" y guarda la configuración.


Después de esto, rsync funcionará sin solicitudes de contraseña, lo cual es conveniente para trabajos cron.
Alternativa — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Paso 3. Conexión y Sincronización Usando rclone
Si deseas usar rclone para interactuar con CloudBox, configúralo de la siguiente manera.
1) Instala rclone:
sudo apt install rclone
2) Inicia la configuración:
rclone config
Durante la configuración selecciona:
- n — para crear un nuevo remoto;
- nombre, por ejemplo,
cloudbox; - tipo de almacenamiento — elige
sftpossh; - ingresa la dirección del servidor en formato
box$$$$$.introserv.cloud, nombre de usuario en formatobox$$$$$, puerto (SSH — por defecto 22), ruta del directorio; - realiza la autorización (si es necesario).
Prueba la conexión:
rclone ls cloudbox:/path_to_cloudbackups/
Copia los datos de la copia de seguridad:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Sincroniza con eliminación de archivos que faltan localmente:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Si es necesario — cifra los archivos antes de transferir:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Paso 4. Ejemplo de Script de Automatización con CloudBox
Crea el 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 # Subir a CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Subir a CloudBox (opción rclone, descomentar si se usa) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Eliminar copias de seguridad de más de 7 días find /backup/ -type f -mtime +7 -delete
Luego añade un trabajo cron (el script se ejecuta diariamente a las 2:00 AM):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Consideraciones importantes:
- Asegúrate de que la conexión a CloudBox sea estable y el ancho de banda sea suficiente.
- Configura monitoreo: verifica que los archivos se estén copiando realmente.
- Prueba periódicamente la restauración desde las copias de seguridad de CloudBox.
- Cuando uses datos confidenciales — considera cifrar las copias de seguridad.
Copiar a un Servidor Linux Remoto vía SSH
Si deseas almacenar copias de seguridad no solo localmente sino también en otro servidor, usa rsync o scp.
Usando rsync (recomendado, ya que solo copia cambios):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Explicación de parámetros:
- user — nombre de usuario en el servidor remoto;
- remote.server — dirección IP o nombre de dominio del servidor remoto;
- /remote_backups/ — ruta para almacenar copias de seguridad.
Para trabajar sin ingresar una contraseña, configura claves SSH.
Genera claves SSH:
ssh-keygen -t rsa
Copia la clave al servidor remoto:
ssh-copy-id [email protected]
Después de esto, rsync funcionará sin solicitudes de contraseña, lo cual es conveniente para trabajos cron.
Alternativa — usando scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Copiar a Almacenamiento en la Nube vía rclone
Si necesitas almacenar copias de seguridad en la nube (Google Drive, Dropbox, Amazon S3, etc.), usa rclone — una herramienta universal para sincronizar datos con varios servicios en la nube.
Instalación:
sudo apt install rclone
Configuración:
rclone config
Sigue los pasos de configuración interactiva:
- Selecciona n para crear una nueva conexión;
- Ingresa un nombre, por ejemplo,
remote; - Selecciona el tipo de almacenamiento (por ejemplo,
s3,drive,dropbox); - Ingresa las claves de acceso o autoriza a través del navegador.
Verifica la conexión:
rclone ls remote:path
Ejemplo de carga de copias de seguridad a la nube:
rclone copy /backup/ remote:db-backups/ --progress
Comando de sincronización (elimina archivos que faltan localmente):
rclone sync /backup/ remote:db-backups/ --progress
También puedes cifrar archivos antes de subirlos:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Seguridad y Control
- Almacena copias de seguridad en al menos dos ubicaciones — localmente y remotamente.
- Verifica regularmente que las copias de seguridad se crean y suben con éxito.
- Realiza restauraciones de prueba al menos una vez al mes.
- Cifra archivos que contengan datos sensibles si usas nubes públicas:
gpg -c /backup/mysql_mydatabase.sql.gz
- Asegúrate de que los permisos de archivo para
/backupsean adecuados y protege tus credenciales de base de datos.
Restauración desde Copia de Seguridad
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Conclusión
Hacer copias de seguridad de bases de datos PostgreSQL y MySQL es un procedimiento simple pero críticamente importante. Incluso la infraestructura más confiable no puede protegerte de errores humanos o fallos técnicos. La mejor estrategia es realizar copias de seguridad automáticas regulares almacenadas en al menos un servidor externo y en la nube, con pruebas de recuperación periódicas.
Usando una combinación de pg_dump, mysqldump, rsync, rclone y cron, puedes construir un sistema de copias de seguridad confiable y completamente automatizado sin ningún software de terceros de pago. Este enfoque es fácil de implementar y adecuado para todos los sistemas Linux.