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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Copia de seguridad | una copia de tus datos guardada en otro sitio | |
| Cron | el programa que ejecuta tareas a una hora fija | |
| Tarea programada | una orden que se ejecuta sola a una hora | |
| Comprimir | juntar archivos en uno más pequeño | copia.tar.gz |
| Script | un archivo con varias órdenes que se ejecutan seguidas | backup.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
cat /usr/local/bin/backup.shSe 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
mkdir -p ~/trabajoSe 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
echo "informe de ventas" > ~/trabajo/informe.txtSe 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
mkdir -p ~/copiaSe 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
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
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
| Campo | Qué valores admite | Ejemplo |
|---|---|---|
| 1. Minuto | 0 a 59 | 30 |
| 2. Hora | 0 a 23 | 2 |
| 3. Día del mes | 1 a 31 | * |
| 4. Mes | 1 a 12 | * |
| 5. Día de la semana | 0 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 tiempo | Cuándo se ejecuta |
|---|---|
| 30 2 * * * | Todos los días a las 02:30 |
| 0 7 * * 1 | Los lunes a las 07:00 |
| */15 * * * * | Cada 15 minutos, todo el día |
| 0 22 * * 5 | Los 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
systemctl is-active cronSe 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
crontab -lSe 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
tar -czf ~/copia.tar.gz -C ~ trabajoSe 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
tar -tzf ~/copia.tar.gzSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.