如何恢复已删除的crontab


11

我试图在终端中编辑crontab,但不小心输入crontab -r而不是crontab -e。谁能想到如此危险的命令会坐在字母旁边以编辑crontab?而且,我仍在试图弄清楚如何不crontab -r要求您确认?

不管我对如何做到这一点缺乏信誉,我的问题是:我是否能够恢复丢失的crontab?


仅作为参考,crontab -r将删除crontab而不提示,而crontab -i将要求确认。
拉曼Sailopal

@RamanSailopal谢谢您提供的信息。考虑到-e和-r彼此相邻(至少在qwerty上如此),这确实很危险……
Miguel Mesquita Alfaiate

1
这样的东西是我使用的原因之一etckeeper
David Foerster

2
从备份还原它
PiedPiper'1

@PiedPiper,如果我将其备份,则不会有问题。我有正在备份的主文件夹,但没有这个根crontab。
米格尔·梅斯基塔·阿尔法伊特

Answers:


7

如果以前执行过日志,则可以从日志中找到您的cron作业。检查/var/log/cron

除第三方恢复工具外,您没有任何其他恢复选项。


关于如何检查我是否有任何遗漏的任何提示?如果有每周或每月的任务怎么办?我是否必须逐行走到上个月初才能发现我是否有一些不太常见的cronjob正在运行?
米格尔·梅斯基塔·阿尔法伊特

我认为您必须最后一个月逐行走。抱歉
穆罕默德·谢里夫'17

无需“逐行”。使用grepwith -o或通过管道输送到sed/ awk/ cut/ etc中以仅提取命令,然后通过管道输送到中sort -u
帕特里克

3
如果不只是每天或每周,您仍然需要逐行编制时间表。诸如此类的内容awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8将显示用于username按命令排序的条目,这应该使查看它们之间的间隔更加容易,以便您可以重新创建它们的时间表。
James Sneeringer

@JamesSneeringer绝对是巫术!竖起大拇指!
Miguel Mesquita Alfaiate '17

2

我不确定,是否可以在crontab不备份的情况下恢复文件。但是,我非常确定您可以crontabcron日志中恢复文件。据我所记得,快速的每个命令都与用户一起列出。


2

如果您记得特定的一行,则可以grep整个设备以找到您的数据,前提是没有其他数据覆盖它。这适用于任何文件。

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

将-B(efore)和-A(fter)调整为您的文件大小,但是对于cron文件,大约100行左右就足够了。需要使用-a参数来强制grep将您的设备视为文本。

然后,您将必须在生成的文件中的数据之前和之后清除二进制混乱。

这需要很多时间。祝好运。

您也可以参考以下答案:取消删除/恢复已删除的文件| Unix和Linux堆栈交换

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.