arquivo cron tab excluído e precisa recuperá-lo

11

Executei o crontab -r em vez de crontab -e e excluí meu arquivo crontab. Eu não tinha um backup e novo para recuperar o arquivo excluído.

Isso é possível?

Obrigado,

Pedro

gWaldo
fonte
7
as opções para editar e remover não devem estar ao lado do teclado. Um erro muito fácil de fazer para uma rápida digitação.
einstiien
Foi exatamente o que aconteceu comigo.

Respostas:

9

Tente olhar para / var / log / cron para ver o que está sendo executado e tente recriar o crontab a partir disso. É uma bagunça, mas você deve conseguir restaurar tudo o que foi executado anteriormente. Não há muita sorte para itens mais novos. Boa sorte!

rumz
fonte
Ótima abordagem!
Alex
5

Primeiro de tudo: sempre faça backups!

Mas, é tão fácil de misturar crontab -re crontab -e. Eu mesmo fiz isso.

Isso é o que eu fiz:

Você pode tentar dar uma olhada em / var / log / cron e criar seu crontab novamente.

  1. Dê uma olhada no arquivo de log
  2. Tome o primeiro comando e faça grep commandname1 /var/log/cron
  3. Descobrir a sistemática por trás dos tempos em que o comando foi executado
  4. Coloque essa entrada no seu novo crontab
  5. executar cat /var/log/cron | grep -v commandname1. Isso excluirá o comando1 que você já cobriu.
  6. Tome o próximo comando e grep para ele
  7. Descobrir a sistemática por trás das vezes em que o segundo comando foi executado
  8. coloque essa entrada no seu novo crontab
  9. executar cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Repita até cobrir todos os comandos

Agora você também deve executar o grep em cronlogs antigos para descobrir trabalhos que podem ser executados apenas uma vez por mês.

Alex
fonte
1
Pelo menos no Ubuntu (não tenho certeza sobre outras plataformas usando o anacron / Vixie cron), o log é armazenado /var/log/syslog/*.
Timothy Gu
1
Antes de excluir algo acidentalmente, sempre crie um backup!
Dávid Horváth 7/17
4

Script para recuperação completa do crontab

Eu criei um script PHP que faz uma recuperação completa do seu crontab, com base no log.

Ele gera uma única instância de cada comando cron executado pelo usuário na última semana.

Eu coloquei aqui

https://github.com/dangreenisrael/recover_crontab

Aqui está uma amostra de saída:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh
Dan Green-Leipciger
fonte
1
Por que isso foi dado -1? É uma resposta direta à pergunta.
Dan Green-Leipciger
Eu tenho usado seu script. Incrível, muito obrigado!
MeV
O script PHP não funciona corretamente para comandos que contêm parênteses de fechamento. Corrigido e portado para o bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Splitlocked em 28/11
1

Você tem opções, mas nenhuma é particularmente bonita. Caso você não tenha pensado nisso, se você tem uma versão recente em uma máquina de desenvolvimento, pode copiá-la de lá ... Só digo isso porque geralmente esqueço cópias que podem estar em outras máquinas, então Presumo que você já tenha tentado isso.

Se o seu arquivo for muito pesado para simplificar sua reconstrução, você sempre poderá tentar análises forenses de baixo nível. Tente pesquisar no Google os tutoriais baseados no sleuthkit e no UFS Explorer. As pessoas que usam essas ferramentas encontram graus bastante variados em termos de facilidade de uso e taxas de sucesso, assim como sempre, YMMV.

Geo Ego
fonte
1

Ugh não pode postar um comentário sobre a questão original, mas um colega de trabalho me mostrou uma grande ferramenta: fazer um alias em qualquer .profileque você usa para crontabser crontab -i. A -ibandeira pede confirmação antes de excluir.

Portanto, se você fizer crontab -eisso, continuará editando como de costume, mas se você acidentalmente crontab -rfor recebido com um prompt de confirmação.

KR
fonte
Isso não ajudar com o problema imediato ...
vonbrand
0

Acho que não. É hora de começar a fazer backup desse arquivo importante (com todos os outros em / etc / var / spool / home ...).

Dom
fonte