当前位置 博文首页 > 使用批处理文件异地备份数据库(最近几天的数据)

    使用批处理文件异地备份数据库(最近几天的数据)

    作者:admin 时间:2021-02-01 18:02

    为了保障服务器中数据的可恢复性,采用异地备份数据库方案。异地备份数据分为异地备份文件数据与异地备份数据库数据二种。其中异地备份文件数据是为了备份网站中用户上传的文件而设计的。而异地备份数据库数据是将数据库中数据备份文件上传到异地服务器。

    一、实施过程及原理为:

    1.       需安装WinRAR软件,用于将多个待备份文件压缩成一个压缩文件。
    2.       书写备份脚步:
    目录定位到WinRAR软件安装路径下
    cd c:\program files\winrar
    执行rar.exe程序
    rar a -r -y c:\c.rar c:\c\a c:\c\b
    连接远程ftp服务器,其中要书写ftp://ftp.txt/文件
    ftp -s:c:\ftp.txt 192.168.0.1
    可删除本地备份文件
    del /f /q c:\c.rar
    目录重新定位
    cd\
    完整代码如下(back.bat):

    复制代码 代码如下:

    cd c:\program files\winrar
    rar a -r -y c:\c.rar c:\c\a c:\c\b
    ftp -s:c:\ftp.txt 192.168.0.1
    del /f /q c:\c.rar
    cd\

    3. 书写远程ftp连接配置文件

    用户名
    密码
    cd 路径
    Put 本地文件路径及文件名 远程文件路径及文件名
    Bye为退出
    完整代码如下(ftp.txt):
    admin
    Heroic
    put c:\c.rar c.rar
    bye
    4.       通过windows自带的“任务计划”功能定时运行bat文件。(通过“开始”->“附近”->“系统工具”->“任务计划”
    5.       备份oracle数据库命令为:
    exp userid/pwd@servicename file = "backupfilepath" owner = user
    注意userid为系统管理员,backupfilepath为文件保存路径(文件后缀为dmp) ,user是针对那个用户进行备份,如果不写该参数,则默认针对userid用户进行备份
    例如:
    exp user/pwd@servername file=d:"backup"oracle"oracle%date:~0,10%.dmp owner=system log=d:"backup"oracle"oracle%date:~0,10%.log
    (其中%date:~0,10% 为取当前系统时间。0为开始位置,10为结束位置)

    复制代码 代码如下:

    set files=c:\backup\%date:~0,10%.rar
    set dbfilesdmp=c:\backup\%date:~0,10%db.dmp
    set userdb="jbpmdemo"
    set pwddb="jbpmdemo"
    set domain="master.jhserver"
    set filespath=c:\c\a c:\c\b
    set ftpfile="c:\backup\ftp.txt"
    set ftpname=admin
    set ftppwd=Heroic
    set ftpfiles="%date:~0,10%.rar"
    set ftpdbfiles="%date:~0,10%db.rar"
    set ftpdomain="192.168.0.1"
    set rarpath="c:\program files\winrar"

    @echo 开始备份数据库
    exp %userdb%/%pwddb%@%domain% file="%dbfilesdmp%"

    @echo 开始压缩文件
    c:
    cd c:\program files\winrar
    rar a -r -y %files% %filespath% %dbfilesdmp%

    @echo 写入文件ftp
    @echo %ftpname%>%ftpfile%
    @echo %ftppwd%>>%ftpfile%
    @echo put %files% %ftpfiles%>>%ftpfile%
    @echo bye>>%ftpfile%
    @echo 上传%files%.rar文件
    ftp -s:%ftpfile% 192.168.0.1
    del /f /q %files%

    数据库异地备份对一个网站来说是非常必要的,这里谈一下使用批处理文件对数据库异地本份的过程,首先需要准备两个文件,一个是ftp.txt(存储ftp命令),一个是movefile.bat(存储dos命令).

    ==========ftp.txt
    open 服务器的ip地址
    ftp用户名
    ftp密码
    bin
    get 数据库名.mdb
    bye
    quit
    上面是简单的例子,具体的要看你的数据库存放的路径、一次性获得多个文件。可以加上cd,mget等ftp命令
    ==========movefile.bat
    @echo off
    ftp -i -s:ftp.txt
    rem date format is "YYYY-MM-DD"
    set dt=%date:~0,10%
    set td=%date:~0,10%

    rem set /P dt="Input Date: "
    rem set /P td="Input Date: "

    set i=1

    :forok
    if %i%==1 goto i01
    if %i%==2 goto i02
    if %i%==3 goto i03
    if %i%==4 goto i04
    if %i%==5 goto i05
    :i01
    set i=2
    goto nextok
    :i02
    set i=3
    goto nextok
    :i03
    set i=4
    goto nextok
    :i04
    set i=5
    goto nextok
    :i05
    set i=6
    goto nextok
    :nextok

    set dy=%dt:~0,4%
    set dm=%dt:~5,2%
    set dd=%dt:~8,2%

    if %dm%%dd%==0101 goto L01
    if %dm%%dd%==0201 goto L02
    if %dm%%dd%==0301 goto L07
    if %dm%%dd%==0401 goto L02
    if %dm%%dd%==0501 goto L04
    if %dm%%dd%==0601 goto L02
    if %dm%%dd%==0701 goto L04
    if %dm%%dd%==0801 goto L02
    if %dm%%dd%==0901 goto L02
    if %dm%%dd%==1001 goto L05
    if %dm%%dd%==1101 goto L03
    if %dm%%dd%==1201 goto L06

    if %dd%==02 goto L10
    if %dd%==03 goto L10
    if %dd%==04 goto L10
    if %dd%==05 goto L10
    if %dd%==06 goto L10
    if %dd%==07 goto L10
    if %dd%==08 goto L10
    if %dd%==09 goto L10
    if %dd%==10 goto L11
    set /A dd=dd-1
    set dt=%dy%-%dm%-%dd%
    goto END
    :L10
    set /A dd=%dd:~1,1%-1
    set dt=%dy%-%dm%-0%dd%
    goto END
    :L11
    set dt=%dy%-%dm%-09
    goto END

    :L02
    set /A dm=%dm:~1,1%-1
    set dt=%dy%-0%dm%-31
    goto END
    :L04
    set /A dm=dm-1
    set dt=%dy%-0%dm%-30
    goto END

    :L05
    set dt=%dy%-09-30
    goto END
    :L03
    set dt=%dy%-10-31
    goto END
    :L06
    set dt=%dy%-11-30
    goto END
    :L01
    set /A dy=dy-1
    set dt=%dy%-12-31
    goto END

    :L07
    set /A "dd=dy%%4"
    if not %dd%==0 goto L08
    set /A "dd=dy%%100"
    if not %dd%==0 goto L09
    set /A "dd=dy%%400"
    if %dd%==0 goto L09
    :L08
    set dt=%dy%-02-28
    goto END
    :L09
    set dt=%dy%-02-29
    goto END

    :END
    if %i%==2 goto forok
    if %i%==3 goto forok
    if %i%==4 goto forok
    if %i%==5 goto forok
    if %i%==6 goto mdb

    :mdb
    echo copy %td%
    echo del %dt%
    copy 数据库名.mdb "%td%".mdb
    del "%dt%".mdb
    上面是备份最近5天的数据,每天一个。你可以修改上面的代码到最近6、7。。。。n天

    如:修改成6天
    if %i%==5 goto i05 下增加
    if %i%==6 goto i06
    :i05
    set i=6
    goto nextok 下增加
    :i06
    set i=7
    goto nextok 
    if %i%==6 goto mdb 改为
    if %i%==6 goto forok
    if %i%==7 goto mdb

    依次类推。。。。到n天 :-)

    以上两个文件准备好了,我们可以使用windows自带的任务计划来计划程序每天自动去备份数据了

    具体步骤:控制面板--》任务计划--》添加任务计划。。。。选择每天。。。选择movefile.bat
    就ok了。 
    js
下一篇:没有了