Bash Avanzado
Introducción
Los backups automatizados son esenciales para proteger datos críticos en servidores. En esta guía, combinaremos rsync
(para copias eficientes) y cron
(para programación) en un script Bash, agregando notificaciones por email con mailutils
.
1. Configuración Inicial
Requisitos
- Ubuntu Server 22.04 LTS o superior.
- Acceso root o sudo.
- Paquetes instalados:bashCopyDownloadsudo apt update && sudo apt install rsync mailutils -y
2. Script de Backup con rsync
Código completo
#!/bin/bash # Script: /usr/local/bin/backup_manager.sh # Directorios de origen y destino ORIGEN="/var/www/html" DESTINO="/backups/web_backup_$(date +'%Y%m%d')" # Opciones de rsync rsync -avzP --delete "$ORIGEN" "$DESTINO" \ --log-file="/var/log/backup_$(date +'%F').log" # Verificación y notificación if [ $? -eq 0 ]; then echo "Backup completado: $(date)" | mail -s "Éxito: Backup $(date +'%F')" admin@example.com else echo "Error en el backup: $(date)" | mail -s "Fallo: Backup $(date +'%F')" admin@example.com fi
Explicación
-avzP
: Archivos comprimidos (-z
), modo verbose (-v
), y progreso (-P
).--delete
: Elimina archivos en el destino que ya no existen en el origen.$(date +'%Y%m%d')
: Formato de fecha para carpetas únicas.
3. Programación con cron
Editar crontab
sudo crontab -e
Agregar esta línea para ejecutar el script diariamente a las 2 AM:
0 2 * * * /usr/local/bin/backup_manager.sh
4. Configurar Notificaciones por Email
Instalar y probar mailutils
echo "Test de notificación" | mail -s "Prueba de email" admin@example.com
Nota: Configura /etc/postfix/main.cf
si usas un SMTP externo.
5. Monitoreo y Logs
- Verifica logs en
/var/log/backup_*.log
.
Conclusión
Este flujo automatizado garantiza:
✅ Eficiencia: rsync
solo transfiere cambios (ahorro de ancho de banda).
✅ Confiabilidad: Notificaciones inmediatas vía email.
✅ Auditoría: Logs detallados para troubleshooting.