试图每天备份SQL数据库

时间:2017-05-21 22:37:24

标签: mysql sql bash cron crontab

我正在尝试运行一个cron作业来每天备份我的SQL数据库。这是我正在使用的代码。

/usr/local/mysql/bin/mysqldump -uroot -ppassword --opt database > /path/to/directory/filename.sql    

然而,它返回我的错误如下:
/ bin / bash:-c:第0行:在寻找匹配的'''时出现意外的EOF / bin / bash:-c:第1行:语法错误:意外的文件结尾

想知道解决方案是什么......

1 个答案:

答案 0 :(得分:0)

如果您需要将cron与复杂的shell命令一起使用,例如使用特殊字符,则应将它们放在外部脚本中,并且只调用crontab中的脚本。 这样,您也可以手动运行它进行测试。

示例:

  • 将命令放入,例如/usr/local/sbin/my_backup_script.sh
  • 不要忘记在sh文件的顶部添加$uploads = wp_upload_dir(); $file = $uploads['basedir']."/maintainme/backups/files/backup_".$filename.'/'.$filename.'.zip'; $ch = curl_init(); $url = 'https://content.dropboxapi.com/2/files/upload_session/start'; $headers = array( 'Authorization: Bearer ' .$dropbox_token, 'Dropbox-API-Arg: {\"close\": false}', 'Content-Type: application/octet-stream', ); $fields = array('file' => '@' . $file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields ); curl_setopt($ch, CURLOPT_VERBOSE, 1); $result = curl_exec($ch); curl_close($ch);
  • #!/bin/sh
  • 测试手动运行脚本是否正在执行
  • 然后将chmod a+x /usr/local/sbin/my_backup_script.sh添加到crontab
  • (如果您使用的是个人crontab,则为0 4 * * * root /usr/local/sbin/my_backup_script.sh

(您可以使用“mm hh”形式将0 4 * * * /usr/local/sbin/my_backup_script.sh替换为您希望它运行的时间