我有这个脚本(每天备份数据库):
#!/bin/bash
# Location to place backups.
backup_dir="/home/user/openerp/7.0/backup/"
#String to append to the name of the backup files
backup_date=`date +%Y-%m-%d`
#Numbers of days you want to keep copie of your databases
number_of_days=7
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 等数据库。我试图在文档中查看这个数据库过滤是如何工作的,但没有找到任何信息。
谁能告诉我如何过滤除template0、template1、postgres 等数据库之外的所有数据库。如果有人可以提供指向文档的链接,其中提到了这样的过滤,那也很棒:
`psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
按要求输出:
demo
demo_empty1
dn1
dn2
dn3
da21
da22
nbb323
nd
nd2
pf12
postgres
rub_demo1
template0
template1
test
test3
testas_3
所以所有数据库,除了 postgres、template0 和 template1