Come recuperare crontab cancellato


11

Stavo provando a modificare crontab nel terminale e ho digitato accidentalmente crontab -rinvece di crontab -e. Chi immaginerebbe che un comando così pericoloso siedesse proprio accanto alla lettera per modificare il crontab? Inoltre, sto ancora cercando di capire come crontab -rnon chiedere conferma?

Indipendentemente dalla mia mancanza di credibilità su come ciò sia possibile, la mia domanda è: sono in grado di recuperare il crontab perso?


Solo per informazione, crontab -r rimuoverà crontab senza chiedere conferma e crontab -i chiederà conferma.
Raman Sailopal,

@RamanSailopal grazie per le informazioni. è davvero pericoloso, dato che -e e -r sono uno accanto all'altro (almeno su qwerty) ...
Miguel Mesquita Alfaiate,

1
Cose come questa sono una delle ragioni per cui le uso etckeeper.
David Foerster,

2
Ripristina da backup
PiedPiper

@PiedPiper se avessi quello sul backup, questo non sarebbe un problema. Ho il backup delle cartelle home, ma non questo crontab di root.
Miguel Mesquita Alfaiate,

Risposte:


7

Puoi trovare i tuoi lavori cron dal registro se in precedenza sono stati eseguiti. Controllare /var/log/cron.

Non hai opzioni di recupero diverse dagli strumenti di recupero di terze parti.


Qualche suggerimento su come posso verificare se non mi manca qualcosa? E se ci fosse qualche attività settimanale o mensile? Dovrei andare riga per riga fino all'inizio del mese scorso per scoprire se ho qualche cronjob meno comune in esecuzione?
Miguel Mesquita Alfaiate,

Penso che devi andare riga per riga per l'ultimo mese. Siamo spiacenti
Muhammed Sherief il

Non è necessario "riga per riga". Utilizzare grepcon -oo convogliato in sed/ awk/ cut/ etc per estrarre solo il comando e quindi convogliare sort -u.
Patrick,

3
Dovrai comunque procedere riga per riga per elaborare gli orari se non sono semplicemente giornalieri o settimanali. Qualcosa di simile awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8mostrerà le voci usernameordinate per comando, il che dovrebbe rendere più semplice la visualizzazione degli intervalli tra loro in modo da poter ricreare i loro programmi.
James Sneeringer,

@JamesSneeringer che è sicuramente stregoneria! pollice in alto per quello!
Miguel Mesquita Alfaiate,

2

Non sono sicuro, è possibile recuperare il crontabfile senza backup. Ma sono abbastanza sicuro che puoi ripristinare il tuo crontabfile dai cronregistri. Per quanto mi ricordo, velocemente ogni comando è elencato lì con l'utente.


2

Se ricordi una riga specifica, puoi grep l'intero dispositivo per ritrovare i tuoi dati, a condizione che nessun altro dato li sovrascriva. Funziona con qualsiasi file.

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

Regola -B (prima) e -A (più avanti) in base alle dimensioni del tuo file, ma 100 righe intorno dovrebbero essere sufficienti per un file cron. Il parametro -a è necessario per forzare grep a considerare il tuo dispositivo come testo.

Dovrai quindi pulire il disordine binario prima e dopo i tuoi dati nel file risultante.

E ci vuole molto tempo. In bocca al lupo.

Puoi anche fare riferimento a questa risposta: Annulla / ripristina i file eliminati | Scambio di stack Unix e Linux

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.