应用部署后,用户开始录入数据,担心应用不稳定,所以每天在用户录入数据后,都要备份应用系统;
由于设计时,数据库中存储的应用系统相关的有些文件,是存储的文件路径,所以,在备份数据库后,
需要同步将路径对应的文件备份下来。以便恢复时,能够完全恢复。
rem------------------------------------------------------------------------
rem 以下是备份批处理文件内容
rem------------------------------------------------------------------------
e:
cd e:\prodname_backup
set fn_date=%date:~0,4%%date:~5,2%%date:~8,2%
if "%time:~0,1%"==" " (set fn_time=0%time:~1,1%%time:~3,2%%time:~6,2%) else (set fn_time=%time:~0,2%%time:~3,2%%time:~6,2%)
set fld=%fn_date%_%fn_time%
set fn=prodname_%fn_date%_%fn_time%.backup
mkdir %fld%
c:
cd C:\Program Files (x86)\pgAdmin III\1.20\
echo 1 备份开始.................
pg_dump.exe --host 192.168.0.105 --port 5432 --username "pgsql" --role "pgsql" --no-password --format custom --blobs --section pre-data --section data --section post-data --encoding UTF8 --inserts --column-inserts --verbose --file "e:\prodname_backup\%fld%\%fn%" "proddbname"
echo 1 备份结束.................
echo 2 创建本地同名数据库开始.................
psql --host 127.0.0.1 --dbname=postgres --username=pgsql -f e:\prodname_backup\drop_create_localdb.sql
echo 2 创建本地同名数据库结束.................
echo 3 恢复到本地同名数据库开始.................
pg_restore.exe --host localhost --port 5432 --username "pgsql" --dbname "proddbname" --role "pgsql" --no-password --section pre-data --section data --section post-data --verbose "e:\prodname_backup\%fld%\%fn%"
echo 3 恢复到本地同名数据库结束.................
winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://username:[email protected]:22" "option transfer binary" "get /home/username/projdir e:\prodname_backup\%fld%\projdir" "exit" /log=e:\prodname_backup\%fld%\winscp-log.txt
e:
cd e:\prodname_backup\%fld%
dir %fn%
cd..
------------------------------------------------------------------------
sql内容,database每次都重建,若不重建,恢复是总是报权限问题
------------------------------------------------------------------------
drop database if exists proddbname;
create database proddbname
唯一值得记录的就是scp;
先尝试装cygwin,下载openssh,然后用其带的scp;
scp不能直接在命令行中通过参数制定密码,需要用秘钥,
在服务器上用ssh-keygen生成了秘钥,拷贝到cygdrive/c/home/username/.ssh中来,
无济于事,不知道cygwin中的scp的秘钥怎么指定,只在两个linux系统之间能够成功
浪费了好些时间,反复试验,都不行;
改用winscp,winscp直接指定用户名和密码,轻松搞定;