Como recuperar crontab excluído

11

Eu estava tentando editar o crontab no terminal e digitei acidentalmente em crontab -rvez de crontab -e. Quem imaginaria que um comando tão perigoso se sentasse ao lado da carta para editar o crontab? Além disso, ainda estou tentando descobrir como crontab -rnão pede sua confirmação?

Independentemente da minha falta de credibilidade de como isso é possível, minha pergunta é: sou capaz de recuperar o crontab perdido?

Miguel Mesquita Alfaiate
fonte
Apenas para obter informações, o crontab -r removerá o crontab sem aviso prévio e o crontab -i solicitará confirmação.
Raman Sailopal
@RamanSailopal obrigado pela informação. que realmente é perigoso, dado o fato de que -e e -r estão ao lado do outro (pelo menos no QWERTY) ...
Miguel Mesquita Alfaiate
1
Coisas assim são uma das razões pelas quais eu uso etckeeper.
David Foerster
2
Restaurá-lo do backup
PiedPiper
@PiedPiper se eu tivesse isso no backup, isso não seria um problema. Tenho o backup das pastas domésticas, mas não o crontab raiz.
Miguel Mesquita Alfaiate

Respostas:

7

Você pode encontrar seus trabalhos cron no log se ele tiver sido executado anteriormente. Verifique /var/log/cron.

Você não possui nenhuma opção de recuperação além das ferramentas de recuperação de terceiros.

Muhammed Sherief
fonte
Alguma dica de como posso verificar se não estou perdendo alguma coisa? E se houvesse alguma tarefa semanal ou mensal? Eu precisaria ir linha por linha até o início do mês passado para descobrir se tenho algum cronjob menos comum em execução?
Miguel Mesquita Alfaiate
Eu acho que você tem que ir linha por linha no último mês. Desculpe
Muhammed Sherief
Não há necessidade de "linha por linha". Use grepcom -oou em sed/ awk/ cut/ etc para extrair apenas o comando e, em seguida, em sort -u.
Patrick
3
Você ainda precisará ir linha por linha para definir os horários, se eles não forem simplesmente diários ou semanais. Algo como awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8mostrará as entradas usernameclassificadas por comando, o que facilitará a visualização dos intervalos entre elas, para que você possa recriar suas agendas.
James Sneeringer
@JamesSneeringer que é definitivamente bruxaria! perfeito para isso!
Miguel Mesquita Alfaiate
2

Não tenho certeza, é possível recuperar crontabarquivos sem backup. Mas tenho certeza de que você pode restaurar seu crontabarquivo a partir de cronlogs. Tanto quanto me lembro, rápido todos os comandos estão listados lá com o usuário.


fonte
2

Se você se lembrar de uma linha específica, poderá aguardar o dispositivo inteiro para encontrar seus dados de volta, com a condição de que nenhum outro dado os substitua. Isso funciona para qualquer arquivo.

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

Ajuste -B (antes) e -A (depois) para o tamanho do arquivo, mas 100 linhas ao redor devem ser suficientes para um arquivo cron. O parâmetro -a é necessário para forçar o grep a considerar seu dispositivo como texto.

Você precisará limpar a bagunça binária antes e depois dos dados no arquivo resultante.

E leva muito tempo. Boa sorte.

Você também pode consultar esta resposta: Recuperar / excluir arquivos excluídos | Troca de pilha Unix e Linux

Hexdump
fonte