当您意识到自己不小心删除了所有的crontab条目时,您是否曾经经历过令人心动的时刻?如果您点点头,那么您并不孤单。不久前我也犯了这个错误。
鉴于“ R”和“ E”键的距离,偶然地运行crontab -r是一个错误,即使是经验丰富的Linux用户也可能发生。
Crontab -r命令删除了所有计划的Cron作业,众所周知,错误地运行了错误,尤其是因为它危险地接近crontab -e,它是编辑这些条目的命令。
但是不用担心!在这篇文章中,我们将详细介绍如何恢复丢失的crontab条目,如何定期备份crontab条目以及防止crontab条目在将来偶然删除的策略。
目录
不久前,我打算运行crontab -e来编辑我的预定作业,但我的手指背叛了我,而是去了crontab -r。突然,我所有精心计划的Cron工作都消失了。
由于键“ e”和“ r”在键盘上彼此相邻,因此我不小心运行了crontab -r命令,而不是crontab -e,在眼睛的眨眼中,我失去了所有的crontab条目。
对于那些想知道的人,Crontab -R命令删除了当前用户的crontab而无需任何确认提示,这可能会导致所有计划的Cron作业的丢失。
这个错误很容易犯,尤其是在忙碌的一天的压力或多任务处理的压力下。
这是您可以解决情况并防止未来事件的方法。
首先,深吸一口气。这种情况可能不像看起来那样可怕。虽然Unix和Linux系统没有针对Crontab -R的“撤消”按钮,但是您可以在一些地方寻找备份:
一旦您恢复了crontab条目(或者不幸的是,如果没有),则至关重要的是启动备份程序以避免将来的头痛。
为了防止未来的损失,以下是一些备份Crontab条目的策略:
您应该养成手动备份孔朗特(Crontab)条目之前进行编辑之前的习惯。虽然手动备份总比没有好,但他们依靠您记得做它们。
要手动备份您的crontab,请运行:
$ crontab -l>〜/backup_crontab.txt
将此备份存储在安全位置,可能是在版本控制的存储库或云存储服务中。
设置每日Cron工作以自动备份您的crontab条目是确保您始终拥有Cron Jobs的副本的绝佳方法。
这种做法大大降低了由于意外删除或其他不可预见的问题而导致数据丢失的风险。这是一个简单的示例,说明如何设置这样的Cron工作:
使用crontab -e命令编辑crontab,并在特定时间自动备份crontab条目中添加类似的新行:
0 1 * * * crontab -l>/path/to/backup/directory/crontab_backup _ $(date \%y- \%m- \%m- \%d).txt
用自己的路径替换/路径/备份/目录/。
该命令每天在凌晨1点为您的crontab条目创建一个备份,其中包含备份日期的文件名,可在需要时易于跟踪和还原。
上述方法有一个问题。它将每天凌晨1点继续创建新文件。这是低效的,因为备份目录将无限期地增长。
为了防止这种情况,您可以考虑为备份实施旋转和清理系统。这样,您只需维护一定数量的近期备份文件就可以防止备份目录的增长。
我制作了一个简单的脚本,可以做到这一点。它将您的crontab条目备份到特定目录中的文件中。另外,一段时间后,它会自动摆脱较旧的备份。
这样,您的备份文件夹就保持整洁,不再充满您不再需要的旧文件。
创建备份脚本:
首先,创建一个脚本,将您当前的crontab条目保存到文件中。您可能需要在文件名中包含时间戳,以跟踪随着时间的流逝。
这是一个基本脚本示例。
创建一个文件,例如〜/cron_backup.sh,其中包含以下内容:
#!/bin/bash #定义备份目录和文件名 backup_dir =“ $ home/cron_backups” file_name =“ crontab_backup _ $(date'%y-%m-%d')。txt” #保留备份的天数 days_to_keep = 30 #确保存在备份目录 mkdir -p“ $ backup_dir” #保存文件的crontab条目 crontab -l>“ $ backup_dir/$ file_name” #删除备份文件比指定的天数年龄 查找“ $ backup_dir” -name'crontab_backup _*。txt'-type f -mtime $ days_to_keep -exec -exec rm {} \;
该脚本旨在备份您的crontab条目并管理这些备份,以防止您的备份目录变得混乱。
这是该脚本如何工作的细分,一步一步:
通过运行此脚本,您每次都会自动为crontab条目创建新的备份,并通过删除比一定数期大的备份来保持备份目录清洁。这种方法有助于保持最新的crontab条目历史,而无需手动管理备份。
保存文件并关闭。然后通过运行使其可执行:
$ chmod x〜/cron_backup.sh
安排备份工作:
接下来,安排此脚本每天通过您的crontab运行。用crontab -e编辑crontab,并为备份脚本添加新行。例如,要在1:00 AM每天运行备份,您将添加:
0 1 * * */bin/bash $ home/cron_backup.sh
此设置可确保每天都可以安全地存储在指定的目录中的crontab。
将您的crontab文件存储在诸如git之类的版本控制系统(VC)中。这不仅可以备份文件,而且还可以保留更改的历史记录,从而使您可以在必要时恢复到以前的版本。
确保您的备份策略包括系统级备份,以捕获系统的整个状态,包括所有用户crontabs。
我们已经在博客上审查并发布了有关各种备份工具的指南。请探索我们的档案,以找到最适合您需求的档案。
其他提示:
如果您不小心运行crontab -r并删除了crontab条目,但是您一直在定期备份它们,如上一节中所讨论的那样,恢复crontab是简单的。
这是您可以从备份中恢复crontab条目的方法:
1。找到您最近的备份文件:
首先,您需要找到crontab的最新备份。如果您遵循示例备份策略,则您的备份将位于特定目录(例如$ home/cron_backups)中,并用日期邮票命名以易于识别。
2。查看备份内容:
在恢复之前,最好查看备份文件的内容,以确保其包含预期的crontab条目。您可以使用诸如CAT或更少的命令查看文件:
$ cat $ home/cron_backups/crontab_backup _ $(日期'%y-%m-%d')。txt
如果尚未创建今天的备份,或者您需要从特定日期恢复,请相应地调整命令中的日期。
3。从备份恢复crontab :
一旦确定了正确的备份文件并确认了其内容,就可以通过将crontab命令与备份文件一起作为输入来还原crontab条目:
$ crontab $ home/cron_backups/crontab_backup _ $(日期'%y-%m-%d')。txt
同样,调整命令中的日期以匹配您打算用于修复的备份文件。
4。验证修复:
恢复后,至关重要的是要验证您的crontab是否已正确恢复并包含所有预期的条目。使用crontab -l命令列出当前的crontab条目:
$ crontab -L
检查针对您的备份的列出的条目,以确保修复过程成功。
修复技巧:
最后,让我们谈谈如何防止将来发生这个错误。
在您的个人资料脚本中使用-I选项添加一个别名,这是一种智能有效的方法,可以防止意外删除crontab条目。
Crontab的-I选项提供了交互提示,该提示在删除crontab之前要求确认,这可以防止无意间的cron工作损失。
设置别名:
您可以在外壳配置文件中创建一个别名,以使用crontab -i覆盖crontab -r,该crontab -i迫使命令在删除任何内容之前要求确认。
将以下行添加到您的〜/.bashrc,〜/.bash_profile或等效:
别名crontab ='crontab -i'
将别名添加到所选的个人资料脚本后,您需要应用更改。要识别更改,您可以:
例如,如果将别名添加到〜/.bashrc中,则可以运行:
$源〜/.bashrc
测试别名:
为了确保您的别名按预期运行,您可以通过尝试删除非关键或临时克朗塔布的输入来以安全的方式进行测试。运行crontab -r时,现在应该看到提示要求确认,类似:
crontab:真的删除了crontab吗? (Y/N)
该提示是您确认该别名正常工作,并将有助于防止未来的意外crontab删除。
习惯性双检查:
在按Enter之前培养双重检查命令的习惯。这似乎是一件小事,但可以为您节省很多麻烦。
不小心删除您的crontab条目是一种令人沮丧的经历,但这并不是世界的尽头。通过遵循以下步骤和技巧,您可以轻松恢复意外删除的crontab条目。
您还可以通过使用我们的简单的Shell脚本自动备份crontab条目来避免这种不幸。
以上是如何防止crontab条目在Linux中意外删除的详细内容。更多信息请关注PHP中文网其他相关文章!