为了保障服务器中数据的可恢复性,采用异地备份数据库方案。异地备份数据分为异地备份文件数据与异地备份数据库数据二种。其中异地备份文件数据是为了备份网站中用户上传的文件而设计的。而异地备份数据库数据是将数据库中数据备份文件上传到异地服务器。
一、实施过程及原理为:
1. 需安装WinRAR软件,用于将多个待备份文件压缩成一个压缩文件。
2. 书写备份脚步:
目录定位到WinRAR软件安装路径下
cd c:program fileswinrar
执行rar.exe程序
rar a -r -y c:c.rar c:ca c:cb
连接远程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 fileswinrar
rar a -r -y c:c.rar c:ca c:cb
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:ca c:cb
set ftpfile="c:backupftp.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 fileswinrar"
@echo 开始备份数据库
exp %userdb%/%pwddb%@%domain% file="%dbfilesdmp%"
@echo 开始压缩文件
c:
cd c:program fileswinrar
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
@echooff
ftp-i-s:ftp.txt
remdateformatis"YYYY-MM-DD"
setdt=%date:~0,10%
settd=%date:~0,10%
remset/Pdt="InputDate:"
remset/Ptd="InputDate:"
seti=1
:forok
if%i%==1gotoi01
if%i%==2gotoi02
if%i%==3gotoi03
if%i%==4gotoi04
if%i%==5gotoi05
:i01
seti=2
gotonextok
:i02
seti=3
gotonextok
:i03
seti=4
gotonextok
:i04
seti=5
gotonextok
:i05
seti=6
gotonextok
:nextok
setdy=%dt:~0,4%
setdm=%dt:~5,2%
setdd=%dt:~8,2%
if%dm%%dd%==0101gotoL01
if%dm%%dd%==0201gotoL02
if%dm%%dd%==0301gotoL07
if%dm%%dd%==0401gotoL02
if%dm%%dd%==0501gotoL04
if%dm%%dd%==0601gotoL02
if%dm%%dd%==0701gotoL04
if%dm%%dd%==0801gotoL02
if%dm%%dd%==0901gotoL02
if%dm%%dd%==1001gotoL05
if%dm%%dd%==1101gotoL03
if%dm%%dd%==1201gotoL06
if%dd%==02gotoL10
if%dd%==03gotoL10
if%dd%==04gotoL10
if%dd%==05gotoL10
if%dd%==06gotoL10
if%dd%==07gotoL10
if%dd%==08gotoL10
if%dd%==09gotoL10
if%dd%==10gotoL11
set/Add=dd-1
setdt=%dy%-%dm%-%dd%
gotoEND
:L10
set/Add=%dd:~1,1%-1
setdt=%dy%-%dm%-0%dd%
gotoEND
:L11
setdt=%dy%-%dm%-09
gotoEND
:L02
set/Adm=%dm:~1,1%-1
setdt=%dy%-0%dm%-31
gotoEND
:L04
set/Adm=dm-1
setdt=%dy%-0%dm%-30
gotoEND
:L05
setdt=%dy%-09-30
gotoEND
:L03
setdt=%dy%-10-31
gotoEND
:L06
setdt=%dy%-11-30
gotoEND
:L01
set/Ady=dy-1
setdt=%dy%-12-31
gotoEND
:L07
set/A"dd=dy%%4"
ifnot%dd%==0gotoL08
set/A"dd=dy%%100"
ifnot%dd%==0gotoL09
set/A"dd=dy%%400"
if%dd%==0gotoL09
:L08
setdt=%dy%-02-28
gotoEND
:L09
setdt=%dy%-02-29
gotoEND
:END
if%i%==2gotoforok
if%i%==3gotoforok
if%i%==4gotoforok
if%i%==5gotoforok
if%i%==6gotomdb
:mdb
echocopy%td%
echodel%dt%
copy数据库名.mdb"%td%".mdb
del"%dt%".mdb
上面是备份最近5天的数据,每天一个。你可以修改上面的代码到最近6、7。。。。n天
如:修改成6天
if%i%==5gotoi05下增加
if%i%==6gotoi06
:i05
seti=6
gotonextok下增加
:i06
seti=7
gotonextok
if%i%==6gotomdb改为
if%i%==6gotoforok
if%i%==7gotomdb
依次类推。。。。到n天:-)
以上两个文件准备好了,我们可以使用windows自带的任务计划来计划程序每天自动去备份数据了
具体步骤:控制面板--》任务计划--》添加任务计划。。。。选择每天。。。选择movefile.bat
就ok了。
【使用批处理文件异地备份数据库(最近几天的数据)】相关文章: