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.