如何批处理完美实现FTP远程备份数据
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,本篇内容介绍了"如何批处理完美实现FTP远程备份数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举
千家信息网最后更新 2025年02月10日如何批处理完美实现FTP远程备份数据
本篇内容介绍了"如何批处理完美实现FTP远程备份数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
举例说明:
我需要每天早上从服务器202.33.22.102上下载指定目录的文件到本机,那么你需要指定以下几个参数即可
一、远程IP,Is not null
二、FTP用户名,Is not null
三、远程密码,Is not null
四、下载哪个目录下的文件,如果是根目录则输入点点,即".."(没有双引号)
五、子目录,你可能要下载一个文件夹下的多个目录吧?如果有,请用逗号隔开,如果没有则什么也不要设置(包括空格),文件夹名请间量不要有空格,以免不必要的麻烦,当你指定了子目录时,程序只会下载该子目录下的文件,而对再下一级文件夹不做任何操作。
六、本地目录,请指定一个已存在的目录,包括"\",程序会自动在该文件夹下创建和服务器上相同的文件夹
七、日志记录文件目录,也是已存在的。
好了,你现在可以双击这个批处理执行操作了!
@echo offecho ********====================================================== echo ********====================================================== echo ++++++++ 批处理功能: 远程数据FTP备份到本地echo ++++++++ Date: %Date:~0,4%-%Date:~5,2%-%Date:~8,2% echo ++++++++ Author: zc_0101 echo ++++++++ Email: zc_0101@163.comecho ++++++++ QQ: 275374095echo ++++++++ Mark:echo ++++++++ 请严格按照参数说明定义参数,输入参数echo ++++++++ 请尽量常规化,不要带特殊字符包括空格echo ++++++++ 如果文件已存在则跳过,不支持短点续传echo ++++++++ 不检测备份数据完整性,用户可自行修改echo ++++++++ PS: 转载请注明出处(^_^),谢谢!echo ********====================================================== echo ********====================================================== pauseRem 远程IP(请保证开启Server_U)Set Remote_IP=103.111.124.123Rem 远程登录用户名(如果有批处理符号,请进行转义)Set Remote_User=testRem 远程登录密码(如果有批处理符号,请进行转义)Set Remote_Pwd=FkhVBweos^!Sd4al%%Rem 远程操作目录,如果是根目录,请填写".."(无双引号),否则直接填写目录名,如Databasebackset Remote_Path=Databaseback Rem 远程要下载的目录列表(注意:仅下载这些目录下的文件,不会下载子目录下的文件),请用逗号隔开,如果没有子目录(确保当前目录下有文件可下载),请什么也不要填写(包括空格);另:文件夹请不要有空格Set Remote_Directory=DB_Hxxl,DB_OA,master,model,msdb Rem 本地备份目录,请填写一个已存在的目录(本程序将会自动在该目录下创建和远程服务器上同样的子目录,请勿带"\"斜杠)Set Local_Path=D:\DBbackRem 操作日志和临时文件存放路径(请务必带上"\"斜杠)Set Log_Path=D:\Rem 取得当前日期,作为日志文件名称,本例为日志存放目录加当日日期set today="%Log_Path%%Date:~0,4%-%Date:~5,2%-%Date:~8,2%-%Time:~0,2%%Time:~3,2%%Time:~6,2%.txt"echo 正在对您输入的参数进行基本检测…………echo 正在检测输入参数…………>%today%if "%Remote_IP%" EQU "" ( echo 远程IP不能为空!请返回为Remote_IP赋值 echo 远程IP为空,程序退出。>>%today% pause exit)if "%Remote_User%" EQU "" ( echo 远程登录名不能为空!请返回为Remote_User赋值 echo 远程登录名为空,程序退出。>>%today% pause exit)if "%Remote_Pwd%" EQU "" ( echo 远程登录密码不能为空!请返回为Remote_Pwd赋值 echo 远程登录密码为空,程序退出。>>%today% pause exit)if "%Remote_Path%" EQU "" ( echo 远程操作目录不能为空!请返回为Remote_Path赋值,如果是对根目录操作,请输入^(点点^),即".." echo 远程操作目录为空,程序退出。>>%today% pause exit)if "%Remote_Directory%" EQU " " ( echo 远程子目录有误!您是否为Remote_Directory误赋值为空格了?如果没有子目录请不要赋值,包括空格。 echo 远程子目录有误,程序退出。>>%today% pause exit)if "%Local_Path%\" EQU "" ( echo 本地操作目录不能为空!请返回为Local_Path赋值 echo 本地操作目录为空,程序退出。>>%today% pause exit)if "%Log_Path%" EQU "" ( echo 本地日志存放目录不能为空!请返回为Log_Path赋值 echo 本地日志存放目录为空,程序退出。>>%today% pause exit)echo 参数基本检测通过,准备执行数据库备份echo 参数基本检测通过,数据库备份现在开始>>%today%echo 今天是%Date%,时间是:%Time:~0,2%:%Time:~3,2%:%Time:~6,2%,正在执行数据库备份…………echo 今天是%Date%,时间是:%Time:~0,2%:%Time:~3,2%:%Time:~6,2%,正在执行数据库备份…………>>%today%echo 正在创建生成文件列表的ftp文件,请稍候………echo 正在创建生成文件列表的ftp文件,请稍候…………>>%today%ping -n 3 127.1>nulecho 正在将远程登录用户名写入ftp文件…………>>%today%echo %Remote_User%>%Log_Path%command.txtecho 正在将远程登录密码写入ftp文件…………>>%today%echo %Remote_Pwd%>>%Log_Path%command.txtecho 正在将下载方式写入ftp文件…………>>%today%echo type Binary>>%Log_Path%command.txtecho 正在判断远程父目录是否为根目录 …………>>%today%if "%Remote_Path%" NEQ ".." ( if "%Remote_Path%" NEQ "" ( echo 正在将进入远程目录%Remote_Path%的语句写入ftp文件…………>>%today% echo cd %Remote_Path%>>%Log_Path%command.txt ))echo 正在判断远程子目录…………>>%today%if "%Remote_Directory%" NEQ "" ( echo 正在将子目录列表的生成语句写入ftp文件…………>>%today% for %%i in (%Remote_Directory%) do ( echo 正在将子目录列表%%i的生成语句写入ftp文件…………>>%today% echo mls %%i %Log_Path%%%i_temp.txt>>%Log_Path%command.txt )) else ( echo 由于没有填写子目录,则将根目录下文件列表的生成语句写入ftp文件…………>>%today% echo mls - %Log_Path%FileList_temp.txt>>%Log_Path%command.txt ) echo close>>%Log_Path%command.txt echo quit>>%Log_Path%command.txtecho 正在对command.txt文件进行判断if not exist "%Log_Path%command.txt\" ( if exist "%Log_Path%command.txt" ( echo %Log_Path%command.txt文件创建成功 echo %Log_Path%command.txt文件创建成功>>%today% ) else ( echo %Log_Path%command.txt文件创建失败,程序将退出。 echo %Log_Path%command.txt文件创建失败,程序退出>>%today% pause echo exit )) else ( echo 您输入的参数存放日志路径中有竟然有一个名为Command.txt的文件夹,请手动删除后,重新运行程序。 echo 您输入的参数存放日志路径中竟然有有一个名为Command.txt的文件夹,程序退出。>>%today% pause exit)echo 正在执行服务器目录文件列表创建,请稍候…………echo 正在执行服务器目录文件列表创建,请稍候…………>>%today%ping -n 3 127.1>nulftp -i -s:%Log_Path%command.txt %Remote_IP%echo 正在检查已创建的服务器目录文件列表,请稍候…………echo 正在检查已创建的服务器目录文件列表,请稍候…………>>%today%if "%Remote_Directory%" NEQ "" ( for %%i in (%Remote_Directory%) do ( if not exist "%Log_Path%%%i.txt\" ( if exist "%Log_Path%\%%i_temp.txt" ( mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\temp1.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\%%i_temp.txt').ReadAll().replace(/\r\n/g, '\n\n'));close()" mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\temp2.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\temp1.txt').ReadAll().replace(/\r/g, ''));close()" mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\%%i.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\temp2.txt').ReadAll().replace(/\n\n/g, '\r\n'));close()" ) if exist "%Log_Path%%%i.txt" ( echo %Log_Path%%%i.txt文件创建成功! echo %Log_Path%%%i.txt文件创建成功!>>%today% ) else ( echo 对不起,%Log_Path%%%i.txt文件创建失败!程序将退出! echo %Log_Path%%%i.txt文件创建失败!程序终止>>%today% pause exit ) ) else ( echo 您输入的参数存放日志路径%Log_Path%中有竟然有一个名为%%i.txt的文件夹,请手动删除后,重新运行程序。 echo 您输入的参数存放日志路径%Log_Path%中竟然有有一个名为%%i.txt的文件夹,程序退出。>>%today% pause exit ) )) else ( if not exist "%Log_Path%FileList.txt\" ( if exist "%Log_Path%\FileList_temp.txt" ( mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\temp1.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\FileList_temp.txt').ReadAll().replace(/\r\n/g, '\n\n'));close()" mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\temp2.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\temp1.txt').ReadAll().replace(/\r/g, ''));close()" mshta "_javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('%Log_Path%\FileList.txt',2,true).Write(fso.OpenTextFile('%Log_Path%\temp2.txt').ReadAll().replace(/\n\n/g, '\r\n'));close()" ) if exist "%Log_Path%FileList.txt" ( echo %Log_Path%FileList.txt文件创建成功! echo %Log_Path%FileList.txt文件创建成功!>>%today% ) else ( echo 对不起,%Log_Path%FileList.txt文件创建失败! echo %Log_Path%FileList.txt文件创建失败!程序终止>>%today% pause exit ) ) else ( echo 您输入的参数存放日志路径%Log_Path%中有竟然有一个名为FileList.txt的文件夹,请手动删除后,重新运行程序。 echo 您输入的参数存放日志路径%Log_Path%中竟然有有一个名为FileList.txt的文件夹,程序退出。>>%today% pause exit ))echo 程序开始下载文件,请耐心等待…………echo 程序开始下载文件,请耐心等待…………>>%today%if "%Remote_Directory%" NEQ "" ( for %%i in (%Remote_Directory%) do ( echo 正在创建目录%Local_Path%\%%i………… echo 创建目录%Local_Path%\%%i…………>>%today% md %Local_Path%\%%i echo 正在下载%Remote_Path%\%%i文件夹备份,请稍候………… echo 正在下载%Remote_Path%\%%i文件夹备份,请稍候…………>>%today% ping -n 3 127.1>nul for /f "delims=. tokens=1,2" %%j in (%Log_Path%%%i.txt) do ( if not exist "%Local_Path%\%%i\%%j.%%k\" ( if not exist "%Local_Path%\%%i\%%j.%%k" ( echo 正在创建下载文件%%j.%%k的脚本,请稍候………… echo 正在创建下载文件%%j.%%k的脚本,请稍候…………>>%today% echo %Remote_User%>%Log_Path%GetFiles.txt echo %Remote_Pwd%>>%Log_Path%GetFiles.txt echo type Binary>>%Log_Path%GetFiles.txt if "%Remote_Path%" NEQ "" ( if "%Remote_Path%" NEQ ".." ( echo cd %Remote_Path%>>%Log_Path%GetFiles.txt ) ) echo cd %%i>>%Log_Path%GetFiles.txt echo lcd %Local_Path%\%%i>>%Log_Path%GetFiles.txt echo mget "%%j.%%k">>%Log_Path%GetFiles.txt echo close>>%Log_Path%GetFiles.txt echo quit>>%Log_Path%GetFiles.txt ftp -i -s:%Log_Path%GetFiles.txt %Remote_IP% echo 正在检查文件%Local_Path%\%%i\%%j.%%k,请稍候…… echo 正在检查文件%Local_Path%\%%i\%%j.%%k,请稍候……>>%today% if exist "%Local_Path%\%%i\%%j.%%k\" ( echo ----下载%Local_Path%\%%i\%%j.%%k成功! echo ----下载%Local_Path%\%%i\%%j.%%k成功!>>%today% ) else ( echo --由于未知原因,下载%Local_Path%\%%i\%%j.%%k失败! echo --由于未知原因,下载%Local_Path%\%%i\%%j.%%k失败!>>%today% ) ) else ( echo %Local_Path%\%%i\%%j.%%k已存在,正在跳过---- echo %Local_Path%\%%i\%%j.%%k已存在,正在跳过---->>%today% ) ) else ( echo 您输入的参数存放备份路径%Local_Path%\%%i中有竟然有一个名为%%j.%%k的文件夹,请手动删除后,重新运行程序。 echo 您输入的参数存放备份路径%Local_Path%\%%i中竟然有有一个名为%%j.%%k的文件夹,程序退出。>>%today% pause exit ) ) )) else ( echo 由于没有指定服务器子目录,程序将把服务器父目录下的文件备份到您指定的本地目录中………… echo 由于没有指定服务器子目录,程序将把服务器父目录下的文件备份到您指定的本地目录中…………>>%today% for /f "delims=. tokens=1,2" %%j in (%Log_Path%FileList.txt) do ( if not exist "%Local_Path%\%%j.%%k\" ( if not exist "%Local_Path%\%%j.%%k" ( echo 正在创建下载文件%%j.%%k的脚本,请稍候………… echo 正在创建下载文件%%j.%%k的脚本,请稍候…………>>%today% echo %Remote_User%>%Log_Path%GetFiles.txt echo %Remote_Pwd%>>%Log_Path%GetFiles.txt echo type Binary>>%Log_Path%GetFiles.txt if "%Remote_Path%" NEQ "" ( if "%Remote_Path%" NEQ ".." ( echo cd %Remote_Path%>>%Log_Path%GetFiles.txt ) ) echo lcd %Local_Path%>>%Log_Path%GetFiles.txt echo mget "%%j.%%k">>%Log_Path%GetFiles.txt echo close>>%Log_Path%GetFiles.txt echo quit>>%Log_Path%GetFiles.txt ftp -i -s:%Log_Path%GetFiles.txt %Remote_IP% echo 正在检查文件%Local_Path%\%%j.%%k,请稍候…… echo 正在检查文件%Local_Path%\%%j.%%k,请稍候……>>%today% if exist "%Local_Path%\%%j.%%k" ( echo ----下载%Local_Path%\%%j.%%k成功! echo ----下载%Local_Path%\%%j.%%k成功!>>%today% ) else ( echo --由于未知原因,下载%Local_Path%\%%j.%%k失败! echo --由于未知原因,下载%Local_Path%\%%j.%%k失败!>>%today% ) ) else ( echo %Local_Path%\%%j.%%k已存在,正在跳过---- echo %Local_Path%\%%j.%%k已存在,正在跳过---->>%today% ) ) else ( echo 您输入的参数存放备份路径%Local_Path%\中有竟然有一个名为%%j.%%k的文件夹,请手动删除后,重新运行程序。 echo 您输入的参数存放备份路径%Local_Path%\中竟然有有一个名为%%j.%%k的文件夹,程序退出。>>%today% pause exit ) ))echo 程序正在清除临时文件,请稍候…………set temp_str=command.txt,temp1.txt,temp2.txt,GetFiles.txtfor %%i in (%temp_str%) do ( echo 程序将删除%Log_Path%%%i文件…………>>%today% del %Log_Path%%%i if exist "%Log_Path%%%i" ( echo %Log_Path%%%i文件删除失败,程序继续运行 echo %Log_Path%%%i文件删除失败,程序继续运行>>%today% ) else ( echo %Log_Path%%%i文件删除成功 echo %Log_Path%%%i文件删除成功>>%today% ))echo 程序正在删除临时文件列表文件,请稍候…………echo 程序正在删除临时文件列表文件,请稍候…………>>%today%if "%Remote_Directory%" NEQ "" ( for %%i in (%Remote_Directory%) do ( Del %Log_Path%%%i.txt,%Log_Path%%%i_temp.txt if exist "%Log_Path%%%i.txt" ( echo %Log_Path%%%i.txt文件删除失败,程序继续运行 echo %Log_Path%%%i.txt文件删除失败,程序继续运行>>%today% ) else ( echo %Log_Path%%%i.txt文件删除成功 echo %Log_Path%%%i.txt文件删除成功 >>%today% ) )) else ( del %Log_Path%FileList.txt,%Log_Path%FileList_temp.txt if exist "%Log_Path%FileList.txt" ( echo %Log_Path%FileList.txt文件删除失败,程序继续运行 echo %Log_Path%FileList.txt文件删除失败,程序继续运行>>%today% ) else ( echo %Log_Path%FileList.txt文件删除成功 echo %Log_Path%FileList.txt文件删除成功>>%today% ))echo 恭喜您,本次备份工作已经圆满完成!详情请查看%today%日志文件!echo 恭喜您,本次备份工作已经圆满完成!>>%today%echo 数据已被备份到%Local_Path%\目录中。>>%today%echo 完成时间:%Time:~0,2%:%Time:~3,2%:%Time:~6,2%>>%today%pauseexit
"如何批处理完美实现FTP远程备份数据"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
程序
正在
目录
备份
参数
文件夹
成功
子目
子目录
输入
日志
服务器
路径
服务
运行
数据
登录
检查
密码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发中报表是什么
戴尔服务器新加硬盘不显示
网络安全基本知识答题
英国大学网络安全硕士专业
七牛服务器
樱桃服务器
读取kafka数据到数据库
网络安全哪个部门有课程设置
最终幻想国际服在哪里换服务器
启程吉他谱软件开发
南京nac网络安全准入控制报价
网络安全宣传周活动标语
王者人脸识别时服务器错误
r怎么连接数据库
数据库领域在日常生活
运城易标智软件开发有限公司
网络安全协议的问题
好好的连接到任意官方服务器失败
网络安全榆林招聘
定义表结构时不用定义数据库名
温州模具公司erp软件开发
新浪邮箱邮件服务器
光网服务器连通性异常
hp服务器ipmi
乡镇网络安全自查
公安网络安全部门职责
艺术测试软件开发商
网络安全审计和日志审计的区别
服务器托管机房电源标准
软件开发和软件测试前景