¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Copias de seguridad y tareas programadas con cron

Después de esta lección: Puedo programar una copia de seguridad con una línea de cron.

Lección de 50 min10 comandosLaboratorio de administración Linux: usuarios, permisos, cron y systemd en el navegador

La copia que se hace sola cada noche

Una copia de seguridad es una copia de tus archivos en otro sitio, para recuperarlos si se pierden. Cron es el programa de Linux que hace una tarea sola, a la hora que le digas.

Piensa en el ordenador de una tienda con las ventas del día. Si falla el disco, sin copia se pierde todo. Nadie quiere acordarse de copiar cada noche, así que se programa.

Al terminar esta lección

Nota

Puedo programar una copia de seguridad con una línea de cron.

Palabras clave

PalabraQué significaEjemplo
Copia de seguridaduna copia de tus datos guardada en otro sitio
Cronel programa que ejecuta tareas a una hora fija
Tarea programadauna orden que se ejecuta sola a una hora
Comprimirjuntar archivos en uno más pequeñocopia.tar.gz
Scriptun archivo con varias órdenes que se ejecutan seguidasbackup.sh

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una copia de seguridad va en otro sitio

Una copia en el mismo disco no sirve si el disco se estropea. La copia vale cuando está en otro lugar, como otra carpeta, otro disco u otro ordenador.

Un administrador escribe un script: un archivo con las órdenes de la copia. Así es siempre igual. Pulsa Iniciar el laboratorio y lee el script que ya trae esta máquina.

Lee el script de copia del laboratorio

Comando
cat /usr/local/bin/backup.sh

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Haz tu propia copia con cp -a

El script usa cp -a, que copia carpetas enteras y conserva permisos y fechas. Tú lo probarás con carpetas tuyas: trabajo es el original y copia es su copia.

Al final comparas las dos con diff -r, que busca diferencias dentro de las carpetas.

Crea la carpeta original

Comando
mkdir -p ~/trabajo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe un archivo dentro

Comando
echo "informe de ventas" > ~/trabajo/informe.txt

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crea la carpeta de la copia

Comando
mkdir -p ~/copia

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Copia el original dentro

Comando
cp -a ~/trabajo/. ~/copia/

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comprueba que las dos carpetas son iguales

Comando
diff -r ~/trabajo ~/copia && echo "iguales"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una línea de cron tiene cinco campos

Cron lee un archivo con una tarea por línea. Cada línea empieza con cinco campos que dicen cuándo, y sigue con la orden que se ejecuta.

Los campos son: minuto, hora, día del mes, mes y día de la semana. Un * quiere decir «cualquiera». */15 quiere decir «cada 15».

Los cinco campos, de izquierda a derecha

CampoQué valores admiteEjemplo
1. Minuto0 a 5930
2. Hora0 a 232
3. Día del mes1 a 31*
4. Mes1 a 12*
5. Día de la semana0 a 7, con el lunes como 1*

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Ejemplo resuelto: cuatro líneas y su significado

Línea de tiempoCuándo se ejecuta
30 2 * * *Todos los días a las 02:30
0 7 * * 1Los lunes a las 07:00
*/15 * * * *Cada 15 minutos, todo el día
0 22 * * 5Los viernes a las 22:00

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cómo se instala una tarea en el sistema

Cada usuario tiene su propia lista de tareas, que se mira con crontab -l. Las tareas de todo el sistema van en archivos de la carpeta /etc/cron.d.

Hay una diferencia: en un archivo de /etc/cron.d, cada línea lleva un campo más, el usuario que ejecuta la orden, justo antes de la orden.

Pregunta si cron funciona

Comando
systemctl is-active cron

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira las tareas de tu usuario

Comando
crontab -l

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que cron avisa cuando una tarea falla. No avisa. Si la línea está mal escrita, cron la ignora sin decir nada. Por eso el script de copia escribe una línea en un registro al terminar. Si el registro no crece, la tarea no corrió.

Para comprimir una copia se usa tar

tar junta una carpeta entera en un solo archivo, y con -z lo comprime. Un solo archivo es fácil de enviar a otro ordenador.

La orden tar -czf crea el archivo. La orden tar -tzf solo lista lo que hay dentro, sin sacarlo.

Comprime la carpeta trabajo

Comando
tar -czf ~/copia.tar.gz -C ~ trabajo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira qué hay dentro sin sacarlo

Comando
tar -tzf ~/copia.tar.gz

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de administración Linux: usuarios, permisos, cron y systemd en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.