linux中打包备份脚本,手动执行可以正常打包,使用crontab -e 添加到系统定时任务中执行就无法打包

以下为备份脚本:

意思是将/home/tomc/backup/ommb/下的.dmp文件和.log文件以.tar.gz打包备份到/home/tomc/backup/ommb/下。
以下为手动执行和使用crontab -e添加到系统自动执行的结果:

最上面一条20140721.tar.gz是我执行./backup.sh备份脚本后产生的打包备份文件;
下面7月23日生成的文件时系统自动执行生成的文件,.dmp和.log没有被打包进去,而又生成了一个20140723.tar.gz的包,解开后里面是空的。

我个人的分析:1、权限都是root权限,不存在权限过低的问题,使用777的权限也不行;
2、脚本应该没有问题,手动执行都可以正确的打包备份的;
3、感觉是问题出在crontab 这个系统定时执行的上面了,具体有不知道该怎么排查;

麻烦各位大神了!!!
以下是crontab的内容:

意思是每天凌晨2点执行/home/tomc/backup/ommb/下的backup.sh

打包备份时,dmp和log文件还没生成
你可以将crontab命令执行结果重定向一下就看出来了:
0 2 * * * /home/tomc/backup/ommb/backup.sh > /tmp/backup.log 2>&1追答

确认了吗?脚本打包之前可以查看一下,ls *.dmp *.log就够了
再说如果文件存在的话,打完包也会被删除的,而从你的贴图看却仍然存在

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-24
自动执行之前应该已经手动一遍了,已经将dmp和log remove掉了,然后自动时候找不到这两个文件
第2个回答  2014-07-24
写crontab的 内容是怎么写的?

另外可以试试把crontab和sh脚本里的口令改成为全路径
比如 /bin/bash
/bin/tar追问

crontab的容已近补充了,麻烦你看看,有没有问题;
你说的sh脚本中口令全路径具体指解释下呗。

追答

脚本里
最上面加一句
#!/bin/sh
再试试

第3个回答  2014-07-24
把你的crontab也贴出来看看?追问

已贴出

追答

lizhihong404言之有理.
.dmp, .log, .tag.gz三个文件的创建时间是相同的. 这很可能会导致问题.
也许tar命令运行的时候还没有dmp和log文件. 这也解释了为什么2个文件没有被删掉.

你改一下backup.sh 最后一行加上&>/home/tomc/backup/ommb/cron-tar.log

事后检查log应该能看出问题.

相似回答
大家正在搜