sudo crontab -e
让我编辑 crontab,然后输入以下内容:
# Hourly backup
0 * * * * rsnapshot hourly
# Daily backup
0 2 * * * rsnapshot daily
# Weekly backup
0 4 * * 6 rsnapshot weekly
但它不起作用。我将其更改为使用 rsnapshot 的完整路径,但仍然不起作用。我读过一些关于 cron.d 的内容,所以我转到 /etc/cron.d/ 并找到一个名为 rsnapshot 的文件。它看起来像这样:
#0 */4 * * * root /usr/bin/rsnapshot hourly
#30 3 * * * root /usr/bin/rsnapshot daily
#0 3 * * 1 root /usr/bin/rsnapshot weekly
#30 2 1 * * root /usr/bin/rsnapshot monthly
奇怪,据我所知,我从未通过 rsnapshot 进行过每月备份。无论如何,取消注释我需要的那些。
我添加了一行用于测试,sudo crontab -e
但cat /etc/cron.d/rsnapshot
没有反映出任何变化,但测试过程(回显到 .txt)似乎有效。为什么我的备份不起作用?当我sudo rsnapshot hourly
在终端中执行此操作时,它似乎工作正常。
另外,为什么计划与我设置的不同?这个文件与 crontab 有关系吗?
答案1
“系统” cron 作业是通过/etc/crontab
文件运行的,而不是通过root
用户crontab
文件运行的/var/spool/cron/crontabs/root
,这就是sudo crontab -e
编辑的内容。/etc/crontab
在我的 Ubuntu 14.04.3 系统上是(请注意信息#comments
):
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h 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 )
#
答案2
我搞混了。/etc/cron.d/rsnapshot 文件随 rsnapshot 包一起提供,它不是由 crontab 命令创建的(因此,它有一个不同的计划)。根本不需要使用 crontab 命令,只需编辑 /etc/cron.d/rsnapshot,就可以正常工作。