FTP自动备份脚本

1台小机 “A” EXP导出备份到本机
1台 windows2003 PCserver “B”
我现在想每天自动复制小机上面已经备份的文件到B机上 FTP脚本怎么写
麻烦大家了 我试了网上的很多 都不行
AIX 上目录 /oracle/expbackup/ 导出的数据文件 以20101105.dmp 这样命名 保留7天
windows上目录 e:\abcd 我现在想要每天复制他一份最新的备份 比如今天备份就是复制20101105.dmp 这个 明天就删除20101105.dmp 复制20101106.dmp的 纠结啊 成功可以再加分 谢谢

换空间,数据的备份与恢复具体步骤操作!
一 备份数据
1,利用PW后台的数据备份功能进行备份.注意的是在备份数据的时候,为了数据的完整性,建议最好先关闭论坛,后台更新所有缓存和索引.
2,利用phpmyadmin,进行备份,具体如何备份,这里就不介绍.不清楚的可以查阅相关文档,很简单的.这里备份的文件是一个独立sql文件.
以上方法一般适用与中小型论坛的备份,数据量比较小的时候还是很实用的,一般多为虚拟主机用户使用.大型论坛的备份一般是 3,4两种操作..主要是比较简单操作,一些我个人认为比较复杂且不是很实用的方法就不介绍了不如通过Mysqlhotcopy,使用binlog机制,增加mysql的事物日志记录等,这里就不介绍了.以下下操作一般有服务器权限的朋友才可以的.
3,直接复制或者打包数据库文件,复制文件夹,大家应该都明白,我们来讲打包,linux下用tar命令实现简单有效,速度快.Win 下,直接用winrar或者winzip 搞定.注意需要暂停mysql服务.
4,Mysqldump,是mysql自带的脚本,假如数据库名为abc,用户名为:abcuser,密码为123,,那应该使用
命令:
mysqldump -uabcuser -p123 adc pwabc_bak.sql
,pwabc_bak.sql 你可以任意的命名.
二 数据还原
1,针对第一种备份方法,也是最普遍使用的.在恢复论坛数据的时候,要关闭php.ini文件中的safe mode,恢复完数据后,再打开SAFE MODE就可以了。(自己服务器得才需要此设置,普通虚拟空间用户不用此设置)
用FTP软件下载老论坛所有文件
将所有文件上传至新空间
打开网页 你的论坛地址/admin.php 用你的论坛创始人帐号登陆
数据恢复(随便点一个文件,程序会自动将剩余文件导入的)
以上方法可保留所有数据及插件和模板。
对于不需要模板的或者不需要原来的插件的
老论坛备份数据,用FTP拉到本地。(具体在data目录下)
上传程序包里的文件到新空间,全新安装
用FTP软件将备份的数据上传到新空间的data目录下
用论坛创始人帐号进入后台,数据恢复
如果后台数据库忘记了,可以直接修改sql_config.php里的数据库帐号和创始人帐号密码!这里输入的创始人密码不能直接是明文.需要是MD5加密过后的.
这里就给大家一个简单的 MD5密文 [e10adc3949ba59abbe56e057f20f883e] 明文 [123456]之后就可以通过/admin.php 刚才修改的帐户密码登陆论坛了..
2,对于phpmysql备份的数据,在2M以下可以直接导入数据库中(至于怎么导,看相关文档,很简单.)数据量很大的情况只能到服务器上,服务器上 mysql 命令导入(具体导入将在"4"中介绍)虚拟主机用户,那么就得联系你的空间商,让他们协助完成数据的恢复.
3,对于打包数据库文件的,可以直接解压 把数据库文件 放到你数据库名的目录下. 在linux下注意数据库文件的权限.一般都是mysql:mysql. Win 下关系不是很大,除非你做了特殊的权限设置.
4,对于mysqldump 导出数据, 按照备份数据中的举例用户来演示,
则命令为:
mysql -uabcuser -p123 abc abc_bak.sql
注意:
无任何错误一般来说就是正常完成。通常在使用 phpmyadmin 导入的sql脚本中有create database语句,会导致导入数据出错,因为database 已经存在,把这段语句删除之,再次检查客户的建表语句前是否有drop表的语句,如果没有,而原数据库存在同名表格,也会出错,这时需要清空原数据库.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-10
主要思路:在2003系统下写个批处理程序,然后把它配置到任务计划中,定时执行。
批处理程序的核心是调用windows自带的命令行FTP工具(ftp.exe)来下载文件,但是为了自动化,需要为执行它准备一组ftp命令,命令中有一部分是固定的(打开某个主机、输入帐号和密码、设置控制状态等,详见StaticCMD.ftp),另外一部分是根据日期的变更而动态,需要在主批处理过程中动态地构造,附在静态命令之后,一起送交ftp.exe执行。

批处理概要:
@ECHO OFF
SETLOCAL
SET FN_Today=%DATE:-=%.dmp
SET FN_FTP=DynamicCMD.ftp
SET DIR_Target=E:\abcd
IF EXIST %FN_Target%\*.dmp DEL %FN_Target%\*.dmp
PUSHD %~dp0
COPY /Y StaticCMD.ftp %FN_FTP%
ECHO get %FN_Today%>>%FN_FTP%
ECHO bye>>%FN_FTP%
FTP -s:%FN_FTP%
POPD
ENDLOCAL

静态命令StaticCMD.ftp内容如下,前三行内容需要根据你的环境自行填写:
open 输入你的机器A的局域网IP域名或地址,例如:ComputerA、192.168.1.5之类
输入你用来登录小机A的FTP帐号,独占一行
输入FTP帐号相应的密码,独占一行
verbose off
type binary
cd /oracle/expbackup
lcd E:\abcd

假设上述批处理程序叫做AutoPick.BAT,则要求StaticCMD.ftp和它在同一目录中,最终送交ftp.exe的命令文件也放在该目录中,文件名如上为DynamicCMD.ftp;批处理中稍显武断的做法是在下载当天备份文件之前,删除了E:\abcd中所有的备份文件(认为它们都是过期的),而不是精确地删除前一天的;这套逻辑还有个缺陷在于如果小机A上没有如约每日产生备份文件,或者下载过程失败,本地E:\abcd下的早期备份文件也被删除了,如果想改进这个机制,就得再罗嗦一些,确有必要时再来探讨吧。

最后,简单说明一下如何从命令行配置任务计划,图形界面下的操作就不赘言了。
运行schtasks.exe,也是系统自带,查看用法可以执行schtasks /?,查看用它新建任务计划的办法是schtasks /create /?
解决远程备份这个具体的问题,方法如下:
在D:盘上建一个子目录,比如叫做AtoB,把AutoPick.BAT和StaticCMD.ftp放在其中
schtasks /create /U 用户名 /P 密码 /SC DAILY /ST 04:00:00 /TN 我的远程备份 /TR D:\AtoB\AutoPick.BAT
显然,/ST指定的准确钟点,应该晚于小机A上产生备份文件的钟点。还有,这里的“用户名”和“密码”是指2003上拥有系统管理权限的账户。本回答被网友采纳