无法从crontab运行tar

时间:2015-04-30 07:48:31

标签: bash cron debian backup 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吗?文件temp正确创建,位于右侧文件夹中。

非常感谢您的关注!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您需要在用于将条目添加到cron作业的echo命令中设置变量的值。示例脚本应如下所示:

#!/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文件将在用户的HOME目录(运行cron的用户)中创建。

为避免涉及用户权限问题,您可以使用以下命令指定要运行cron的用户:

crontab -u <username> <cron_file>