Cómo recuperar crontab eliminado

11

Estaba tratando de editar crontab en la terminal, y accidentalmente escribí en crontab -rlugar de crontab -e. ¿Quién pensaría que un comando tan peligroso se sentaría justo al lado de la carta para editar el crontab? Además, todavía estoy tratando de descubrir cómo no crontab -rte pido confirmación.

Independientemente de mi falta de credibilidad en cuanto a cómo esto es posible, mi pregunta es: ¿puedo recuperar el crontab perdido?

Miguel Mesquita Alfaiate
fuente
Solo para información, crontab -r eliminará crontab sin preguntar y crontab -i solicitará confirmación.
Raman Sailopal
@RamanSailopal gracias por la información. eso es realmente peligroso, dado el hecho de que -e y -r están uno al lado del otro (al menos en qwerty) ...
Miguel Mesquita Alfaiate
1
Cosas como esta es una de las razones por las que uso etckeeper.
David Foerster
2
Restaurarlo desde la copia de seguridad
PiedPiper
@PiedPiper si tuviera eso en la copia de seguridad, esto no sería un problema. Tengo copias de seguridad de las carpetas de inicio, pero no este crontab raíz.
Miguel Mesquita Alfaiate

Respuestas:

7

Puede encontrar sus trabajos cron desde el registro si una vez se ha ejecutado antes. Compruebe /var/log/cron.

No tiene ninguna opción de recuperación que no sean herramientas de recuperación de terceros.

Muhammed Sherief
fuente
¿Alguna pista sobre cómo puedo comprobar que no me falta algo? ¿Qué pasa si hubo alguna tarea semanal o mensual? ¿Tendría que ir línea por línea hasta principios del mes pasado para averiguar si tengo algún cronjob menos común?
Miguel Mesquita Alfaiate
Creo que tienes que ir línea por línea durante el último mes. Lo sentimos
Muhammed Sherief
No hay necesidad de "línea por línea". Úselo grepcon -oo entubado en sed/ awk/ cut/ etc para extraer solo el comando, y luego entubado sort -u.
Patrick
3
Aún necesitará ir línea por línea para calcular los horarios si no son simplemente diarios o semanales. Algo así awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8mostrará las entradas para usernameordenar por comando, lo que debería hacer que sea más fácil ver los intervalos entre ellas para que pueda recrear sus programaciones.
James Sneeringer el
¡@JamesSneeringer que definitivamente es brujería! aprobado por eso!
Miguel Mesquita Alfaiate
2

No estoy seguro, es posible recuperar crontabarchivos sin copia de seguridad. Pero estoy bastante seguro de que puede restaurar su crontabarchivo desde los cronregistros. Por lo que recuerdo, rápido todos los comandos están listados allí con el usuario.


fuente
2

Si recuerda una línea específica, puede seleccionar todo el dispositivo para recuperar sus datos, a condición de que ningún otro dato lo sobrescriba. Esto funciona para cualquier archivo.

grep -a -B100 -A100 "command/you remember" /dev/sda1 > /tmp/cron.ressurected

Ajuste -B (efore) y -A (fter) al tamaño de su archivo, pero 100 líneas alrededor deberían ser suficientes para un archivo cron. El parámetro -a es necesario para obligar a grep a considerar su dispositivo como texto.

Luego tendrá que limpiar el desorden binario antes y después de sus datos en el archivo resultante.

Y lleva mucho tiempo. Buena suerte.

También puede consultar esta respuesta: Recuperar / recuperar archivos borrados | Intercambio de pila de Unix y Linux

Hexdump
fuente