postgresql - 在 cron 中备份 postgres 数据库的问题

标签 postgresql ubuntu cron postgresql-9.2 postgresql-9.3

我正在尝试备份 postgres 数据库。为此,我正在运行一个 cron 作业。问题是 postgres 在用户 postgres 下运行,我认为我不能在 ubuntu 用户下运行 cron 作业。我试图在 postgres 用户下创建一个 cron 作业,但也没有用。我的脚本,如果以 postgres 用户身份登录就可以正常工作。 这是我的脚本

#!/bin/bash
# Location to place backups.
backup_dir="/home/postgres-backup/"
#String to append to the name of the backup files
backup_date=`date +%d-%m-%Y`
#Numbers of days you want to keep copie of your databases
number_of_days=30
databases=`psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do
  if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
    echo Dumping $i to $backup_dir$i\_$backup_date
    pg_dump -Fc $i > $backup_dir$i\_$backup_date
  fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;

如果我这样做

sudo su - postgres

我明白了

-rwx--x--x 1 postgres postgres  570 Jan 12 20:48 backup_all_db.sh

当我这样做的时候

./backup_all_db.sh

它在 /home/postgres-backup/ 中备份

然而,无论我是在 postgres 下还是在 ubuntu 下添加 cron 作业,cronjob 都不起作用。

这是我的定时任务

0,30 * * * * /var/lib/pgsql/backup_all_db.sh 1> /dev/null 2> /home/cron.err

将不胜感激

最佳答案

允许用户运行 cron 作业

如果 /etc/cron.allow 文件存在,则必须在其中列出用户才能允许运行 crontab 命令。如果 /etc/cron.allow 文件不存在但 /etc/cron.deny 文件存在,则用户不能列在 /etc 中/cron.deny 文件以运行 crontab。

在两个文件都不存在的情况下,当前 Ubuntu(和 Debian,但不是某些其他 Linux 和 UNIX 系统)的默认设置是允许所有用户使用 crontab 运行作业。

添加定时任务

使用此命令为当前用户添加一个 cron 作业:

crontab -e

使用此命令为指定用户添加一个 cron 作业(需要权限):

crontab -u <user> -e

补充阅读

man 5 crontab

Ubuntu 中的 Crontab:https://help.ubuntu.com/community/CronHowto

关于postgresql - 在 cron 中备份 postgres 数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912844/

相关文章:

linux - Crontab 在 Amazon Linux AMI 2017.09.1 中不工作

每个工作日早上 6 点的 Cron 作业

java - 错误 "org.postgresql.Driver is not a valid javax.sql.DataSource implementation"不会影响任何内容。如何去除它?

node.js - 在 nodejs 中重用 postgresql 连接池

postgresql - 从 Postgres 备份数据库

ubuntu - 为什么在 ubuntu 18.04 上的 Firefox 上没有加载谷歌字体?

javascript - 对数据库的 API 响应中的字符串进行编码或转义?

python - 名称 'get_config' 未定义

ubuntu - 使用 3G USB 调制解调器在 Ubuntu 下发送彩信

linux - 在 Docker 容器中运行计划的 cron 作业的解决方案?