我准备了一个脚本,它将使用 pgbackrest 运行我的 postgreSQL 数据库的备份,然后使用 restic 将其推送到 Backblaze B2。不幸的是,它不会执行,系统日志中也没有显示任何错误。
脚本如下:
#!/bin/bash
dayofweek=`date +"%a"`
timeofday=`date +"%k"`
if [[ $(id -u) -ne 112 ]] ; then echo "Please run as user postgres" ; exit 1 ; fi
if [ $dayofmonth == "Sun" && $timeofday == 1 ];
then
echo "running weekly backup";
pgbackrest --stanza=sonar --type=full backup;
B2_ACCOUNT_ID="ID" B2_ACCOUNT_KEY="KEY" restic -r b2:sonar-pg backup /var/lib/pg-backup/backup/sonar --password-file /restic-pw.txt;
else
echo "running daily";
pgbackrest --stanza=sonar backup;
B2_ACCOUNT_ID="ID" B2_ACCOUNT_KEY="KEY" restic -r b2:sonar-pg backup /var/lib/pg-backup/backup/sonar --password-file /restic-pw.txt;
fi
使用以下方式在控制台中手动运行时,它运行得非常好:
sudo su -ui postgres /var/lib/pg-backup/backup.sh
当作为 cronjob 运行时(在 crontab 中):
15 * * * * postgres bash /var/lib/pg-backup/backup.sh
我已尝试附加 > /tmp/backup.log,但没有写入日志。
我怎样才能更好地排除故障或解决这个问题?
编辑:解决方案:将 crontab 条目放入 /etc/crontab 文件中