【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html
零、概述及搭建环境介绍
FTP(文件传输协议)是一种用于在客户端和服务器之间传输文件的协议。Windows 的 CMD 提供了内置的 ftp 命令工具,支持基本的 FTP 操作。
FTP属于c/s模式,既客户端/服务器模式,这里已经提前利用Linux搭架了FTP服务器端:IP地址为192.168.220.138(Linux版本为Kylin Linux Advanced Server V10 ),客户端在win11中管理员模式启动cmd执行FTP命令。
一、帮助信息
以下是通过 ftp /? 获取到官方帮助信息:- C:\Users\HelloWorld>ftp /?
-
- 将文件传送到运行 FTP 服务器服务(经常称为后台程序)的计算机以及将文件从该计算机
- 传出。可以交互使用 Ftp。
-
- 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 中止命令。
复制代码 二、选项、参数详解
在 Windows 的 cmd 环境中,FTP 命令支持多种选项,以下是其核心功能及常用选项说明。
1、连接到FTP服务器
FTP服务器是设置的匿名登录,输入用户名anonymous,密码为空(输入密码的时候直接回车即可)。
方法一:ftp host/ip 直接指定要连接的FTP服务器ip- C:\Users\HelloWorld>ftp 192.168.220.138
- 连接到 192.168.220.138。
- 220 (vsFTPd 3.0.3)
- 200 Always in UTF8 mode.
- 用户(192.168.220.138:(none)): anonymous
- 331 Please specify the password.
- 密码:
-
- 230 Login successful.
复制代码 方法二:先FTP,在FTP中再连接到具体IP- C:\Users\HelloWorld>ftp
- ftp> open 192.168.220.138 21
- 连接到 192.168.220.138。
- 220 (vsFTPd 3.0.3)
- 200 Always in UTF8 mode.
- 用户(192.168.220.138:(none)): anonymous
- 331 Please specify the password.
- 密码:
-
- 230 Login successful.
复制代码 2、查看FTP服务器目录结构,并下载文件
选择PASV模式。- ftp> quote PASV
- 227 Entering Passive Mode (192,168,220,138,117,48).
复制代码 2.1查看用dir或者ls都可以。- ftp> dir
- 200 PORT command successful. Consider using PASV.
- 150 Here comes the directory listing.
- dr-xr-xr-x 3 0 0 2048 Mar 15 2023 EFI
- -r--r--r-- 1 0 0 438 Mar 31 2023 LICENSE
- dr-xr-xr-x 2 0 0 538624 Mar 24 2023 Packages
- -r--r--r-- 1 0 0 2883 Mar 31 2023 TRANS.TBL
- dr-xr-xr-x 3 0 0 2048 Mar 15 2023 images
- dr-xr-xr-x 2 0 0 2048 Mar 15 2023 isolinux
- dr-xr-xr-x 5 0 0 2048 Mar 24 2023 kylin-sm-package
- dr-xr-xr-x 2 0 0 2048 Mar 15 2023 manual
- dr-xr-xr-x 2 0 0 4096 Mar 24 2023 repodata
- 226 Directory send OK.
- ftp: 收到 596 字节,用时 0.02秒 29.80千字节/秒。
- ftp> ls
- 200 PORT command successful. Consider using PASV.
- 150 Here comes the directory listing.
- EFI
- LICENSE
- Packages
- TRANS.TBL
- images
- isolinux
- kylin-sm-package
- manual
- repodata
- 226 Directory send OK.
- ftp: 收到 92 字节,用时 0.00秒 30.67千字节/秒。
复制代码 2.2下载文件
下载文件命令格式为:
get remote_filename [local_filename] # 下载单个文件复制代码 实操命令:- ftp> get LICENSE c:/LICENSE
- 200 PORT command successful. Consider using PASV.
- 150 Opening BINARY mode data connection for LICENSE (438 bytes).
- 226 Transfer complete.
- ftp: 收到 438 字节,用时 0.33秒 1.34千字节/秒。
复制代码 3、上传文件
上传文件命令格式为:
put local_filename [remote_filename] # 上传单个文件复制代码 实操命令:- ftp> put c:/LICENSE1 LICENSE1
复制代码 4、让FTP使用脚本,自动下载文件
-s 选项
用刚才下载的过程制作一个脚本1.txt:- user anonymous anonymous@example.com
- get LICENSE c:/LICENSE
- quit
复制代码 用ftp -s 执行这个1.txt脚本- C:\Users\HelloWorld>ftp -s:c:\1.txt 192.168.220.138
- 连接到 192.168.220.138。
- 220 (vsFTPd 3.0.3)
- 200 Always in UTF8 mode.
- 用户(192.168.220.138:(none)):
- 331 Please specify the password.
-
- 530 Login incorrect.
- 登录失败。
- ftp> quit
- 221 Goodbye.
复制代码 最后的quit自动执行了,之所以没有登录成功是FTP匿名登录的机制问题,这里没有模拟回车(空密码)的命令。
三、FTP的一些拓展知识
这里的重点可能不是FTP命令本身(有很多其他的FTP工具),而是FTP服务器端的搭建、配置,以及防火墙、SELinux的配置。
FTP服务器端的搭建、配置(这次Linux的FTP服务器是搭建在vmware workstation中,开启了虚拟网络编辑器的nat模式的映射21、30000-30003端口),以及防火墙(关闭了服务器防火墙)、SELinux的配置(关闭了SELinux)。 |