服务器之家

服务器之家 > 正文

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

时间:2019-11-17 19:30     来源/作者:VBS教程网

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

一、实施过程及原理为:

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了。 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
运维必须知道的关于云服务器的十个问题
运维必须知道的关于云服务器的十个问题 2019-05-24
返回顶部