Planificación de tareas automáticas: Programar una tarea con el Programador de Tareas de Windows o cron en Linux para que ejecute un script de respaldo de forma automatizada cada día a una hora determinada.
Objetivo:
Automatizar la ejecución periódica de un script de respaldo o mantenimiento del sistema mediante la configuración de tareas programadas utilizando el Programador de Tareas (Task Scheduler) en Windows o el demonio cron (crontab) en entornos GNU/Linux para que se ejecuten diariamente a una hora específica.
Escenario:
- Una máquina virtual o equipo físico con un sistema operativo Windows o GNU/Linux.
- Un script de respaldo previo (por ejemplo, un fichero de lotes
.bato un script en Bash.sh) preparado para empaquetar o copiar archivos importantes. - Privilegios de administrador o superusuario necesarios para programar tareas con privilegios elevados en el sistema.
Instrucciones:
Opción A: Planificación de tareas en entornos Windows (Programador de Tareas / schtasks)
- Método Gráfico (taskschd.msc):
- Presiona las teclas
Windows + R, escribetaskschd.mscy pulsaEnter. - En el panel derecho, haz clic en Crear tarea básica...
- Asigna un nombre descriptivo a la tarea (por ejemplo, RespaldoDiarioSistema) y haz clic en Siguiente.
- Selecciona la frecuencia del desencadenador (Diariamente) y especifica la hora exacta de ejecución deseada (por ejemplo, a las 02:00:00 AM).
- En la acción, selecciona Iniciar un programa y busca mediante el botón Examinar la ruta completa de tu script de respaldo (por ejemplo,
C:\Scripts\respaldo.bat). - Revisa el resumen y haz clic en Finalizar.
- Presiona las teclas
- Método por Línea de Comandos (PowerShell / schtasks):
- Abre una terminal de PowerShell como administrador y ejecuta el siguiente comando para programar el script diariamente a las 2:00 AM:
schtasks /create /sc DAILY /tn "RespaldoDiarioSistema" /tr "C:\Scripts\respaldo.bat" /st 02:00
- Abre una terminal de PowerShell como administrador y ejecuta el siguiente comando para programar el script diariamente a las 2:00 AM:
Opción B: Planificación de tareas en entornos GNU/Linux (cron / crontab)
- Abre una terminal en tu distribución Linux con privilegios de superusuario o de tu usuario habitual.
- Abre el editor de la tabla de tareas cron para el usuario actual o para el sistema:
crontab -e
- Añade una línea de programación siguiendo la sintaxis estándar de cron (Minuto, Hora, Día del mes, Mes, Día de la semana, Comando). Para ejecutar un script en Bash todos los días a las 2:00 AM redirigiendo la salida a un archivo de registro, añade:
0 2 * * * /bin/bash /home/usuario/scripts/respaldo.sh >> /home/usuario/scripts/respaldo.log 2>&1
(Guarda el fichero y cierra el editor para que el demonio cron cargue la nueva regla automáticamente). - Para listar las tareas programadas activas del usuario, ejecuta:
crontab -l
Verificación:
- En Windows, abre el Programador de Tareas, localiza tu tarea en la Biblioteca y comprueba en la pestaña Historial (o ejecutándola manualmente con clic derecho > Ejecutar) que el script se procesa correctamente sin errores de ruta o permisos.
- En Linux, verifica que el archivo de registro (
respaldo.log) se actualiza de manera automática tras la hora programada o revisa los logs del sistema ejecutandogrep CRON /var/log/syslog(según la distribución).
Preguntas de reflexión:
- ¿Por qué es una práctica recomendada programar las tareas de respaldo pesado o mantenimiento intensivo durante las horas de menor actividad de la organización (madrugada)?
- ¿Qué importancia tiene redirigir las salidas estándar y de error del script hacia un fichero de registro (log) al programar tareas desatendidas mediante cron o el Programador de Tareas?
- ¿Qué implicaciones de seguridad y privilegios existen al programar scripts automáticos que se ejecutan en segundo plano con permisos elevados de administrador o superusuario (root)?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué programar los respaldos en las horas de menor actividad?
Las tareas de copias de seguridad masivas, compresión de datos y comprobación de bases de datos consumen una enorme cantidad de recursos de disco (I/O), memoria y ciclos de CPU. Ejecutarlas en horario laboral saturaría el rendimiento del hardware, ralentizando las aplicaciones de los usuarios y afectando negativamente a la productividad de la organización.
2. ¿Por qué es vital redirigir la salida a un fichero de registro (log)?
Como las tareas programadas se ejecutan de forma desatendida y en segundo plano (sin interacción humana ni pantallas de consola visibles), si el script experimenta un fallo por falta de espacio, un error de permisos o la ausencia de un archivo de origen, el administrador no lo sabría de inmediato. Guardar un registro detallado (log) permite auditar el éxito o el fracaso de cada ejecución diaria de manera proactiva.
3. ¿Qué implicaciones de seguridad tiene ejecutar scripts automatizados con privilegios elevados?
Si un script configurado para ejecutarse con privilegios de administrador o superusuario (root) sufriera una vulnerabilidad o fuera manipulado por un atacante (por ejemplo, si los permisos de escritura del fichero del script están mal configurados y permiten modificar su contenido), el sistema operativo ejecutaría comandos maliciosos con control total del equipo en segundo plano. Por ello, es indispensable asegurar que los ficheros de script tengan permisos estrictos de lectura y ejecución únicamente para cuentas autorizadas.