Crontab 不会在 docker 中备份 postgre DB,但如果我 运行 手动编写脚本,它会正常工作
Crontab doesn't backup postgre DB in docker, but if i run script by hand it work prorely
我正在尝试为 postgre 数据库设置自动备份。 Postgre 运行ning 在 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 中,但它没有帮助
更新:
所以... backup_script 中的问题,日志中的错误显示 the input device is not a TTY
我尝试了 google 它并添加了 -T,但它也没有帮助
使用以下内容更新您的 /var/server/my_service/data/backup/backup_script
:
在脚本的前 3 行添加前缀:
#!/bin/bash
source ~/.bash_profile
cd /var/server/my_service
#
# rest of your script
#
您的 crontab
行应该是 (At 04:44 on every day-of-month):
44 4 */1 * * /var/server/my_service/data/backup/backup_script
我正在尝试为 postgre 数据库设置自动备份。 Postgre 运行ning 在 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 中,但它没有帮助
更新:
所以... backup_script 中的问题,日志中的错误显示 the input device is not a TTY
我尝试了 google 它并添加了 -T,但它也没有帮助
使用以下内容更新您的 /var/server/my_service/data/backup/backup_script
:
在脚本的前 3 行添加前缀:
#!/bin/bash
source ~/.bash_profile
cd /var/server/my_service
#
# rest of your script
#
您的 crontab
行应该是 (At 04:44 on every day-of-month):
44 4 */1 * * /var/server/my_service/data/backup/backup_script