【发布时间】:2015-02-07 13:24:54
【问题描述】:
我有一个脚本来备份我的 cvs,它只是简单地 tar 到 CVS 目录,这就是我使用的脚本:
#!/bin/bash
CVS_ROOT="/home/cvs/data"
echo "=======================================" >> cvs_backup.log
echo " CVS BACKUP START " >> cvs_backup.log
echo "=======================================" >> cvs_backup.log
date >> cvs_backup.log
tar -czf cvs_backup.tar.gz $CVS_ROOT
echo "=======================================" >> cvs_backup.log
echo $(date '+%Y-%m-%d %H:%M') "End Backup" >> cvs_backup.log
echo "=======================================" >> cvs_backup.log
如果我使用 ./backupScript.sh 执行脚本,它会工作并生成我的 .tar.gz 文件,如果我执行 /home/cvs/backups/backupScript.sh 也是如此,但是当我使用 crontab 自动执行该任务时(root,脚本也对每个人都有执行权限),它不起作用。我的 crontab 如下所示:
0 5 * * 1-5 /home/cvs/backup/cvs_backupScript.sh
我也试过这个:
15 16 * * 1-5 /home/cvs/backup/cvs_backupScript.sh 2>/home/cvs/backup/errorBackup.log >/home/cvs/backup/output.log
生成了输出文件,但其中没有任何内容。
谢谢大家。
【问题讨论】:
-
你确定你调用的是正确的脚本吗?我在这里看到两个名称:cvs_backup_temp.sh 和 backupScript.sh。
-
是的,我确定,backupScript 只是我以前在 SO 中写的一个名字,感谢您的建议,我现在会更正它。
-
1) 检查 PATH(cron 脚本不同)2) 您可以为 cron 脚本设置日志记录。
-
好的!我做了一个测试:创建了一个虚拟脚本,它只是在 dummy.txt 上回显一个 dummytest,我在 crontab 上进行了设置来执行它,但它也没有工作。那么,我该如何解决您的意思的 PATH 问题?
-
只使用
echo到临时文件的脚本绝对可以工作。再次检查该脚本。您期望输出 cvs tarball 在哪里,因为此脚本没有设置它只是在脚本运行的任何位置使用的位置(对于 cron,这不是一个好的默认值)。
标签: bash ubuntu backup crontab tar