ftp [-adfginpstvx] [-m GSS Mech] [-T timeout] [hostname [port]]
ftp 命令是 Internet 标准文件传输协议 (File Transfer Protocol, FTP) 的用户接口。ftp 向/从远程网络站点传输文件。
可在命令行中指定 ftp 与之通信的主机及(可选)端口。如果指定,ftp 将立即尝试建立与该主机上的 FTP 服务器的连接。否则,ftp 会进入其命令解释程序并等待用户的指令。ftp 等待用户的命令时,将显示 ftp> 提示符。
以下选项可在命令行中指定,也可指定给命令解释程序:
仅使用 GSSAPI 验证。如果验证失败,此选项将关闭连接。
启用调试。
将本地安全凭证转发到远程服务器。
禁用文件名 "globbing"(通配)。
在传输多个文件时,关闭交互式提示。
指定要使用的 GSS-API 机制。缺省情况下,使用 kerberos_v5 机制。受支持的备选机制在 /etc/gss/mech 中定义(请参见mech(4))。
初始连接时不尝试使用 “auto-login”(自动登录)功能。如果未禁用自动登录,ftp 将在用户起始目录的 .netrc 文件中检查是否存在描述远程计算机上帐户的条目。如果不存在此条目,ftp 将提示用户输入远程计算机上帐户的登录名(缺省值为本地计算机上的登录名),如有必要,还会提示用户输入用于登录的口令和帐户。
启用被动模式数据传输。从连接过滤防火墙后面连接到远程主机时,此命令会很有用。
跳过缺省情况下会在连接后发送给所有远程服务器的 SYST 命令。系统命令可自动启用二进制模式而不是协议缺省的 ASCII 模式。
因为一些较旧的服务器无法处理 ftp 命令,所以提供此指令以便与这些服务器进行交互操作。
启用数据包跟踪功能(尚未实现)。
启用全局连接计时器,以秒为单位进行指定(十进制)。对于控制连接,存在一个计时器,在向服务器发送任何内容时都会将其重置,在客户机提示用户输入时会将其禁用。另一个独立计时器用于监视传入或传出的数据连接。
显示来自远程服务器的所有响应以及有关数据传输统计信息的报告。如果 ftp 以交互方式运行(使用来自用户终端的输入),则缺省情况下会启用此选项。
尝试使用 GSSAPI 进行验证和加密。数据和命令通道保护将设置为 “private”。
以下命令可指定给命令解释程序:
[ command ] 在本地计算机上将 command 作为 shell 命令运行。如果未提供 command,将调用一个交互式 shell。
执行使用 macdef 命令定义的宏 macro-name。将未通配的参数传递给宏。
在成功完成登录后,向远程系统提供访问资源所需的补充口令。如果未包含参数,将提示用户以非回显输入模式输入帐户口令。
将本地文件附加到远程计算机上的文件中。如果未指定 remote-file,将使用本地文件名,会根据 ntrans 或 nmap 设置而更改。文件传输使用 “representation type”(表示类型)、“file structure”(文件结构)和 “transfer mode”(传输模式)的当前设置。
将 “representation type”(表示类型)设置为 “network ASCII”(网络 ASCII)。这是缺省类型。
每个文件传输命令完成后响一声铃声。
将 "representation type"(表示类型)设置为 "image"(图像)。
终止与远程服务器之间的 FTP 会话并退出 ftp。EOF 也会终止会话并退出。
在运行 mget 命令期间,切换远程计算机文件名大小写映射。启用 case(缺省为禁用)时,所有字母均大写的远程计算机文件名写入本地目录时均将字母映射为小写字母。
将远程计算机上的工作目录更改为 remote-directory。
将远程计算机工作目录更改为当前远程计算机工作目录的父目录。
将数据传输的保护级别设置为 “clear”。如果无成功执行的 ADAT 命令,则此级别为缺省保护级别。
终止与远程服务器之间的 FTP 会话并返回到命令解释程序。所有已定义的宏均将被删除。
检索 “network ASCII”(网络 ASCII)类型的文件时,切换回车剥离设置。在传输 “network ASCII”(网络 ASCII)类型的文件时,记录通过回车/换行序列来指示。启用 cr(缺省值)时,将从此序列中剥离回车符,以符合 UNIX 系统单一换行记录分隔符的要求。非 UNIX 系统远程主机上的记录可以包含单一换行符;在进行 “network ASCII”(网络 ASCII)类型的传输时,仅当禁用 cr 时,才可以将这些 换行符与记录分隔符区分开来。
删除远程计算机上的 remote-file 文件。
切换调试模式。启用调试时,ftp 会输出发送给远程计算机的每个命令,并在前面添加字符串 –>。
输出包含 remote-directory 目录中目录内容的列表,并将输出放置在 local-file 中(可选)。如果未指定目录,将使用远程计算机上的当前工作目录。如果未指定本地文件,或 local-file 为 −,会将输出发送到终端。
与 close 相同。
将 “representation type”(表示类型)的回车控制格式子类型设置为 format-name。唯一有效的 format-name 是 non-print,对应于缺省的 “non-print”(非输出)子类型。
检索 remote-file 并将其存储在本地计算机上。如果未指定本地文件名,则将以远程计算机上的文件名为其命名,会根据当前的 case、ntrans 和 nmap 设置而更改。传输文件时,使用 “representation type”(表示类型)、“file structure”(文件结构)和 “transfer mode”(输出模式)的当前设置。
对于 mdelete、mget 和 mput,切换文件名扩展或 “globbing”(通配)。如果关闭通配功能,将按字面取文件名。
mput 的通配行为与在 sh(1) 中类似。对于 mdelete 和 mget,远程计算机上的每个远程文件名将单独进行扩展,且不会合并列表。
目录名的扩展与普通文件名的扩展可能完全不同:确切的结果取决于远程操作系统和 FTP 服务器,并且可以使用 mls remote-files − 命令预览此结果。
mget 和 mput 并不用于传输整个文件目录子树。要执行此操作,可通过传输子树的 tar(1) 归档(“representation type”(表示类型)使用 “image”(图像),通过 binary 命令来设置)来实现。
切换所传输的每个数据块的井号 (#) 输出。数据块的大小为 8192 个字节。
输出有关 command 含义的提示性消息。如果未提供参数,ftp 将输出已知命令的列表。
更改本地计算机上的工作目录。如果未指定 directory,将使用该用户的起始目录。
缺省情况下,输出远程计算机上目录内容的简要列表。可更改此缺省行为,使 ls 与 dir 命令相同。通过将 /etc/default/ftp 中或环境中的 FTP_LS_SENDS_NLST 设置为 'no',可实现此更改。有关详细信息,请参见 ftp(4)。
–a 选项会列出所有条目,包括以句点 (.) 开头的条目(通常不会列出)。–l 选项将以长格式列出文件,给出每个文件的模式、链接数、所有者、组、大小(以字节为单位)和上次修改时间。如果文件是特殊文件,则大小字段将改为包含主设备号和从设备号,而不是大小。如果文件是符号链接,则输出的文件名后面会跟有 “→” 和所引用文件的路径名。
如果未指定 remote-directory,将使用当前工作目录。
如果未指定本地文件或者将 local-file 指定为 −,则会将输出发送到终端。
定义一个宏。后续行将存储为宏 macro-name。空行(文件中的连续换行符或来自终端的回车符)将终止宏输入模式。宏的数量不能超过 16 个,且定义的所有宏中的总字符数不能超过 4096。在执行 close 命令之前,将一直保留宏的定义。
宏处理程序将 $ 和 \ 解释为特殊字符。后跟一个(或多个)数字的 $ 会替换为宏调用命令行中的相应参数。后跟 i 符号的 $ 表示执行宏的宏处理程序要进行循环操作。在首次传递时,$i 会被替换为宏调用命令行中的第一个参数;在第二次传递时,它会被替换为第二个参数,以此类推。\ 后跟任意字符会替换为该字符。使用 \ 可防止对 $ 进行特殊处理。
删除远程计算机上的 remote-files。
与 dir 类似,但可指定多个远程文件。如果启用交互式提示,ftp 会提示用户确认最后一个参数确实是用于接收 mdir 输出的目标本地文件。
扩展远程计算机上的 remote-files,并针对由此生成的每个文件名各执行一次 get 操作。有关文件名扩展的详细信息,请参见 glob。生成的文件名将根据 case、ntrans 和 nmap 设置进行处理。文件将传输到本地工作目录(可使用 lcd directory 更改此目录)。可使用 ! mkdir directory 创建新的本地目录。
在远程计算机上创建目录。
与 ls(1) 类似,但可指定多个远程文件。如果启用交互式提示,ftp 会提示用户确认最后一个参数确实是用于接收 mls 输出的目标本地文件。
将 “transfer mode”(传输模式)设置为 mode-name。唯一有效的 mode-name 是 stream,对应于缺省的 “stream”(流)模式。此实现仅支持 stream,因此要求指定此模式。
扩展本地文件列表中作为参数给出的通配符,并针对所生成列表中的每个文件各执行一次 put 操作。有关文件名扩展的详细信息,请参见 glob。生成的文件名将根据 ntrans 和 nmap 设置进行处理。
输出远程计算机上目录内容的简要列表,仅列出可通过 get 命令检索到的文件(除非使用了 –a 或 –l 选项)。如果未指定 remote-directory,将使用当前工作目录。
–a 选项会列出所有条目,包括以句点 (.) 开头的条目(通常不会列出)。–l 选项以长格式列出文件,具体方式与在 ls 命令中使用时相同。
设置或取消设置文件名映射机制。如果未指定参数,将取消设置文件名映射机制。如果指定了参数,则在发出 mput 命令和 put 命令且未指定远程目标文件名时,映射远程文件名。如果指定了参数,则在发出 mget 命令和 get 命令且未指定本地目标文件名时,映射本地文件名。
在连接到使用不同文件命名约定或做法的非 UNIX 系统远程主机时,此命令会很有用。映射遵循 inpattern 和 outpattern 所设置的模式。inpattern 是用于传入文件名的模板(已根据 ntrans 和 case 设置进行了处理)。可通过在 inpattern 中包含序列 $1、$2、. . . 、$9 来实现可变模板。使用 \ 可防止对该 $ 字符进行这种特殊处理。其他所有字符将按字面进行处理并用于确定 nmap inpattern 可变值。
例如,如果给出了 inpattern $1.$2 和远程文件名 mydata.data,则 $1 的值将为 mydata,$2 的值将为 data。
outpattern 用于确定生成的映射文件名。序列 $1、$2、. . . 、$9 会替换为从 inpattern 模板中生成的任何值。序列 $0 会替换为原始文件名。此外,如果 seq1 不是空字符串,序列 [ seq1 , seq2 ] 将替换为 seq1;否则,它会替换为 seq2。
例如,命令 nmap $1.$2.$3 [$1,$2].[$2,file] 将生成输入文件名 myfile.data 和 myfile.data.old 的输出文件名 myfile.data,输入文件名 myfile 的输出文件名为 myfile.file,输入文件名 .myfile 的输出文件名为 myfile.myfile。outpattern 中可包含空格字符,例如 nmap $1 | sed "s/ *$//" > $1。使用 \ 字符可防止对 $、[、] 和 , 等字符进行特殊处理。
设置或取消设置文件名字符转换机制。如果未指定参数,将取消设置文件名字符转换机制。如果指定了参数,则在发出 mput 命令和 put 命令且未指定远程目标文件名时,转换远程文件名中的字符,在发出 mget 命令和 get 命令且未指定本地目标文件名时,转换本地文件名中的字符。
在连接到使用不同文件命名约定或做法的非 UNIX 系统远程主机时,此命令会很有用。文件名中与 inchars 中某个字符匹配的字符会替换为 outchars 中的相应字符。如果 inchars 中的字符位置超出了 outchars 的长度,将从文件名中删除该字符。
在 ftp 下使用 ntrans 命令时,只能转换 16 个字符。如果需要转换所有字母,请使用 case(如上所述)。
建立与指定 host FTP 服务器的连接。可以提供端口号(可选),如果提供,ftp 将尝试通过该端口连接 FTP 服务器。如果启用了 auto-login 选项(缺省设置),ftp 还将尝试自动将用户登录到 FTP 服务器。
切换被动模式。启用被动模式后,ftp 客户机会发送 PASV 命令,请求 FTP 服务器打开用于数据连接的端口并返回该端口的地址。远程服务器会侦听该端口且客户机会连接到该端口。禁用被动模式后,ftp 客户机会向远程服务器发送 PORT 命令,为其指定要恢复连接的地址。如果与 ftp 客户机的连接是受控制连接(例如,位于防火墙后面),被动模式会很有用。当连接到支持 IPv6 的 FTP 服务器时,可以使用 EPSV 来替换 PASV,使用 EPRT 来替换 PORT。
将数据传输的保护级别设置为 “private”。通过加密来保护数据传输的保密性和完整性。如果无成功执行的 ADAT 命令,则唯一可能的级别是 “clear”(清除)。
切换交互式提示。交互式提示在传输多个文件时出现,允许用户有选择性地检索或存储文件。缺省情况下,该提示处于启用状态。如果禁用该提示,任一 mget 或 mput 均将传输所有文件,且任一 mdelete 将删除所有文件。
将数据传输的保护级别设置为 protection-level。有效保护级别包括:“clear”(不受保护的数据传输)、“safe”(通过加密校验和来保护数据传输的完整性)和 “private”(通过加密来保护数据传输的保密性和完整性)。如果无成功执行的 ADAT 命令,则唯一可能的级别是 “clear”(清除)。如果未指定级别,则输出当前级别。缺省的保护级别为 “clear”。
对辅助的控制连接执行 FTP 命令。通过此命令可同时连接两台远程 FTP 服务器,以便在这两台服务器之间传输文件。第一个 proxy 命令应为 open,用于建立辅助控制连接。输入命令 proxy ? 可查看可对辅助连接执行的其他 FTP 命令。
在以下命令的前面添加 proxy 后其行为会有所不同:在自动登录过程中,open 将不定义新宏;close 不会删除现有宏定义;get 和 mget 会将主控制连接中主机上的文件传输到辅助控制连接的主机上;put、mputd 和 append 会将辅助控制连接主机上的文件传输到主控制连接的主机上。
第三方文件传输取决于辅助控制连接中的服务器对 PASV 命令的支持情况。
在远程计算机上存储本地文件。如果未指定 remote-file,则在命名远程文件时将使用本地文件名并会根据任一 ntrans 或 nmap 设置进行处理。文件传输使用 “representation type”(表示类型)、“file structure”(文件结构)和 “transfer mode”(传输模式)的当前设置。
输出远程计算机上的当前工作目录名称。
与 bye 相同。
将指定的参数逐个发送到远程 FTP 服务器。预期返回单个 FTP 回复代码。(使用 remotehelp 命令可显示有效参数列表。)
quote 只应由熟悉 FTP 协议的有经验用户使用。
与 get 相同。
reget 命令类似于 get,但不同的是:如果 local-file 存在且小于 remote-file,则假定 local-file 是部分传输的 remote-file 副本,并从疑似故障点继续传输。通过比较容易断开连接的网络传输大型文件时,此命令会很有用。
请求远程 FTP 服务器的帮助。如果指定了 command-name,也会将其提供给服务器。
将远程计算机上的文件 from 重命名为 to。
清除回复队列。此命令会与远程 FTP 服务器重新同步命令/回复序列。在远程服务器出现 FTP 协议违规行为后,必须进行重新同步。
重新启动指示的 marker 之后紧跟的 get 或 put。在 UNIX 系统上,marker 通常为文件的字节偏移量。如果后跟 mget,restart 将应用于所执行的第一个 get。将 marker 指定为 0 可清除重新启动标记。如果未指定参数,将显示当前的重新启动状态。
删除远程计算机上的目录。
指定是否使用唯一文件名在本地系统上存储文件。如果已存在与 get 或 mget 命令的目标本地文件名同名的文件,则在文件名后面附加 .1。如果生成的名称与其他现有文件匹配,则在原始文件名后面附加 .2。如果此过程一直持续到 .99,则会输出一条错误消息,并且不执行传输。将报告所生成的唯一文件名。runique 不影响通过 shell 命令生成的本地文件。缺省值为 off。
将数据传输的保护级别设置为 “safe”。通过加密校验和保护数据传输的完整性。如果无成功执行的 ADAT 命令,则唯一可能的级别是 “clear”(清除)。
与 put 相同。
切换 PORT 命令的使用。缺省情况下,ftp 在为每个数据传输建立连接时将尝试使用 PORT 命令。使用 PORT 命令可防止在执行多个文件传输操作时出现延迟。如果 PORT 命令失败,ftp 将使用缺省数据端口。禁用 PORT 命令后,将不再尝试对每个数据传输使用 PORT 命令。当连接到忽略了 PORT 命令而不正确地指示已接受该命令的某个 FTP 实现时,此选项会很有用。
将指定的参数作为 SITE 命令的参数逐个发送到远程 FTP 服务器。
显示 ftp 的当前状态。
将文件结构设置为 struct-name。唯一有效的 struct-name 是 file,对应于缺省的 “file”(文件)结构。此实现仅支持 file,因此要求指定此结构。
指定是否使用唯一文件名在远程计算机上存储文件。要成功完成,远程 FTP 服务器必须支持 STOU 命令。远程服务器将报告唯一名称。缺省值为 off。
设置用于数据连接的 TCP 窗口大小。如果指定大小为 0,将停止有关数据连接的 TCP 窗口大小的显式设置。如果未指定参数,将显示当前设置。
将 “representation type”(表示类型)设置为需要与 TENEX 计算机通信的类型。
切换数据包跟踪功能(尚未实现)。
将 “representation type”(表示类型)设置为 type-name。有效的 type-name 包括:适用于 “network ASCII”(网络 ASCII)的 ascii、适用于 “image”(图像)的 binary 或 image,以及适用于字节大小为 8 的 “local byte size”(本地字节大小)的 tenex(用于与 TENEX 计算机通信)。如果未指定类型,则输出当前类型。缺省类型为 “network ASCII”(网络 ASCII)。
向远程 FTP 服务器证明自己的身份。如果未指定口令且服务器需要口令,则 ftp 会提示用户输入口令(禁用本地回显功能后)。如果未指定帐户字段且 FTP 服务器需要帐户,则会提示用户输入帐户。如果指定了帐户字段,而远程服务器不要求使用帐户进行登录,则帐户命令会在完成登录序列之后转发到远程服务器。除非在调用 ftp 时禁用了 “auto-login”(自动登录),否则,在与 FTP 服务器初始连接时会自动完成此过程。
切换详细模式。在详细模式中,会向用户显示来自 FTP 服务器的所有响应。此外,如果启用了详细模式,则在文件传输完成时,会报告与传输效率相关的统计信息。缺省情况下,如果 ftp 的命令来自终端,将启用详细模式,否则将禁用该模式。
与 help 相同。
包含空格的命令参数可使用引号 (") 引起来。
如果未指定未表明为可选的任何命令参数,则 ftp 会提示用户输入该参数。
要中止文件传输,请使用终端中断键。发送传输将立即停止。接收传输可通过以下方法来停止:向远程服务器发送 FTP 协议 ABOR 命令,并丢弃之后所接收的所有数据。此操作的实现速度取决于远程服务器对 ABOR 处理的支持情况。如果远程服务器不支持 ABOR 命令,则在远程服务器发送完所请求的文件之前,不会显示 ftp> 提示符。
在 ftp 已完成所有本地处理并等待远程服务器的回复时,将忽略终端中断键序列。在此模式下,可能会因为上述 ABOR 处理或远程服务器所产生的非预期行为(包括 ftp 协议违规)而导致较长的延迟。如果延迟是由非预期的远程服务器行为引起,则必须手动中止本地 ftp 程序。
指定为 ftp 命令参数的本地文件将根据以下规则进行处理。
如果将文件名指定为 −,将使用标准输入(进行读取)或标准输出(进行写入)。
如果文件名的第一个字符为 |,则该参数的其余字符将被解释为 shell 命令。然后 ftp 将使用所提供的参数通过 popen(3C) 派生一个 shell,并在该 shell 的标准输出/标准输入中读取/写入内容。如果 shell 命令包含空格字符,则必须用引号引住该参数;例如 | ls – lt。此机制特别有用的一个示例为:"dir | more"。
在上述检查全部失败的情况下,如果启用了通配功能,将根据 sh(1) 中使用的规则扩展本地文件名;请参见 glob 命令。如果 ftp 命令期望一个单一本地文件(例如 put),则仅使用通配操作所生成的第一个文件名。
对于未指定本地文件名的 mget 命令和 get 命令,本地文件名为远程文件名,可能会根据 case、ntrans 或 nmap 设置而更改。如果启用了 runique,则生成的文件名可能会不同。
对于未指定远程文件名的 mput 命令和 put 命令,远程文件名为本地文件名,可能会根据 ntrans 或 nmap 设置而更改。如果启用了 sunique,则远程服务器可能会更改生成的文件名。
FTP 规范指定了可影响文件传输的许多参数。
“representation type”(表示类型)可以为以下值之一:“network ASCII”(网络 ASCII)、“EBCDIC”、“image”(图像)或具有指定字节大小的 “local byte size”(本地字节大小)(主要适用于 PDP-10 和 PDP-20)。“network ASCII”(网络 ASCII)和 “EBCDIC” 类型具有进一步的子类型,用于指定是否要传递垂直格式控制(换行符、换页符等)(“non-print”(非输出)),以 TELNET 格式 (“TELNET format controls”) 格式提供,还是以 ASA (FORTRAN) (“carriage control (ASA)”) 格式提供。ftp 支持 “network ASCII”(网络 ASCII)(子类型只有 “non-print”(非输出))和 “image”(图像)类型,以及用于与 TENEX 计算机通信的字节大小为 8 的 “local byte size”(本地字节大小)。
“file structure”(文件结构)可以为 file(非记录结构)、record 或 page 中的一种。ftp 仅支持缺省值 file。
“transfer mode”(传输模式)可以为 stream、block 或 compressed 中的一种。ftp 仅支持缺省值 stream。
有关 ftp 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)。
ftp 命令支持 IPv6。请参见 ip6(7P)。
~/.netrc
有关下列属性的说明,请参见 attributes(5):
|
ls(1)、rcp(1)、sh(1)、tar(1)、popen(3C)、ftp(4)、ftpusers(4)、mech(4)、netrc(4)、attributes(5)、largefile(5)、ip6(7P)
由 Allman, M.、Ostermann, S. 和 Metz, C. 编著的《FTP Extensions for IPv6 and NATs》(RFC 2428)。Internet Society 出版。1998 年 9 月。
由 Lunt, S. J. 编著的《FTP Security Extensions》(RFC 2228)。Internet 草案。1993 年 11 月。
由 Postel、Jon 和 Joyce Reynolds 编著的《File Transfer Protocol (FTP )》(RFC 959)。Network Information Center(网络信息中心)出版。1985 年 10 月。
由 Piscitello, D. 编著的《FTP Operation Over Big Address Records (FOOBAR)》(RFC 1639)。Network Working Group 出版。1994 年 6 月。
远程 FTP 服务器显式拒绝(因为帐户列在 /etc/ftpusers 中)可导致登录失败。请参见 ftpusers(4)。
许多命令的正确执行取决于远程服务器的正确行为。
4.2 BSD 代码在处理 “representation type”(表示类型)为 “network ASCII”(网络 ASCII)的传输时的回车处理错误已更正。此更正可能导致使用 “network ASCII”(网络 ASCII)“representation type”(表示类型)向/从 4.2 BSD 服务器传输二进制文件时无法正确传输。可通过使用 “image”(图像)类型来避免此问题。