我有以下postgres备份脚本,它是一个shell脚本并编写为运行ans postgres
用户。
但问题是postgres
用户无权编写这些目录。我作为用户在这些机器上没有sudo
,但我已将目录更改为755并添加到具有执行读写执行的主要权限的组中的一个。由于postgres
用户不属于unix
用户组,我想我遇到了这个问题。
我的目标是将其放在cron-tab中,但在此之前我需要以适当的权限运行脚本:
#!/bin/bash
# location to store backups
backup_dir="/location/to/dir"
# name of the backup file has the date
backup_date=`date +%d-%m-%Y`
# only keep the backup for 30 days (maintain low storage)
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 {} \;
答案 0 :(得分:1)
在此之前,请务必以超级用户身份(sudo su
)登录并尝试执行以下操作:
useradd -G unix postgres
(将postgres用户添加到unix组)
su postgres
(以postgres用户身份登录)
mkdir folder
(转到postgres需要写文件的目录)
***从这一行开始是我对@ find-missing-semicolon问题
的回答为了说明shell脚本的示例,您可以使用read命令捕获密码并将其放入变量。在这里,我将密码存储在密码中,然后将其回显。我希望这会有所帮助。
`#!/bin/bash`
`read -s -p "Password: " password`
`echo $password`