fichier d'onglet cron supprimé et besoin de le récupérer

11

J'ai exécuté crontab -r au lieu de crontab -e et supprimé mon fichier crontab. Je n'avais pas de sauvegarde et de nouveau pour récupérer le fichier supprimé.

Est-ce possible?

Merci,

Peter

gWaldo
la source
7
les options de modification et de suppression ne doivent pas être côte à côte sur le clavier. Trop facile une erreur pour faire un typer rapide.
einstiien
c'est exactement ce qui m'est arrivé.

Réponses:

9

Essayez de regarder / var / log / cron pour voir ce qui a été exécuté, puis essayez de recréer la crontab à partir de cela. C'est désordonné mais vous devriez pouvoir restaurer tout ce qui avait précédemment fonctionné. Pas tellement de chance pour les nouveaux articles. Bonne chance!

rumz
la source
Super approche!
Alex
5

Tout d'abord: faites toujours des sauvegardes!

Mais, il est si facile de mélanger crontab -ret crontab -e. Je viens de le faire moi-même.

C'est ce que j'ai fait:

Vous pouvez essayer de jeter un œil à / var / log / cron et reconstruire votre crontab.

  1. Jetez un œil au fichier journal
  2. Prenez la première commande et faites grep commandname1 /var/log/cron
  3. Découvrez le système derrière les heures d'exécution de la commande
  4. Mettez cette entrée dans votre nouveau crontab
  5. exécuter cat /var/log/cron | grep -v commandname1. Cela exclura la commande1 que vous avez déjà couverte.
  6. Prenez la commande suivante et lancez-vous
  7. Comprendre le système derrière les heures d'exécution de la deuxième commande
  8. mettez cette entrée dans votre nouveau crontab
  9. exécuter cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Répétez jusqu'à ce que vous ayez couvert toutes les commandes

Maintenant, vous devez également exécuter le grep sur les anciens cronlogs pour découvrir les travaux qui ne peuvent être exécutés qu'une fois par mois.

Alex
la source
1
Sur Ubuntu au moins (je ne suis pas sûr des autres plates-formes utilisant anacron / Vixie cron) le journal est stocké dans /var/log/syslog/*.
Timothy Gu du
1
Avant de supprimer accidentellement quelque chose, créez toujours une sauvegarde!
Dávid Horváth
4

Script pour la récupération complète de crontab

J'ai fait un script PHP qui fait une récupération complète de votre crontab, basé sur le journal.

Il génère une seule instance de chaque commande cron exécutée par l'utilisateur la semaine dernière.

Je le mets ici

https://github.com/dangreenisrael/recover_crontab

Voici un exemple de sortie:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh
Dan Green-Leipciger
la source
1
Pourquoi a-t-on donné -1? C'est une réponse directe à la question.
Dan Green-Leipciger
J'utilise votre script. Incroyable, merci beaucoup!
MeV
Le script PHP ne fonctionne pas correctement pour les commandes contenant des parenthèses fermantes. Corrigé et porté sur bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Splitlocked
1

Vous avez des options, mais aucune n'est particulièrement jolie. Si vous n'y avez pas pensé, si vous avez une version récente sur une machine de développement, vous pouvez la copier à partir de là ... Je dis seulement cela parce que j'oublie souvent les copies qui peuvent être sur d'autres machines, donc Je suppose que vous avez déjà essayé cela.

Si votre fichier est trop lourdement personnalisé pour être simplement reconstruit, il est toujours possible d'essayer la criminalistique de bas niveau. Essayez de googler pour les didacticiels basés sur sleuthkit et UFS Explorer. Les personnes utilisant ces outils trouvent des degrés très variables en termes de facilité d'utilisation et de taux de réussite, comme d'habitude, YMMV.

Geo Ego
la source
1

Ugh ne peut pas poster de commentaire sur la question d'origine, mais un collègue m'a juste montré un excellent outil: créer un alias dans tout .profilece que vous utilisez pour crontabêtre crontab -i. Le -idrapeau demande une confirmation avant de supprimer.

Donc, si vous le faites, vous crontab -eprocéderez à la modification comme d'habitude, mais si vous le faites accidentellement, crontab -rvous êtes accueilli par une invite de confirmation.

KR
la source
Cela n'aide pas avec le problème immédiat ...
vonbrand
0

Je ne pense pas. Il est temps de commencer à sauvegarder ce fichier important (avec tous les autres dans / etc / var / spool / home ...).

Dom
la source