【发布时间】:2020-02-28 14:09:23
【问题描述】:
我创建了一个 cron 选项卡来每 30 分钟备份一次我的数据库...
*/30 * * * * bash /opt/mysqlbackup.sh > /dev/null 2>&1
cron 选项卡运行良好。每 30 分钟我都会使用下面的脚本备份一次。
#!/bin/sh
find /opt/mysqlbackup -type f -mtime +2 -exec rm {} +
mysqldump --single-transaction --skip-lock-tables --user=myuser --
password=mypass mydb | gzip -9 > /opt/mysqlbackup/$(date +%Y-%m-%d-%H.%M)_mydb.sql.gz
但我的问题是删除旧数据的rm功能不起作用..这永远不会被删除..你知道为什么吗?
还有...我的备份名称是 2020-02-02-12.12_mydb.sql.gz?
我总是有一个?在我文件名的末尾。你知道为什么吗?
感谢您的帮助
【问题讨论】:
-
find /opt/mysqlbackup -type f -mtime +2输出什么?如果你通过 cron 调用它怎么样?find /opt/mysqlbackup -type f -mtime +2 > /tmp/cronoutput有区别吗? -
如果我在终端执行
find /opt/mysqlbackup -type f -mtime +2 -exec rm {} +...一切正常 -
是的,但那是在你的 shell 中,而不是 cron 在做什么。向我们展示 cron 看到的命令的输出(没有 rm)。
-
最好坚持使用 crontabs 中的完整路径。
bash→/bin/bash。但是,如果您说脚本的其余部分运行正常,这不是解决方案... -
你告诉我的 cron 的输出完全符合我的预期
标签: linux bash cron mysql-backup