应用系统部署后远程备份

应用部署后,用户开始录入数据,担心应用不稳定,所以每天在用户录入数据后,都要备份应用系统;
由于设计时,数据库中存储的应用系统相关的有些文件,是存储的文件路径,所以,在备份数据库后,
需要同步将路径对应的文件备份下来。以便恢复时,能够完全恢复。

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:password@192.168.0.105: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不能直接在命令行中通过参数制定密码,需要用秘钥,
在windows上通过ssh-keygen生产密钥对,然后将密钥的公钥传到服务器,追加到authorized_keys中

在服务器上配置ssh-config,然后windows client端用命令

scp -r -i /cygdrive/c/cygwin64/home/username/.ssh/id_rsa username@192.168.0.105:/home/username/prodname /cygdrive/e/backupdir

传输速度非常慢,改为用winscp,速度快了不止2倍

改用winscp,winscp直接指定用户名和密码,轻松搞定;

 

 

posted on 2016-06-04 14:43  CrunchYou  阅读(324)  评论(0编辑  收藏  举报

导航