2015-04-30 59 views
0

运行焦油当我要压缩的文件夹手动我用命令:麻烦从crontab中

tar -zcvf $dirBackup-$actualTime.tgz $dirBackup; 

而且它完美的作品。当我解压档案时,结果是正确的。

但是,我从crontab运行相同的命令时出现问题:生成的tgz只显示为包含空文件。

crontab -l>> /home/user/Desktop/test/temp; 
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup">> temp; 
crontab temp; 

我是否需要更改crontab表达式中的任何内容?我必须是root才能运行crontab吗?文件临时文件已正确创建,并位于正确的文件夹中。

非常感谢您的关注!

+0

可以告诉你这个工作看起来像在crontab(而不是如何你试图写在那里)?这个问题出现是因为你使用了env vars,并且有趣的是(例如相对路径,完整路径?) – Dieselist

+1

发布了'crontab -l'的输出。 – iqstatic

回答

1

根据您的系统,crontab工作可能会或可能不会在您的$HOME目录(事实上它们通常无论是在//var/cron运行)运行。在tar命令之前添加cd $HOME;

+0

我做到了,并且不起作用。也许这可能是特权的原因?我的意思是,有必要成为root来执行crontab? – Reaper

+0

您可以通过再次运行'crontab -l'来检查。 – lcd047

+0

@Reaper要回答您的问题,首先,不需要root用户执行cronjob。您尝试访问的目录应该可以从该用户的上下文访问。如果不是,那么许可问题就会出现。 – iqstatic

1

您需要设置echo命令中用于将条目添加到cron作业中的变量值。一个示例脚本应该是这样的:

#!/bin/bash 

min=30 
hour=17 
dirBackup=/home/user/Desktop 
actualTime=30-04-2015 

crontab -l >> /home/user/temp 
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup 2>&1 | tee /tmp/cron.log">> /home/user/temp; 
crontab /home/user/temp; 

产生的tar文件将在用户的主目录(与该cron是运行用户)来创建。

为了避免获得了用户的权限问题,你可以指定该cron是使用下面的命令来运行用户:

crontab -u <username> <cron_file> 
+0

其实我从阅读控制台设置分钟和小时的值。但我不知道为什么它不起作用。他们在确定的时间进行备份,但它是一个空文件。我读过,有时需要在crontab文件中设置一个新行。真的吗? – Reaper

+0

@Reaper值'dirBackup'通过了哪个值? “dirBackup”的价值是否合理? – iqstatic

+0

是它正确的dirBackup的值。 – Reaper