So löschen Sie gelöschte Crontab

11

Ich habe versucht, crontab im Terminal zu bearbeiten, und habe crontab -rstattdessen versehentlich getippt crontab -e. Wer würde denken, dass solch ein gefährlicher Befehl direkt neben dem Brief sitzen würde, um die Crontab zu bearbeiten? Außerdem versuche ich immer noch herauszufinden, wie Sie crontab -rnicht um Bestätigung gebeten werden.

Ungeachtet meiner mangelnden Glaubwürdigkeit, wie dies möglich ist, lautet meine Frage: Kann ich die verlorene Crontab wiederherstellen?

Miguel Mesquita Alfaiate
quelle
Nur zur Information, crontab -r entfernt crontab ohne Aufforderung und crontab -i bittet um Bestätigung.
Raman Sailopal
@ RamanSailopal danke für die Information. Das ist wirklich gefährlich, da -e und -r nebeneinander stehen (zumindest auf QWERTY) ...
Miguel Mesquita Alfaiate
1
Solche Sachen sind ein Grund, warum ich sie benutze etckeeper.
David Foerster
2
Stellen Sie
@PiedPiper Wenn ich das auf Backup hätte, wäre dies kein Problem. Ich habe Home-Ordner, die gesichert werden, aber nicht diese Root-Crontab.
Miguel Mesquita Alfaiate

Antworten:

7

Sie können Ihre Cron-Jobs aus dem Protokoll finden, wenn es zuvor ausgeführt wurde. Überprüfen Sie /var/log/cron.

Sie haben keine andere Wiederherstellungsoption als Wiederherstellungstools von Drittanbietern.

Muhammed Sherief
quelle
Irgendwelche Hinweise, wie ich überprüfen kann, ob mir etwas fehlt? Was wäre, wenn es eine wöchentliche oder monatliche Aufgabe gäbe? Müsste ich bis Anfang letzten Monats Zeile für Zeile gehen, um herauszufinden, ob ich einen weniger häufigen Cronjob habe?
Miguel Mesquita Alfaiate
Ich denke, Sie müssen den letzten Monat Zeile für Zeile gehen. Entschuldigung
Muhammed Sherief
Keine Notwendigkeit für "Zeile für Zeile". Verwenden Sie grepentweder -ooder in sed/ awk/ cut/ etc, um nur den Befehl zu extrahieren, und dann in sort -u.
Patrick
3
Sie müssen immer noch Zeile für Zeile gehen, um die Zeitpläne auszuarbeiten, wenn sie nicht einfach täglich oder wöchentlich sind. In etwa awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8werden die Einträge für die usernameSortierung nach Befehl angezeigt, wodurch es einfacher wird, die Intervalle zwischen ihnen zu sehen, damit Sie ihre Zeitpläne neu erstellen können.
James Sneeringer
@ JamesSneeringer das ist definitiv Hexerei! Daumen hoch dafür!
Miguel Mesquita Alfaiate
2

Ich bin nicht sicher, ob es möglich ist, crontabDateien ohne Sicherung wiederherzustellen . Ich bin mir jedoch ziemlich sicher, dass Sie Ihre crontabDatei aus cronProtokollen wiederherstellen können . Soweit ich mich erinnere, wird dort schnell jeder Befehl mit Benutzer aufgelistet.


quelle
2

Wenn Sie sich an eine bestimmte Zeile erinnern, können Sie das gesamte Gerät nach Ihren Daten durchsuchen, sofern keine anderen Daten diese überschrieben haben. Dies funktioniert für jede Datei.

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

Passen Sie -B (zuvor) und -A (fter) an Ihre Dateigröße an, aber 100 Zeilen sollten für eine Cron-Datei ausreichen. Der Parameter -a wird benötigt, um grep zu zwingen, Ihr Gerät als Text zu betrachten.

Sie müssen dann das binäre Durcheinander vor und nach Ihren Daten in der resultierenden Datei bereinigen.

Und es braucht viel Zeit. Viel Glück.

Sie können sich auch auf diese Antwort beziehen: Löschen / Wiederherstellen gelöschter Dateien | Unix & Linux Stack Exchange

Hexdump
quelle