在CentOS中为XAMPP运行MySQLdump

时间:2012-11-20 01:37:06

标签: xampp mysqldump crontab

希望我在正确的论坛上发帖..

基本上,我正在尝试运行一个脚本来执行MySQL数据库转储,该脚本在我手动运行时有效,但crontab似乎由于某种原因没有运行该特定脚本。

我的crontab是这样设置的(出于测试目的,每分钟运行一次):

* * * * * /opt/lampp/htdocs/xyz/backup/backup.sh

脚本设置如下:

#!/bin/bash
# Script to backup the database
/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql
echo " backup_$(date +%Y%m%d)" > /opt/lampp/htdocs/xyz/backup/log.txt

我知道脚本会运行,因为会创建log.txt。但由于某种原因,没有生成SQL文件。我也知道那条线

/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql

有效,因为如果我在命令行运行它,它会生成文件。

任何帮助非常赞赏!

3 个答案:

答案 0 :(得分:1)

试试这个:

/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql

将root用户-p(password)的密码放在没有空格的位置,它应该可以正常工作。

答案 1 :(得分:0)

此脚本运行的用户ID是什么?它会尝试将您的备份文件写入该特定帐户的homedir。确保此帐户具有该dir的写入权限,并且可以访问通往该地点的所有父目录。

除此之外,请注意您的脚本有些怪异。考虑比你(也许)将脚本设置为每天晚上11点运行。如果转储花费的时间超过1小时,那么你将把一个不同的日期转储到日志文件中(顺便说一下,你将覆盖它,而不是追加,因为你在使用>,而不是{{ 1}})。要解决此问题,您需要在脚本开头为变量生成/分配日期,然后使用该变量而不是更多日期调用。

答案 2 :(得分:0)

因此,当crontab运行shell脚本时,backup_(date).sql文件实际上保存在/ root文件夹下。

手动运行shell脚本将SQL文件放在shell脚本所在的位置。