file cron eliminato e necessità di recuperarlo


11

Ho eseguito crontab -r invece di crontab -e e ho eliminato il mio file crontab. Non avevo un backup e nuovo per recuperare il file eliminato.

È possibile?

Grazie,

Peter


7
le opzioni da modificare e rimuovere non dovrebbero essere una accanto all'altra sulla tastiera. Un errore troppo facile da fare per un digiuno veloce.
einstiien,

è esattamente quello che mi è successo.

Risposte:


9

Prova a guardare / var / log / cron per vedere cosa è stato in esecuzione, quindi prova a ricreare il crontab da quello. È disordinato ma dovresti essere in grado di ripristinare tutto ciò che era stato eseguito in precedenza. Non tanta fortuna per i nuovi articoli però. In bocca al lupo!


Ottimo approccio!
Alex

5

Prima di tutto: fai sempre dei backup!

Ma è così facile confondersi crontab -re crontab -e. L'ho fatto da solo.

Questo è quello che ho fatto:

Puoi provare a dare un'occhiata a / var / log / cron e creare di nuovo il tuo crontab.

  1. Dai un'occhiata al file di registro
  2. Prendi il primo comando e fai grep commandname1 /var/log/cron
  3. Scopri il sistematico dietro i tempi di esecuzione del comando
  4. Inserisci quella voce nel tuo nuovo crontab
  5. eseguire cat /var/log/cron | grep -v commandname1. Ciò escluderà il comando1 che hai già coperto.
  6. Prendi il comando successivo e grep per questo
  7. Scopri il sistematico dietro i tempi di esecuzione del secondo comando
  8. inserisci quella voce nel tuo nuovo crontab
  9. eseguire cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Ripeti finché non hai coperto tutti i comandi

Ora dovresti anche eseguire grep su cronlog più vecchi per scoprire lavori che potrebbero essere eseguiti solo una volta al mese.


1
Almeno su Ubuntu (non sono sicuro di altre piattaforme che usano anacron / Vixie cron) il registro è archiviato /var/log/syslog/*.
Timothy Gu,

1
Prima di eliminare accidentalmente qualcosa, crea sempre un backup!
Dávid Horváth,

4

Script per il recupero completo di crontab

Ho creato uno script PHP che esegue un ripristino completo del tuo crontab, in base al registro.

Emette una singola istanza di ogni comando cron eseguito dall'utente per l'ultima settimana.

L'ho messo qui

https://github.com/dangreenisrael/recover_crontab

Ecco un esempio di output:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1
Perché è stato dato -1? È una risposta diretta alla domanda.
Dan Green-Leipciger,

Ho usato la tua sceneggiatura. Incredibile, grazie mille!
MeV,

Lo script PHP non funziona correttamente con i comandi che contengono parentesi chiusa. Risolto e portato a bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Splitlocked il

1

Hai delle opzioni, ma nessuna è particolarmente carina. Nel caso in cui non ci abbia pensato, se hai una versione recente su una macchina di sviluppo, puoi copiarla da lì ... Lo dico solo perché spesso mi dimentico delle copie che potrebbero essere su altre macchine, quindi Presumo che tu l'abbia già provato.

Se il tuo file è troppo pesantemente personalizzato per renderlo semplicemente ricostruibile, puoi sempre provare alcune analisi forensi di basso livello. Prova a cercare su Google tutorial basati su sleuthkit e UFS Explorer. Le persone che utilizzano questi strumenti trovano gradi ampiamente diversi in termini di facilità d'uso e percentuali di successo, quindi, come al solito, YMMV.


1

Ugh non può pubblicare un commento sulla domanda originale, ma un collega mi ha appena mostrato un ottimo strumento: creare un alias in qualunque cosa .profiletu usi per crontabessere crontab -i. La -ibandiera chiede conferma prima di eliminarla.

Quindi, se lo fai crontab -e, procederai alla modifica come al solito, ma se lo fai accidentalmente crontab -rverrai accolto con una richiesta di conferma.


Questo non aiuta con il problema immediato ...
vonbrand

0

Io non la penso così. È ora di iniziare il backup di questo importante file (con tutti gli altri in / etc / var / spool / home ...).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.