Copias de seguridad incrementales en un VPS mediante rsync y cron | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Copias de seguridad incrementales en un VPS mediante rsync y cron

Introducción

Las copias de seguridad son esenciales para cualquier VPS. Le protegen frente a eliminaciones accidentales, errores de configuración, corrupción de datos o vulnerabilidades del servidor.

Este manual explica cómo configurar copias de seguridad incrementales utilizando:

  • rsync — una herramienta eficaz para copiar archivos
  • enlaces duros: para evitar la duplicación de datos en cada copia de seguridad
  • cron: para programar copias de seguridad automáticas

Resultado: cada instantánea es como una copia de seguridad completa, pero solo los archivos modificados ocupan espacio adicional. Este enfoque es sencillo, fiable y adecuado para la mayoría de las configuraciones habituales de VPS.

Cómo funcionan las copias de seguridad incrementales con rsync

rsync ofrece dos características clave:

  1. Sincronización únicamente de los archivos modificados
  2. Opción--link-dest: crea enlaces físicos para los archivos que no han cambiado, lo que permite tener varios directorios de copias de seguridad «completas» sin ocupar espacio adicional.

Ejemplo de estructura de directorios:

/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago

Cada carpeta aparece como una copia de seguridad completa, pero solo las diferencias ocupan espacio.

Requisitos previos

En el VPS:

  • Instalación de Linux
  • Acceso como root o como usuario con sudo
  • Espacio en disco suficiente para las instantáneas de copia de seguridad
  • Opcional: almacenamiento remoto si se realiza la copia de seguridad en otro servidor

Instala rsync si es necesario:

sudo apt update sudo apt install rsync

Warning

Detenga los servidores de bases de datos o excluya sus directorios de datos de la copia de seguridad. La copia de seguridad en línea de bases de datos mediante rsync puede provocar que la copia de seguridad de la base de datos resulte dañada.

Creación de los directorios de copia de seguridad

Elige una ubicación para las copias de seguridad. Normalmente:

  • Sistema de archivos local: /backups/
  • Disco externo: /mnt/storage/backups/
  • Servidor remoto a través de SSH: usuario@servidor-de-copias-de-seguridad:/data/backups/

Ejemplo (local):

sudo mkdir -p /backups sudo chmod 700 /backups

Comando básico de rsync para copias de seguridad incrementales

A continuación se muestra el comando clave de rsync:

rsync -a --delete \ --link-dest=/backups/daily.1 \ /source/data/ \ /backups/daily.0/

Explicación:

  • -a — modo de archivo (conserva permisos, propietarios, marcas de tiempo y enlaces simbólicos)
  • --delete — elimina los archivos eliminados en el origen
  • --link-dest: crea enlaces físicos a los archivos que no han cambiado en la instantánea anterior
  • /source/data/ — directorio del que se desea realizar una copia de seguridad
  • /backups/daily.0/ — instantánea de hoy

Script de rotación para instantáneas diarias

Crea un script para:

  1. Rotar las copias de seguridad existentes
  2. Crear una nueva copia de seguridad incremental
  3. Conservar N días (ejemplo: 7)

Crea un archivo:

sudo nano /usr/local/bin/backup_daily.sh

Pegar:

#!/bin/bash BACKUP_DIR="/backups/" SOURCE="/" EXCLUDE="/etc/backup-exclude.txt" DAYS="7" #REMOTE_USER="<YOUR_REMOTE_USER>" #REMOTE_SERVER="<YOUR_REMOTE_SERVER>" REMOTE_DIR="/backups/" # Rotate for ((i=DAYS-1; i>=0; i--)); do if [ -d "$BACKUP_DIR/daily.$i" ]; then rm -rf "$BACKUP_DIR/daily.$((i+1))" mv "$BACKUP_DIR/daily.$i" "$BACKUP_DIR/daily.$((i+1))" fi done # Prepare backup directories mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Perform incremental backup rsync -a --delete \ --link-dest="$BACKUP_DIR/daily.1" \ --exclude-from="$EXCLUDE" \ "$SOURCE" "$BACKUP_DIR/daily.0" if [ -n "$REMOTE_USER" ] && [ -n "$REMOTE_SERVER" ] && [ -n "$REMOTE_DIR" ]; then rsync -azv --delete "$BACKUP_DIR" "$REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR" fi

