zoukankan      html  css  js  c++  java
  • 应用系统部署后远程备份

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

    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 III1.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_backupdrop_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直接指定用户名和密码,轻松搞定;

     

     

    敦品厚德 格物致知
  • 相关阅读:
    抽象类 C#
    多态
    父类与子类的转换as,is
    try catch finally 与continue的使用
    封装、多态、继承
    new关键字 、this关键字、base关键字
    进程的使用
    Spring IOC
    使用annotation配置hibernate(3):一对一关系配置
    使用annotation配置hibernate(3):多对多关系配置
  • 原文地址:https://www.cnblogs.com/crunchyou/p/5558809.html
Copyright © 2011-2022 走看看