【发布时间】:2021-10-18 17:49:18
【问题描述】:
我正在尝试为 postgre 数据库设置自动备份。 Postgre 在 docker 中运行,所以我的备份脚本是:
docker-compose exec postgres -U user database_name | gzip > "/var/server/my_service/data/backup-db/db_backup.sql.gz"
如果我手动运行它,它工作正常。我为 crontab 编写了以下作业(仅用于测试每 5 分钟一次):
*/5 * * * * cd /var/server/my_service && sh /var/server/my_service/data/backup/backup_script
这个命令也很好用,如果我手动运行它,它会创建我可以使用的有效数据库备份。 但是 crontab 只是创建空存档,没有任何数据。我只是不明白为什么。 我的猜测是捕获 gzip 的输出流通常是在手动模式下生成的,但是当 crontab 尝试运行命令时完全为空
我认为访问权限存在问题并将其放在根 crontab 中,但没有帮助
更新:
所以...备份脚本中的问题,日志中的错误说the input device is not a TTY
我尝试了谷歌它并添加了-T,但它也没有帮助
【问题讨论】:
-
尝试在 crontab 上以
backup_script >> file.log 2>&1的身份重定向到日志文件,或使用mail检查您的系统邮件。当 crontab 产生 stdout 或 stderror 消息时,曾经存在 Crontab 错误。 devanswers.co/you-have-mail-how-to-read-mail-in-ubuntu -
@LMC 更新问题,日志显示
the input device is not a TTY
标签: postgresql docker docker-compose cron