关于cron和anacron的混淆(设置rsnapshot的备份计划)

我试图在运行Ubuntu 16.04 LTS的笔记本电脑上使用rsnapshot设置一个不太复杂的备份计划。 该计划是保留两个每日备份和24小时备份。 我认为这是我第一次与cron或anacron做任何事情。 所以我不仅有一个而是几个我很困惑的问题,并且很乐意得到一些答案,因为我发现了一些看似矛盾的有关某些要点的信息,并且无法找到任何明确的解决方案。

因为我对很多事情感到很困惑,所以我必须相当长时间地使我的问题清楚。 我希望你能在这里忍受我。 对于TL; DR大家,我用粗体排版突出了实际问题。

我的crontab看起来像这样:

# mh dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 

和anacrontab看起来像这样:

  # These replace cron's entries 1 5 cron.daily run-parts --report /etc/cron.daily 7 10 cron.weekly run-parts --report /etc/cron.weekly @monthly 15 cron.monthly run-parts --report /etc/cron.monthly 

这是干净安装Ubuntu 16.04 Desktop版本后的标准。

因为我认为系统通常有一堆其他cron和anacron作业设置,我想我最好不要乱用这个标准配置。

但是,我对两者协同工作的方式以及与我计划的备份计划一起工作可能出现的复杂情况感到有些困惑。

首先,我了解cron是一个守护进程, 如果计算机在指定时间运行,它将完全按照crontab中的计划运行其任务。 否则就无法完成工作。 好的。 简单。

然后有一个anacron,我已经阅读了一些看似矛盾的信息。 最简单的信息是“即使计算机未在指定时间打开,anacron也可以执行计划任务。然后,只要计算机实际再次打开,它们就会执行。因此它适用于执行计算机的台式机。没有全天候运行。“ 好的。 听起来不错。 似乎这就是我想要的。

有些地方我读过anacron是一个“守护进程”,然后在其他地方( 比如askubuntu.com这里 )指出anacron实际上是作为cronjob运行的(如上面的标准crontab所示)。 或者它可以根据不同的设置? 我怎么知道?

然后有信息“anacron不做小时工作,或任何不到一天的任何事情”。 在干净安装Ubuntu 16.04之后,这似乎适合上面的crontab和anacrontab的标准设置,其中只有每日,每小时和每月的作业被转发到anacron,而/etc/cron.hourly由cron直接处理,并且as我已经读过每个anacrontab条目中的前两个选项卡以天为单位指定计划任务的周期(例如,在这种情况下为/etc/cron.daily为1天,对于/etc/cron.weekly为7天 – 似乎在第一次系统启动之后(或者我想在anacron启动之后;对于cron.daily来说是5分钟,对于cron.weekly来说是10分钟),这也是有意义的。 。 好的。

然而,在德国的Ubuntu Wiki( wiki.ubuntuusers.de )上, 我读到,从Ubuntu 14.04开始,anacron现在可以完成每小时的工作 。 但是没有描述如何做到这一点,我没有在其他任何地方找到任何声明,我也没有看到如何在anacrontab中指定每小时的工作。 所以另一个问题是: anacron“从Ubuntu版本14.04开始”可以用来做小时工吗? 如果是这样,怎么样?

这里出现的第一个非常神秘的问题是:如果cronjobs只在指定的时间运行,并且有这些不同的cronjobs设置用于运行anacron来执行/etc/cron.daily,/ etc / cron中的任务.weekly和/etc/cron.monthly,分别是6:25,6:47和6:52 – 然后如果计算机从来没有在凌晨实际打开过怎么办? 然后anacron从未真正运行过或者是什么? 如果anacron依赖于cron,那么anacron如何在某种意义上“比cron做得更好”(即,如果计算机在其间关闭,则执行任务的时间晚于计划)?

所以这些是关于cron和anacron的问题。

然后我也有关于rsnapshot的问题,我想我应该更好地转发到一个新的问题主题。

感谢阅读,非常感谢任何明确的答案。

据我了解…. anacron不是守护进程,而是由cron运行。 cron在启动时运行并运行anacron。 anacron检查以查看其编程的内容是否已错过其计划并运行它。

因为这是我看到它的方式……看起来你会想要在anacron中设置日常工作。 至于每小时在anacron ..我也没有看到如何设置所以我将把每小时备份放在cron中。

我知道这不能解释得那么好但是……我想它也让我感到困惑。 我相信这里的某个人可以提出一个更好,更令人满意的答案,但我想我会概括它。

Anacron不是守护进程; 它只是一个由cron运行的程序。 这可以在底部附近的https://help.ubuntu.com/community/CronHowto中解释,标题是如何设置Anacron 。 根据那篇文章,“每个启动时都会运行anacron,唤醒,插件,每天早上7:30。”

引用该文章的该部分:

  • 有一个Upstart任务,位于/etc/init/anacron.conf中,它运行/ etc / anacrontab中的所有作业。 它设置为在启动时运行。

  • 有一个cron.d文件(/etc/cron.d/anacron)导致Upstart任务每天早上7:30开始。

  • 有一个文件/etc/apm/event.d/anacron,它可以在笔记本电脑插入A / C电源或唤醒时启动Upstart任务。

至于最近版本的anacron是否可以处理每小时工作:我不知道,但它似乎没有用处。 如果你看一下/ etc / crontab,你会看到/etc/cron.hourly中的作业每小时由cron运行,无论是否有一个名为/ usr / sbin / anacron的可执行文件; 它只是/etc/cron.daily,/etc/cron.weekly和/etc/cron.monthly中的文件,只有在没有安装可执行的anacron时才由cron运行。