【问题标题】:Running MySQLdump for XAMPP in CentOS在 CentOS 中为 XAMPP 运行 MySQLdump
【发布时间】:2012-11-08 01:22:09
【问题描述】:

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

基本上,我正在尝试运行一个脚本,该脚本将执行 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

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

任何帮助非常感谢!

【问题讨论】:

    标签: xampp mysqldump crontab


    【解决方案1】:

    这个脚本在什么用户 ID 下运行?它将尝试将您的备份文件写入该特定帐户的主目录。确保此帐户对该目录具有写入权限,并且可以访问通往该位置的所有父目录。

    除此之外,请注意您的脚本有些花里胡哨。考虑一下(也许)您会将脚本设置为每天晚上 11 点运行。如果转储时间超过 1 小时,您将在日志文件中转储一个不同的日期(顺便说一下,您将覆盖,而不是附加,因为您使用的是 >,而不是 >>) .要解决这个问题,您需要在脚本开始时生成/分配日期给变量,然后使用该变量而不是更多的日期调用。

    【讨论】:

    • 您好,感谢您的及时回复,脚本和crontab是用root帐户创建的,应该没有问题吧?而且这只是一个测试环境,真实的没有脚本中的echo
    【解决方案2】:

    试试这个:

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

    把那个root用户的密码-p(password)不带空格,它应该可以工作。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-19
        • 2015-07-04
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 2014-11-01
        • 2011-02-20
        • 2017-10-04
        相关资源
        最近更新 更多