Guardar y salir. Hacerlo ejecutable:

sudo chmod +x /usr/local/bin/backup_daily.sh

Puedes modificar las variables que aparecen al principio del script para adaptarlo a tus necesidades. Cambia SOURCE por un directorio específico si, por ejemplo, no necesitas una copia de seguridad completa del sistema de archivos raíz.

Excluir directorios innecesarios

Crea un archivo de exclusiones:

sudo nano /etc/backup-exclude.txt

Exclusiones habituales:

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/cache
  • /copias de seguridad

Programar copias de seguridad con cron

Editar crontab:

sudo crontab -e

Añadir (copia de seguridad a las 03:00 todos los días):

0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1

Esto garantiza la realización de copias de seguridad automáticas periódicas.

Realizar una copia de seguridad en un servidor remoto (opcional)

Si deseas realizar una copia de seguridad externa, sigue los siguientes pasos. Crea una carpeta de destino en el servidor de destino:

mkdir -p /backups

Asegúrate de que las claves SSH estén configuradas. Ejecuta el siguiente comando para generar tu clave SSH:

ssh-keygen

Sustituye <YOUR_REMOTE_USER> por tu nombre de usuario en el servidor remoto, <YOUR_REMOTE_SERVER> por el nombre de dominio de tu servidor remoto y ejecuta el siguiente comando para copiar tu clave SSH al servidor remoto:

ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>

Descomenta las variables REMOTE_USER y REMOTE_SERVER en la parte superior de tu archivo backup_daily.sh, sustituye <TU_USUARIO_REMOTO> por tu nombre de usuario en el servidor remoto, <TU_SERVIDOR_REMOTO> por el nombre de dominio de tu servidor remoto y guarda backup_daily.sh para habilitar la copia de seguridad remota.

Subir copias de seguridad a INTROSERV CloudBox

INTROSERV ofrece un servicio de almacenamiento en línea que te permite guardar, de forma automática o manual, copias seguras de tus archivos y datos importantes en servidores remotos. Para utilizarlo como almacenamiento de copias de seguridad remotas, inicia sesión en la interfaz web de CloudBox y añade tu clave pública SSH a tu perfil. La configuración del perfil se encuentra en la esquina superior derecha.

CloudBox profile settings

Introduce tu clave pública SSH en la sección «Claves públicas» para subir tu clave al servidor.

CloudBox public SSH key section

Descomente las variables REMOTE_USER y REMOTE_SERVER en la parte superior de su archivo backup_daily.sh, sustituya <YOUR_REMOTE_USER> por su nombre de usuario en el servidor de CloudBox, <YOUR_REMOTE_SERVER> por el nombre de dominio de tu servidor CloudBox y guarda el archivo backup_daily.sh para habilitar la copia de seguridad remota.

Prueba de las copias de seguridad

Antes de confiar plenamente en tu sistema, prueba las copias de seguridad.

  1. Ejecuta el script manualmente: sudo /usr/local/bin/backup_daily.sh
  2. Comprueba los tamaños: du -sh /backups/*. Solo debe haber una copia de seguridad de gran tamaño.
  3. Comprueba la integridad de los archivos: ls -l /backups/daily.0/etc/

Restauración de datos

Puedes restaurar cualquier archivo individual:

cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/

O restaurarlo todo:

sudo rsync -a /backups/daily.0/ /

Warning

La restauración de los directorios del sistema sobrescribe los archivos actuales.

Consideraciones de seguridad

  • Aplica permisos estrictos a los directorios de copia de seguridad (chmod 700).
  • Si utilizas SSH, desactiva el inicio de sesión con contraseña y utiliza únicamente claves.
  • Si es posible, no almacenes las copias de seguridad en el mismo disco que el servidor.
  • Cifra las copias de seguridad remotas utilizando LUKS o almacenamiento cifrado si es necesario.

Supervisión y registro

El registro ya está configurado en cron: /var/log/backup.log

Compruébalo periódicamente:

tail -f /var/log/backup.log

Conclusión

El uso de rsync con cron ofrece:

  • Copias de seguridad incrementales rápidas
  • Un uso eficiente del disco mediante enlaces duros
  • Proceso de restauración sencillo
  • Programación totalmente automatizada

Este método es fiable y sencillo para los administradores novatos, y funciona a la perfección en configuraciones de VPS con 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