通过cron进行tar归档不起作用

时间:2014-02-02 20:42:08

标签: linux ubuntu cron tar

我正在尝试使用tar存档我的localhost的根文件夹,并希望每天使用crontab自动执行它。为此,我在个人文件夹中创建了一个“备份文件夹”。我在Ubuntu 12.04上运行。

在命令行中执行tar可以正常工作:

sudo tar -cvpzf backupfolder/localhost.tar.gz /var/www

但是,当我在sudo crontab -e中安排每日备份命令(比如17.00)时,它没有执行,即备份不会使用以下命令更新:

0 17 * * * sudo tar -cpzf backupfolder/localhost.tar.gz /var/www

我已经尝试了完整路径home/user/backupfolder/localhost.tar.gz但没有成功。

var/log/syslog为计划执行提供了以下输出:

Feb  2 17:00:01 DESKTOP-PC CRON[12052]: (root) CMD (sudo tar -cpzfbackupfolder/localhost.tar.gz /var/www)
Feb  2 17:00:01 DESKTOP-PC CRON[12051]: (CRON) info (No MTA installed, discarding output)

/etc/crontab指定以下路径:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

我认为crontab没有执行,因为这是一个sudo命令。

我有办法让这个跑步吗?如果我不想硬编码我的root密码,建议的安全方法是什么?

4 个答案:

答案 0 :(得分:1)

基本上问题是sudo命令,所以我们将允许sudo为“用户”运行tar而不提示输入密码。

/etc/sudoers文件中添加以下行。

用户 ALL =(ALL)NOPASSWD:/ bin / tar

用户 是安装crontab的用户。

答案 1 :(得分:1)

嗯,适合你的命令是

sudo tar -cvpzf backupfolder/localhost.tar.gz /var/www

这意味着,您必须使用sudo访问权限运行该命令,并且它将无法在您的crontab中运行。

我建议将cron作业添加到root用户的crontab。

基本上,做

sudo crontab -e

并在那里添加一个条目

0 17 * * * cd /home/user/backupfolder && tar -cpzf localhost.tar.gz /var/www

如果这不起作用,请添加tar的完整路径(如/bin/tar)。

此外,在调试时,将cronjob设置为每分钟运行一次(* * * * *

答案 2 :(得分:0)

我怀疑有PATH问题,尝试在sudo crontab -e的顶部设置一些变量:

MAILTO=your_email@domain.tld # to get the output if there's errors
PATH=/usr/bin:/bin:/usr/local/bin:/usr/local/sbin:/sbin

答案 3 :(得分:0)

您可以在run.sh

等脚本中编写命令
#/bin/sh -l
tar -cvpzf backupfolder/localhost.tar.gz /var/www

然后使用crontab运行脚本。

重要说明:脚本的第一行有“-l”选项。 试试吧。