使用批处理文件异地备份数据库(最近几天的数据)
为了保障服务器中数据的可恢复性,采用异地备份数据库方案。异地备份数据分为异地备份文件数据与异地备份数据库数据二种。其中异地备份文件数据是为了备份网站中用户上传的文件而设计的。而异地备份数据库数据是将数据库中数据备份文件上传到异地服务器。
一、实施过程及原理为:
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
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了。