Copia de seguridad de base de datos: PostgreSQL, MySQL, rsync, rclone, CloudBox | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

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.

Configuración de perfil de CloudBox
Campo de claves públicas de CloudBox

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 sftp o ssh;
  • ingresa la dirección del servidor en formato box$$$$$.introserv.cloud, nombre de usuario en formato box$$$$$, 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:

  1. Selecciona n para crear una nueva conexión;
  2. Ingresa un nombre, por ejemplo, remote;
  3. Selecciona el tipo de almacenamiento (por ejemplo, s3, drive, dropbox);
  4. 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 /backup sean 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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA