MySQL 轮换备份脚本 - plesk

MySQL 轮换备份脚本 - plesk

我有一个从某个地方(不记得在哪里)找到的 MySQL 备份脚本。手动运行它可以运行,但以 root 身份在 cron 上运行时,不知为何它无法运行。

可能有一个我可以在某处检查的 cron 日志,但我很好奇是否有人知道为什么它没有在 cron 上创建我的每日备份。

#!/bin/bash

# Set the datestamp, login credentials and backup directory
export date=$(date +\%Y\%m\%d)
export creds="-uadmin -p`sudo cat /etc/psa/.psa.shadow`"
export backupdir="/root/backups-mydomain.com-mysql"

# delete week old files
find ${backupdir}/ -regex '.*.dump.gz' -mtime +4 -exec rm {} \;

# dump databases to the backupdir
echo "show databases;" | mysql ${creds} | egrep -v ^Database$ | \
        awk '{print "mysqldump ${creds} "$1" | \
        gzip > ${backupdir}/db-"$1"-${date}.dump.gz"}' | \
        sh

我尝试过以下 cron 条目,但都不起作用:

10      0       *       *       *       /root/_backups-generate-mysql.sh

10      0       *       *       *       /bin/sh /root/_backups-generate-mysql.sh

我根据以下建议遇到了此错误:

/bin/sh: /root/_backups-generate-mysql.sh: Permission denied

答案1

尝试将您的实际 Plesk 管理员密码硬编码到您的备份脚本中,而不是依靠脚本sudo cat /etc/psa/.psa.shadow为您获取密码 - 它的安全性不亚于让您的脚本 sudo cat 密码文件不使用密码,并且删除了一层抽象。

更好的是,创建一个具有所有数据库权限的用户LOCK TABLES, RELOAD, and SELECT,并将其用于备份目的。

如果你正在寻找替代脚本,我建议自动MySQL备份。我已经在多个 Plesk 实施中使用它多年了。

答案2

另请参阅cron不运行的原因

如果没有 alvosu 建议的重定向,cron 输出将转到电子邮件,因此运行这些 cron 作业的用户可能会在其邮箱中发现一些错误。

错误消息告诉我,运行 cron 的用户(即拥有该 crontab 文件的用户)没有执行该脚本的权限。您需要更改该脚本的权限。

相关内容