网上有很多方式,最后觉得采用密码文件的方式比较好。
1:在/home/postgres目录下创建.pgpass文件
内容如下:
localhost:5432:*:postgres:password
2:编写备份脚本
dbbackupcron.sh
#!/bin/sh bak_dir="/home/backupfiles/db" #date_dir=`date +%Y/%m/%d/%H` date_dir=`date +%Y/%m/%d` /bin/mkdir -p ${bak_dir}/${date_dir} > /dev/null 2>&1 su postgres -c "/usr/local/pgsql/bin/pg_dump ue_dev > ${bak_dir}/${date_dir}/"ue_dev.dump cd ${bak_dir}/${date_dir} tar czf ue_dev.tar ue_dev.dump gzip ue_dev.tar rm -rf ${bak_dir}/${date_dir}/ue_dev.dump
上面脚本在执行数据备份的时候是用的postgres用户,而不是root,所以bak_dir必须把权限设置为postgres。
给脚本设置执行权限(上来就777,我知道是臭毛病,恩~)
chmod 777 dbbackupcron.sh
3:用crontab设置定时执行
vi /etc/crontab
添加内容:
10 0 * * * root /home/cron/dbbackupcron.sh
上面脚本是每天00:10执行该脚本,可以根据时间和脚本放置位置自行修改上面的内容。
脚本写的比较稚嫩,但是可以达到效果,各位看客如果有更好希望也提供一下。