批处理之FTP自动同步文件

1. FTP.exe工具

ftp.exe是Windows系统提供的一个FTP客户端命令行工具。通过ftp.exe可以完成登录,显示远程文件、下载、上传、重命名、删除远程文件等操作。

1.1. 命令参数

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]

  • -v 禁止显示远程服务器响应。
  • -n 禁止在初始连接时自动登录。
  • -i 关闭多文件传输过程中的交互式提示。
  • -d 启用调试。
  • -g 禁用文件名通配(请参阅 GLOB 命令)。
  • -s:filename 指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行。
  • -a 在绑字数据连接时使用所有本地接口。
  • -A 匿名登录。
  • -x:send sockbuf 覆盖默认的 SO_SNDBUF 大小 8192。
  • -r:recv sockbuf 覆盖默认的 SO_RCVBUF 大小 8192。
  • -b:async count 覆盖默认的异步计数 3
  • -w:windowsize 覆盖默认的传输缓冲区大小 65535。
  • host 指定主机名称或要连接到的远程主机的 IP 地址。
  • mget 和 mput 命令将 y/n/q 视为 yes/no/quit。
  • 使用 Ctrl-C 中止命令。
  • 注意:一般情况,我们主要是通过ftp.exe来调用ftp命令文件,主要使用如下方式:

FTP -s:ftpCMD.txt

1.2. FTP命令

FTP命令可以在ftp.exe命令行环境下单个运行,也可以集成文件中,通过FTP -s:ftpCMD.txt这样的方式全部运行。以下列出所有的FTP命令。

  • ! 转义到 shell
  • delete 删除远程文件
  • literal 发送任意 ftp 命令
  • prompt 在多个命令上强制交互提示
  • ? 打印本地帮助信息
  • debug 切换调试模式
  • ls 列出远程目录的内容
  • put 发送一个文件
  • send 发送一个文件,作用同put
  • mput 发送多个文件
  • status 显示当前状态
  • append 附加至文件
  • dir 列出远程目录的内容
  • mdelete 删除多个文件
  • pwd 在远程计算机上打印工作目录
  • trace 切换数据包跟踪
  • ascii 设置 ASCII 传输类型
  • disconnect 终止 ftp 会话
  • mdir 列出多个远程目录的内容
  • quit 终止 ftp 会话并退出
  • type 设置文件传输类型
  • bell 命令完成时发出声响
  • get 接收文件
  • recv 接收文件,作用同get。
  • mget 获取多个文件
  • quote 发送任意 ftp 命令
  • user 发送新用户信息
  • binary 设置二进制传输类型
  • glob 切换本地文件名的元字符扩展
  • mkdir 在远程计算机上创建目录
  • verbose 切换详细模式
  • bye 终止 ftp 会话并退出
  • hash 为每个缓冲区传输切换打印“#”
  • mls 列出多个远程目录的内容
  • remotehelp 从远程服务器获取帮助
  • cd 更改远程工作目录
  • help 打印本地帮助信息
  • rename 重命名文件
  • close 终止 ftp 会话
  • lcd 更改本地工作目录
  • open 连接到远程 FTP
  • rmdir 在远程计算机上删除目录

1.3. 重点命令介绍

在ftpCMD.txt中编写FTP命令操作集,然后通过FTP -s:ftpCMD.txt来调用。

  • 通过prompt关闭或开启确认提示,首次调用为关闭提示,再次调用则为开启提示
  • 通过lcd命令来指定本地工作目录

lcd 本地工作目录

  • 通过get/recv下载远程文件,本地文件名如果省略则和远程文件同名

get RemoteFile [LocalFile]

  • 通过mget下载多个远程文件,远程文件至少1个,多个以空格区分

mget RemoteFiles [ …]

  • 通过put/send上传本地文件,远程文件如果省略则和本地文件同名

put LocalFile [RemoteFile]

  • 通过mput上传本地文件到FTP服务器当前目录,本地文件至少1个,多个以空格区分

mput LocalFiles [ …]

  • 通过mls保存远程目录下的文件及文件夹名,远程文件如果用-代替表示所有,本地文件用-代替表示输出到屏幕

mls RemoteFiles [ …]LocalFile

  • 通过type指定传输类型,Ftp 同时支持 ASCII 和Binary两种文件传输类型。 默认的传输类型是 ASCII。在传输文本文件时应使用 ascii 命令。在 ASCII 模式中,将执行网络标准字符集间的字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。在传输可执行文件时应该使用 binary 命令。在二进制模式中,文件是按一字节为单位进行移动的。

type [TypeName]

  • quit退出FTP命令行模式进入CMD窗口

1.4. 示例

172.18.30.182是FTP服务器IP,mike是用户名,123456是密码,注意mike和123456之后不要用空格

open 172.18.30.182
mike
123456
prompt
type binary
lcd I:\ftp_local
mls - info.txt
get a.ini
mget 1.ini 2.ini
put info.txt
mput aa.ini bb.ini
quit

执行情况:
在这里插入图片描述

2. 自动同步

FTP主要完成同步的工作,而自动则需要使用Windows的定时任务命令行工具schtasks。
FTPSync.bat负责调用FTP命令文件

ftp -s:ftpCMD.txt

FTPSyncTask.bat则负责制订定时任务,如每天的8点启动

schtasks /create /tn "FTPSync" /tr “d:\FTPSync.bat" /sc daily /st 08:00:00 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章