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?


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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.