Curso de servidores linux
🎯 Objetivo de la práctica
✔ Crear un script de backup ✔ Guardar los backups con fecha ✔ Automatizarlo cada día ✔ Comprobar que funciona ✔ (Extra) Rotar backups antiguos
PARTE 1 - Preparar el entorno
Crear carpeta para los backups
Hazlo como root o con sudo:
1sudo mkdir -p /backups/mysql 2sudo chown $USER:$USER /backups/mysql
Comprobamos:
1ls -ld /backups/mysql
PARTE 2 - Script de backup manual
Crear el script
1nano ~/backup_mysql.sh
Contenido del script:
1#!/bin/bash 2 3# Variables 4FECHA=$(date +%Y-%m-%d) 5BACKUP_DIR="/backups/mysql" 6DB_USER="root" 7DB_PASS="TU_PASSWORD" 8DB_NAME="TU_BASE_DE_DATOS" 9 10# Crear backup 11mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_$FECHA.sql 12 13# Comprobación 14if [ $? -eq 0 ]; then 15 echo "Backup realizado correctamente: $FECHA" 16else 17 echo "❌ Error en el backup: $FECHA" 18fi
⚠️ Ojo didáctico: Aquí estamos poniendo la contraseña en claro → vale para prácticas, pero luego te explico cómo hacerlo bien en producción.
Dar permisos de ejecución
1chmod +x ~/backup_mysql.sh
Probar el script a mano
1./backup_mysql.sh
Comprueba:
1ls /backups/mysql
Deberías ver algo como:
1mi_bd_2026-02-09.sql
✔ Si esto funciona, el 80% del trabajo está hecho
🧩 PARTE 3 – Automatizar con CRON (lo importante)
5️⃣ Editar el cron del usuario
1crontab -e
Añadir tarea diaria
Ejemplo: todos los días a las 02:00 de la madrugada
10 2 * * * /home/angel/backup_mysql.sh >> /backups/mysql/backup.log 2>&1
📌 Traducción:
0 2→ 02:00* * *→ todos los días>> backup.log→ guardamos el resultado
Ver cron activo
1crontab -l
PARTE 4 - Comprobaciones (muy importante en prácticas)
Forzar ejecución de cron (simulación)
1run-parts --test /etc/cron.daily
O espera al día siguiente y revisa:
1cat /backups/mysql/backup.log
PARTE 5 - Limpieza automática (rotación)
Borrar backups de más de 7 días
Añade al final del script:
1# Eliminar backups de más de 7 días 2find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -delete