运维部落

首页 > Windows, 解决方案 > Windows下Oracle文件的自动备份与ftp自动上传

Windows下Oracle文件的自动备份与ftp自动上传

2015年6月26日

环境说明
操作系统:Windows平台
环境:Oracle11g
FTP: 192.168.148.121 用户:dell 密码:123
要求:上传当天备份的数据库文件到FTP服务器,并删除windows平台下前一天的数据库备份文件
解决方案:利用任务计划、批处理文件和 FTP功能,来实现 Windows下自动备份数据库文件到远程FTP服务器并删除指定日期前的备份

具体 操作步骤如下
1、完成 Windows平台下Oracle 自动备份详细步骤 (见上个文章)
2、创建批处理 windowbackuptoftp.bat 文件
windowbackuptoftp.bat 中详细内容如下

@echo off
color 0a
title FTP自动上传
mode con cols=120 lines=50
echo.
echo *************************************************
echo 说 明
echo 本脚本可以方便用户自动向FTP上传当天的文件到 (—大于当天getdate() 120的形式, –删除一天前的数据)
echo 指定远程路径,与计划任务配合使用来实现数据库备份
echo *************************************************
echo
echo 10秒后开始下载…
echo open 192.168.148.121>ftp.txt
echo dell>>ftp.txt
echo 123>>ftp.txt
forfiles /p F:\autobackup /s /m *.dmp /d +%date:~0,10% /c “cmd /c echo put @file>>ftp.txt”
echo bye>>ftp.txt
C:\Windows\System32\ftp.exe -i -s:ftp.txt
forfiles -p “F:\autobackup” -s -m *.dmp /D -1 /C “cmd /c del @path>>ftp.txt”
exit

说明:forfiles 从 F:\autobackup查找对应的文件。
echo %date:~0,10% 等于2014-04-08 大于当天日期的数据库备份文件
cmd /c 可以在引号里将多条命令(包括批处理里的语句)用’&&’连接起来,达到将多条命令化为一条命令的目的
-1 保留最新1天的备份,使用 Resource kit 里的命令 FORFILES 删除老备份文件
del 删除
put 上传
ftp -s:ftp.txt 意思是,读取fxp.txt里的参数,执行ftp命令,命令执行完后,对应的文件日志下载到对方计算机里了。

DOS批处理命令(forfiles) 详解

Forfiles
从文件夹或树中选择要进行批处理的文件。
语法
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]
参数
/p Path 指定Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
/m SearchMask 按照SearchMask 搜索文件。默认的SearchMask 是[i].[/i]。
/s 指示forfiles 在子目录中搜索。
/c Command 在每个文件上运行指定的Command。带有空格的命令字符串必须用引号括起来。默认的Command 是”cmd /c echo @file”。
/d[{+ | -}] [{MM/DD/YYYY | DD}] 选择日期大于或等于(+)(或者小于或等于(-))指定日期的文件,其中MM/DD/YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或-,则使用+。DD 的有效范围是0 – 32768。
/? 在命令提示符下显示帮助。
注释
•Forfiles 最常用于批处理文件中。
•Forfiles /s 与dir /s 类似。
•下表列出了可在/cCommand 命令字符串中使用的变量。
变量描述
@file 文件名
@fname 无扩展名的文件名
@ext 文件扩展名
@path 文件的完整路径
@relpath 文件的相对路径
@isdir 如果文件类型是目录,则计算值为TRUE,否则值为FALSE
@fsize 用字节表示的文件大小
@fdate 文件中上次修改的日期戳
@ftime 文件中上次修改的时间戳
•使用forfiles,可以在多个文件上运行命令或将参数传递给多个文件。例如,可以在树中带有[i].txt 扩展名的所有文件上运行TYPE 命令。或者,可以用文件名“Myinput.txt”作为第一个参数,在C:\ 驱动器上执行每个批处理文件([/i].bat)。
•通过使用forfiles,可以执行下列任何操作:使用/d 按照绝对或相对日期选择文件。
•使用诸如@fsize(文件大小)和@fdate(文件日期)这样的变量构建文件的存档树。
•使用@isdir 变量区分文件和目录。
•通过在命令行中包含特殊字符和使用十六进制代码0xHH 环绕字符来格式化输出内容。
•Forfiles 通过在旨在仅处理单个文件的工具上执行“循环子目录”标记来发挥作用

2、添加一个任务计划 TSFTPPlan

开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的windowbackuptoftp.bat 文件 > 任务名输入TSFTPPlan,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
点击”完成”之后,会在任务计划栏目下新增一个名为”TSFTPPlan”的任务计划,表明已经配置完毕。

本文的评论功能被关闭了.