mysqldump cron不能使用字符>

时间:2017-12-11 12:14:28

标签: mysql cron cron-task

我尝试使用cron作业来备份我的数据库,但是当我尝试在cron作业上添加脚本时,它会显示如下错误消息:

  

无法设置字符">"

这是我正在使用的脚本:

mysqldump -u "username" --password='****' --no-create-info --no-tablespaces "username" > /home/"username"/public_html/_backup/db__$(date +\%Y-\%m-\%d_\%H_\%M_\%S).sql

如果我通过SSH控制台运行相同的脚本,它会很好地创建文件,但由于此错误,我无法创建cron。

由于我在共享主机上,我无法使用其他PHP功能,例如exec(),因为出于安全原因,它们会被默认阻止。

支持说我应该逃避角色,因为它们是不被允许的,但是然后脚本失败了,因为它无效。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

cron只是尝试在不调用shell的情况下启动命令行。输出重定向虽然是shell的一个特性,但mysqldump命令无法理解。

现在您有两个选择:

  1. 使用类似“/ bin / sh -c'mysqldump ...'”之类的构造 由于引用问题,可能会引起严重的头痛
  2. 将命令存储在shell脚本中(不要忘记创建它) 可执行的)并从cron执行脚本。
  3. 后一种方法具有额外的优势,您可以轻松定义确切的执行环境。 cron通常只定义很少的环境变量,这可能很痛苦。在您的脚本中,您可以获取$ HOME / .bashrc(或其他任何文件),设置路径变量等。