eliminó el archivo de pestaña cron y necesita recuperarlo

11

Ejecuté crontab -r en lugar de crontab -e y eliminé mi archivo crontab. No tenía una copia de seguridad y nueva para recuperar el archivo eliminado.

es posible?

Gracias,

Peter

gWaldo
fuente
77
Las opciones para editar y eliminar no deberían estar una al lado de la otra en el teclado. Un error demasiado fácil para un tipeo rápido.
einstiien
Eso es exactamente lo que me pasó.

Respuestas:

9

Intente mirar / var / log / cron para ver qué se ha estado ejecutando y luego intente recrear el crontab a partir de eso. Es desordenado, pero debería poder restaurar todo lo que se había ejecutado anteriormente. Sin embargo, no tanta suerte para los artículos más nuevos. ¡Buena suerte!

rumz
fuente
Gran enfoque!
Alex
5

Antes que nada: ¡siempre haga copias de seguridad!

Pero, es tan fácil de mezclar crontab -ry crontab -e. Acabo de hacer esto yo mismo.

Eso fue lo que hice:

Puede intentar echar un vistazo a / var / log / cron y construir su crontab nuevamente.

  1. Echa un vistazo al archivo de registro
  2. Toma el primer comando y haz grep commandname1 /var/log/cron
  3. Averigüe la sistemática detrás de los tiempos en que se ejecutó el comando
  4. Pon esa entrada en tu nuevo crontab
  5. ejecutar cat /var/log/cron | grep -v commandname1. Esto excluirá el comando1 que ya cubrió.
  6. Toma el siguiente comando y grep por ello
  7. Averigüe la sistemática detrás de los tiempos en que se ejecutó el segundo comando
  8. pon esa entrada en tu nuevo crontab
  9. ejecutar cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Repita hasta que haya cubierto todos los comandos.

Ahora también debe ejecutar el grep en cronlogs más antiguos para descubrir trabajos que podrían ejecutarse solo una vez al mes.

Alex
fuente
1
Al menos en Ubuntu (no estoy seguro acerca de otras plataformas que usan anacron / Vixie cron) el registro se almacena en /var/log/syslog/*.
Timothy Gu
1
Antes de eliminar algo accidentalmente, ¡siempre crea una copia de seguridad!
Dávid Horváth
4

Script para la recuperación completa de crontab

Hice un script PHP que hace una recuperación completa de su crontab, basado en el registro.

Produce una sola instancia de cada comando cron ejecutado por el usuario durante la última semana.

Lo puse aqui

https://github.com/dangreenisrael/recover_crontab

Aquí hay una muestra de salida:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh
Dan Green-Leipciger
fuente
1
¿Por qué se le dio -1? Es una respuesta directa a la pregunta.
Dan Green-Leipciger
He estado usando tu guión. Increíble, muchas gracias!
MeV
El script PHP no funciona correctamente con los comandos que contienen paréntesis de cierre. Fijo y portado a bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Splitlocked
1

Tienes opciones, pero ninguna es particularmente bonita. En caso de que no lo haya pensado, si tiene una versión reciente en una máquina de desarrollo, puede copiarla desde allí ... Solo lo digo porque a menudo me olvido de las copias que pueden estar en otras máquinas, así que Supongo que ya lo has intentado.

Si su archivo está demasiado personalizado para hacer que la reconstrucción sea práctica, siempre puede probar algunos análisis forenses de bajo nivel. Intenta buscar en Google tutoriales basados ​​en sleuthkit y UFS Explorer. Las personas que usan estas herramientas encuentran diversos grados en términos de facilidad de uso y tasas de éxito, por lo que, como es habitual, YMMV.

Geo Ego
fuente
1

Ugh no puede publicar un comentario sobre la pregunta original, pero un compañero de trabajo me mostró una gran herramienta: crear un alias en lo .profileque solía crontabser crontab -i. La -ibandera solicita confirmación antes de eliminar.

Entonces, si lo hace crontab -e, procederá a editar como de costumbre, pero si lo hace accidentalmente, recibirá crontab -run mensaje de confirmación.

KR
fuente
Eso no ayuda con el problema inmediato ...
vonbrand
0

No lo creo. Es hora de comenzar a hacer una copia de seguridad de este archivo importante (con todos los demás en / etc / var / spool / home ...).

Dom
fuente