Comment récupérer crontab supprimé

11

J'essayais d'éditer crontab dans le terminal, et j'ai accidentellement tapé crontab -rau lieu de crontab -e. Qui penserait qu'une commande aussi dangereuse s'asseyait juste à côté de la lettre pour éditer la crontab? De plus, j'essaie toujours de comprendre comment ne crontab -rvous demande pas de confirmation?

Indépendamment de mon manque de crédibilité quant à la manière dont cela est possible, ma question est: suis-je capable de récupérer la crontab perdue?

Miguel Mesquita Alfaiate
la source
Juste pour information, crontab -r supprimera crontab sans invite et crontab -i demandera une confirmation.
Raman Sailopal
@RamanSailopal merci pour l'information. c'est vraiment dangereux, étant donné que -e et -r sont côte à côte (au moins sur qwerty) ...
Miguel Mesquita Alfaiate
1
Des trucs comme ça est une des raisons pour lesquelles j'utilise etckeeper.
David Foerster
2
Restaurez-le à partir de la sauvegarde
PiedPiper
@PiedPiper si je l'avais sur la sauvegarde, ce ne serait pas un problème. J'ai des dossiers personnels en cours de sauvegarde, mais pas cette crontab racine.
Miguel Mesquita Alfaiate

Réponses:

7

Vous pouvez trouver vos tâches cron dans le journal si une fois qu'il a été exécuté auparavant. Vérifiez /var/log/cron.

Vous n'avez aucune option de récupération autre que des outils de récupération tiers.

Muhammed Sherief
la source
Des conseils sur la façon de vérifier que je ne manque pas quelque chose? Et s'il y avait une tâche hebdomadaire ou mensuelle? Dois-je aller ligne par ligne jusqu'au début du mois dernier pour savoir si j'ai un cronjob moins courant?
Miguel Mesquita Alfaiate
Je pense que vous devez aller ligne par ligne depuis un mois. Désolé
Muhammed Sherief
Pas besoin de "ligne par ligne". À utiliser grepavec ou avec -oou dans sed/ awk/ cut/ etc pour extraire uniquement la commande, puis dans sort -u.
Patrick
3
Vous aurez toujours besoin d'aller ligne par ligne pour établir les horaires s'ils ne sont pas simplement quotidiens ou hebdomadaires. Quelque chose comme awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8affichera les entrées pour usernametriées par commande, ce qui devrait faciliter la visualisation des intervalles entre elles afin que vous puissiez recréer leurs planifications.
James Sneeringer
@JamesSneeringer qui est définitivement de la sorcellerie! bravo pour ça!
Miguel Mesquita Alfaiate
2

Je ne suis pas sûr, il est possible de récupérer un crontabfichier sans sauvegarde. Mais, je suis presque sûr que vous pouvez restaurer votre crontabfichier à partir des cronjournaux. Pour autant que je m'en souvienne, chaque commande est rapidement répertoriée avec l'utilisateur.


la source
2

Si vous vous souvenez d'une ligne spécifique, vous pouvez récupérer l'ensemble de l'appareil pour retrouver vos données, à condition qu'aucune autre donnée ne les écrase. Cela fonctionne pour n'importe quel fichier.

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

Ajustez -B (avant) et -A (après) à la taille de votre fichier, mais 100 lignes autour devraient suffire pour un fichier cron. Le paramètre -a est nécessaire pour forcer grep à considérer votre appareil comme du texte.

Vous devrez ensuite nettoyer le binaire avant et après vos données dans le fichier résultant.

Et cela prend beaucoup de temps. Bonne chance.

Vous pouvez également vous référer à cette réponse: Restaurer / récupérer des fichiers supprimés | Échange de pile Unix et Linux

Hexdump
la source