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

     

     

    敦品厚德 格物致知
  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/crunchyou/p/5558809.html
Copyright © 2011-2022 走看看