
Implementar copias de seguridad automáticas en Linux es una de las medidas más importantes para evitar la pérdida de datos. Un servidor puede fallar por errores humanos, ataques, ransomware, actualizaciones fallidas, corrupción de disco, eliminación accidental, problemas eléctricos o fallas de hardware. Si no existe una copia de seguridad confiable, recuperar la información puede ser difícil, costoso o incluso imposible.
En Linux existen muchas formas de hacer backups: desde scripts simples con rsync y tar, hasta soluciones más avanzadas como BorgBackup, Restic o sistemas empresariales de respaldo. Para empezar, lo más práctico es comprender los fundamentos: qué archivos respaldar, cómo automatizar con Cron, cómo guardar logs, cómo rotar copias antiguas y cómo probar la restauración.
Idea clave: una copia de seguridad no es solo “copiar archivos”. Un buen backup debe ser automático, verificable, protegido, almacenado fuera del servidor principal y probado mediante restauración.
¿Por qué necesitas copias de seguridad automáticas?
Las copias manuales suelen fallar porque dependen de la memoria, disciplina y disponibilidad de una persona. En cambio, una copia automática se ejecuta en horarios definidos, registra resultados y reduce el riesgo de olvidar una tarea crítica.
En servidores Linux, las copias de seguridad automáticas son esenciales para proteger sitios web, bases de datos, configuraciones del sistema, certificados, aplicaciones, archivos de usuarios y scripts de administración. También ayudan a recuperarse rápidamente cuando una actualización rompe un servicio o cuando un archivo importante se elimina por error.
Riesgos que un backup ayuda a reducir
- Eliminación accidental de archivos.
- Corrupción de bases de datos.
- Errores durante actualizaciones o migraciones.
- Fallas de disco o almacenamiento.
- Ataques de ransomware o malware.
- Configuraciones dañadas.
- Pérdida de archivos web o documentos críticos.
- Errores humanos en tareas administrativas.
Qué debes respaldar en un servidor Linux
No todo el sistema necesita copiarse de la misma forma. En muchos casos, lo más importante es respaldar datos, configuraciones, bases de datos, certificados, aplicaciones y scripts propios. El sistema operativo puede reinstalarse, pero los datos y configuraciones únicas pueden ser difíciles de reconstruir.
| Elemento | Ruta común | Importancia |
|---|---|---|
| Configuraciones del sistema | /etc |
Permite recuperar servicios, red, usuarios, firewall y parámetros clave. |
| Sitios web | /var/www |
Protege archivos de aplicaciones web, CMS y contenido publicado. |
| Bases de datos | MySQL, MariaDB, PostgreSQL | Contienen información transaccional, usuarios, artículos, pedidos o registros. |
| Archivos de usuarios | /home |
Protege documentos, claves, scripts personales y datos de trabajo. |
| Certificados | /etc/letsencrypt |
Evita perder certificados, claves y configuración HTTPS. |
| Scripts propios | /opt/scripts, /usr/local/bin |
Permite restaurar automatizaciones y tareas administrativas. |
Regla 3-2-1: una estrategia simple y efectiva
Una estrategia básica recomendada en administración de sistemas es aplicar la regla 3-2-1: tener tres copias de los datos, en dos medios diferentes y una copia fuera del servidor principal. Esto reduce el riesgo de perder todo si el equipo falla o si un atacante compromete el servidor.
Ejemplo de regla 3-2-1
- Primera copia: datos originales en el servidor.
- Segunda copia: backup local en otro disco o volumen.
- Tercera copia: backup remoto en otro servidor, NAS o almacenamiento externo.
- Una copia fuera: ubicada fuera del servidor principal o de la misma infraestructura.
Error crítico: guardar el único backup dentro del mismo servidor no es suficiente. Si el disco falla, si el servidor es comprometido o si se borra el directorio de respaldo, también perderás la copia.
Opción 1: backup automático con rsync
rsync es una de las herramientas más usadas para respaldar y sincronizar archivos en Linux. Ubuntu la describe como una herramienta eficiente para copiar y respaldar datos entre una ubicación origen y una ubicación destino, transfiriendo solo archivos diferentes o modificados. Esto la hace muy útil para copias incrementales simples y sincronización local o remota.
Primero instala rsync si no está disponible:
# Debian, Ubuntu y derivados sudo apt update sudo apt install rsync -y # Rocky, AlmaLinux, RHEL y Fedora sudo dnf install rsync -y
Ejemplo básico de copia local:
rsync -avh /var/www/ /backup/var-www/
Ejemplo de copia remota hacia otro servidor por SSH:
rsync -avh /var/www/ usuario@servidor-remoto:/backups/var-www/
Tip: revisa bien la barra final en las rutas de rsync. /var/www/ copia el contenido de la carpeta; /var/www puede copiar la carpeta completa dentro del destino.
Crear un script de backup con rsync
Para automatizar el proceso, crea una carpeta para scripts y un archivo llamado backup-rsync.sh.
sudo mkdir -p /opt/scripts sudo nano /opt/scripts/backup-rsync.sh
Contenido del script:
#!/bin/bash ORIGEN="/var/www/" DESTINO="/backup/var-www/" LOG="/var/log/backup-rsync.log" echo "==== Inicio backup: $(date) ====" >> "$LOG" mkdir -p "$DESTINO" rsync -avh --delete "$ORIGEN" "$DESTINO" >> "$LOG" 2>&1 if [ $? -eq 0 ]; then echo "Backup completado correctamente: $(date)" >> "$LOG" else echo "ERROR durante el backup: $(date)" >> "$LOG" fi echo "==== Fin backup ====" >> "$LOG"
Da permisos de ejecución:
sudo chmod +x /opt/scripts/backup-rsync.sh
Cuidado con --delete: esta opción elimina en el destino los archivos que ya no existen en el origen. Es útil para sincronizar, pero peligrosa si configuras mal las rutas. Prueba primero sin --delete.
Programar el backup con Cron
Cron permite ejecutar tareas de forma automática según una programación. Debian explica que la programación de tareas basada en tiempo es una parte integral de sistemas tipo Unix y que normalmente se realiza mediante cron.
Edita la crontab del usuario root si el script necesita permisos administrativos:
sudo crontab -e
Programa el backup todos los días a las 2:00 a.m.:
0 2 * * * /opt/scripts/backup-rsync.sh
Verifica que la tarea quedó registrada:
sudo crontab -l
Recomendación: prueba el script manualmente antes de programarlo. Cron ejecuta tareas con un entorno reducido, por eso conviene usar rutas absolutas y guardar logs.
Opción 2: backup comprimido con tar
tar es una herramienta clásica para crear archivos de respaldo. GNU Tar documenta que permite crear y extraer archivos desde archivos comprimidos o no comprimidos. Es ideal cuando quieres generar un único archivo con fecha, moverlo a otra ubicación o conservar varias versiones.
Crea un script llamado backup-tar.sh:
sudo nano /opt/scripts/backup-tar.sh
Contenido del script:
#!/bin/bash FECHA=$(date +%Y-%m-%d_%H-%M-%S) DESTINO="/backup/archivos" LOG="/var/log/backup-tar.log" mkdir -p "$DESTINO" echo "Inicio backup TAR: $(date)" >> "$LOG" tar -czf "$DESTINO/backup-etc-www-$FECHA.tar.gz" /etc /var/www >> "$LOG" 2>&1 if [ $? -eq 0 ]; then echo "Backup creado: $DESTINO/backup-etc-www-$FECHA.tar.gz" >> "$LOG" else echo "ERROR creando backup TAR: $(date)" >> "$LOG" fi
Da permisos y programa la tarea:
sudo chmod +x /opt/scripts/backup-tar.sh sudo crontab -e
Ejecutar todos los días a las 3:00 a.m.:
0 3 * * * /opt/scripts/backup-tar.sh
Respaldar bases de datos MySQL o MariaDB
Los archivos de una aplicación web no son suficientes si el contenido está en una base de datos. En CMS como Joomla, WordPress, Drupal o sistemas propios, gran parte de la información vive en MySQL o MariaDB. Para respaldarla, puedes usar mysqldump.
#!/bin/bash FECHA=$(date +%Y-%m-%d_%H-%M-%S) DESTINO="/backup/mysql" LOG="/var/log/backup-mysql.log" mkdir -p "$DESTINO" mysqldump -u usuario -p'CONTRASENA' nombre_base | gzip > "$DESTINO/base-$FECHA.sql.gz" if [ $? -eq 0 ]; then echo "Backup MySQL correcto: $FECHA" >> "$LOG" else echo "ERROR en backup MySQL: $FECHA" >> "$LOG" fi
Importante: evita dejar contraseñas visibles dentro de scripts. En producción, usa archivos de credenciales protegidos, usuarios de base de datos con permisos mínimos y permisos estrictos sobre el script.
Respaldar bases de datos PostgreSQL
Para PostgreSQL, una forma común de crear respaldos lógicos es usar pg_dump. Este tipo de copia permite restaurar una base específica en otro servidor compatible.
#!/bin/bash FECHA=$(date +%Y-%m-%d_%H-%M-%S) DESTINO="/backup/postgresql" LOG="/var/log/backup-postgresql.log" mkdir -p "$DESTINO" sudo -u postgres pg_dump nombre_base | gzip > "$DESTINO/base-postgres-$FECHA.sql.gz" if [ $? -eq 0 ]; then echo "Backup PostgreSQL correcto: $FECHA" >> "$LOG" else echo "ERROR en backup PostgreSQL: $FECHA" >> "$LOG" fi
Rotación de backups: evita llenar el disco
Automatizar backups sin eliminar copias antiguas puede llenar el disco. Un servidor sin espacio puede fallar, detener bases de datos o afectar servicios web. Por eso conviene aplicar una política de retención.
Ejemplo: eliminar archivos de backup con más de 15 días:
find /backup/archivos -type f -name "*.tar.gz" -mtime +15 -delete find /backup/mysql -type f -name "*.sql.gz" -mtime +15 -delete find /backup/postgresql -type f -name "*.sql.gz" -mtime +15 -delete
Consejo: antes de usar -delete, prueba con -print para verificar qué archivos serán eliminados.
Opción 3: BorgBackup para copias deduplicadas y cifradas
BorgBackup es una herramienta avanzada para respaldos eficientes. Su documentación indica que es un programa de backup con deduplicación y que opcionalmente soporta compresión y cifrado autenticado. Esto permite ahorrar espacio cuando muchos archivos se repiten entre respaldos y proteger los datos almacenados.
Instalación básica:
# Debian, Ubuntu y derivados sudo apt install borgbackup -y # Fedora sudo dnf install borgbackup -y
Inicializar un repositorio cifrado:
borg init --encryption=repokey /backup/borg-repo
Crear un backup:
borg create --stats --compression zstd \ /backup/borg-repo::backup-$(date +%Y-%m-%d_%H-%M-%S) \ /etc /var/www /home
Listar respaldos existentes:
borg list /backup/borg-repo
Ventaja: BorgBackup es ideal cuando necesitas respaldos eficientes, con varias versiones históricas, compresión y cifrado.
Backup remoto con rsync y SSH
Una copia remota protege mejor que una copia ubicada solo en el mismo servidor. Puedes usar rsync sobre SSH para enviar respaldos a otro equipo Linux, un NAS o un servidor dedicado a backups.
Primero configura autenticación con clave SSH:
ssh-keygen -t ed25519 ssh-copy-id usuario@servidor-remoto
Luego prueba la copia:
rsync -avh /backup/ usuario@servidor-remoto:/backups/mi-servidor/
Seguridad: el servidor remoto de backups debe tener permisos restringidos. No uses la misma contraseña ni el mismo usuario administrativo para todo.
Cómo restaurar una copia de seguridad
Una copia de seguridad solo es útil si puedes restaurarla. Por eso, además de crear backups, debes practicar restauraciones en una carpeta temporal o servidor de prueba.
Restaurar con rsync
rsync -avh /backup/var-www/ /var/www/
Restaurar un archivo tar.gz
tar -xzf backup-etc-www-2026-06-13_03-00-00.tar.gz -C /tmp/restauracion
Restaurar con BorgBackup
borg list /backup/borg-repo borg extract /backup/borg-repo::nombre-del-backup
Tip de recuperación: documenta el procedimiento de restauración. En una emergencia, no querrás improvisar comandos críticos bajo presión.
Checklist rápido para backups automáticos
Antes de confiar en tu backup
- El script fue probado manualmente.
- La tarea está programada con Cron.
- Los logs se guardan correctamente.
- El backup no está solo en el mismo servidor.
- Existe rotación para no llenar el disco.
- Las bases de datos están incluidas.
- Los certificados y configuraciones críticas están respaldados.
- Los permisos del backup están restringidos.
- La restauración fue probada en un entorno seguro.
- La política de retención está documentada.
Errores comunes al implementar backups en Linux
Errores que debes evitar
- Guardar el único backup en el mismo disco del servidor.
- No respaldar bases de datos.
- No probar la restauración.
- No guardar logs de ejecución.
- No aplicar rotación y llenar el disco.
- Usar
rsync --deletesin validar rutas. - Guardar contraseñas visibles en scripts.
- No cifrar backups con información sensible.
- No documentar qué se respalda y cuándo.
- No verificar permisos del directorio de backups.
Artículos que recomendamos
- Cómo automatizar tareas en Linux utilizando Bash y Cron paso a paso
- Guía práctica de ciberseguridad: cómo proteger servidores Linux frente a ataques comunes
- Cifrado y encriptación en Linux: herramientas esenciales para proteger archivos, discos y backups
- Cómo instalar y configurar un servidor Linux desde cero
- Cómo detectar si tu servidor Linux tiene problemas de seguridad
Tip final: agenda una prueba de restauración cada cierto tiempo. La pregunta no es solo “¿se está haciendo el backup?”, sino “¿puedo recuperar mis datos cuando lo necesite?”.
Conclusión
Implementar copias de seguridad automáticas en Linux es una medida esencial para evitar la pérdida de datos. Con herramientas como rsync, tar, Cron y BorgBackup, puedes crear una estrategia de respaldo adaptada a servidores pequeños, sitios web, bases de datos, laboratorios o entornos empresariales.
Para empezar, puedes crear scripts Bash que copien archivos críticos, compriman configuraciones, exporten bases de datos y registren logs. Luego, con Cron, puedes programar su ejecución diaria, semanal o según tus necesidades. Para escenarios más avanzados, BorgBackup permite deduplicación, compresión y cifrado.
La clave no está solo en crear backups, sino en protegerlos, rotarlos, almacenarlos fuera del servidor principal y probar la restauración. Un backup confiable puede convertir un incidente grave en una recuperación controlada.
Resumen final
Para implementar copias de seguridad automáticas en Linux, define qué datos respaldar, crea scripts con rsync, tar o BorgBackup, programa la ejecución con Cron, guarda logs, aplica rotación, copia respaldos fuera del servidor principal, protege credenciales y prueba restauraciones periódicamente. Un backup automático bien diseñado reduce el riesgo de pérdida de datos y mejora la continuidad del servicio.


