当我想手动压缩文件夹时,我使用命令:
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正确创建,位于右侧文件夹中。
非常感谢您的关注!
答案 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>