Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在cron中备份postgres数据库的问题_Postgresql_Ubuntu_Crontab_Postgresql 9.2_Postgresql 9.3 - Fatal编程技术网

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

Postgresql 在cron中备份postgres数据库的问题,postgresql,ubuntu,crontab,postgresql-9.2,postgresql-9.3,Postgresql,Ubuntu,Crontab,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

我正在尝试备份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
我明白了

当我这么做的时候

./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作业

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

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


Ubuntu中的Crontab:

允许用户运行cron作业

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

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

添加cron作业

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

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


Ubuntu中的Crontab:

允许用户运行cron作业

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

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

添加cron作业

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

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


Ubuntu中的Crontab:

允许用户运行cron作业

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

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

添加cron作业

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

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


Ubuntu中的Crontab:

为什么使用反斜杠?为什么不使用
${backup\u dir}
等?/home通常属于root,最终用户无法写入/home/cron.err。如果只使用0,30****/var/lib/pgsql/backup\u all\u db.sh会发生什么?为什么使用反斜杠?为什么不使用
${backup\u dir}
等?/home通常属于root,最终用户无法写入/home/cron.err。如果只使用0,30****/var/lib/pgsql/backup\u all\u db.sh会发生什么?为什么使用反斜杠?为什么不使用
${backup\u dir}
等?/home通常属于root,最终用户无法写入/home/cron.err。如果只使用0,30****/var/lib/pgsql/backup\u all\u db.sh会发生什么?为什么使用反斜杠?为什么不使用
${backup\u dir}
等?/home通常属于root,最终用户无法写入/home/cron.err。如果只使用0,30****/var/lib/pgsql/backup\u all\u db.sh会发生什么?