ftp

文件传输程序


语法格式

ftp [-deinpgv] [host]

命令简介

ftp是标准的FTP文件传输协议的客户端软件。用于访问FTP服务器,上传或下载文件。其中,host是FTP服务器的主机名或IP地址。

实际上,ftp是一种交互式的文件传输工具。在运行ftp命令进入交互环境之后,ftp将会输出一个“ftp>”提示符,等待用户输入命令。利用ftp的内置命令,可以上传或下载指定的文件。如果在运行ftp命令时没有指定FTP服务器,也可以在交互环境,利用open内置命令,连接远程FTP服务器。

在文件传输期间,当需要终止文件传输时,可以在终端键盘上按下中断键(Ctrl-C组合键)。在运行get、put、mget或mput等命令时,如果指定的文件名是“-”,表示读取标准输入或写到标准输出。如果命令行参数含有空格,参数前后需加引号。

如果文件名参数的首字符是竖线“|”,随后的参数将被解释为一个Shell命令。ftp将会利用popen(3),以竖线“|”后面的命令行字符串为参数,创建一个Shell进程,从当前的标准输出读取数据,把输出数据写到当前的标准输入。如果竖线后面的命令行含有空格,整个命令行前后必须加引号。

命令选项

-d  启用调试模式。

-e  禁止命令行编辑与命令历史支持。

-g  禁止文件名扩展,即禁止展开文件名中的通配符。

-i  关闭传输多个文件期间的交互提示方式。

-m  在被动模式中,ftp通常把数据信道和控制信道绑定到同一网络接口。当客户端配有多个网络接口时,这一处理方式是非常有用的。利用“-p”选项,可以禁止这一处理方式。

-n  禁止ftp在初始连接时尝试“自动注册”。如果启用了“自动注册”功能,ftp将会检测用户主目录($HOME)中的.netrc文件,检测其中是否存在远程系统的主机名(包括用户名与密码)记录,如果不存在,ftp会提示用户输入远程系统的用户名(默认值是本地系统当前用户的名字),以及必要的密码等。

-p  使用被动模式传输数据,允许在防火墙环境中使用ftp命令。目前,这是ftp等客户端软件默认的做法,无须特别指定。

-v  强制ftp显示来自远程FTP服务器的所有响应信息,以及显示数据传输的统计信息。

内部命令

! [cmd [args]]  调用本地系统的交互Shell,执行指定的命令。如果未提供命令,则直接进入本地系统的交互Shell运行环境。

append local-file [remote-file]  把本地文件附加到远程系统中的文件后面。如果未指定远程文件,则采用本地文件名作为远程文件名。

ascii  设置文件传输类型,支持ASCII文本文件传输。这是默认的传输方式。

bell  开关警示音。在每个文件传输完成之后,输出一次警示音。

binary(image)  设置文件传输类型,支持二进制文件传输。

bye  终止与远程FTP服务器的会话,并退出ftp命令。注意,一个文件结束符也会终止ftp会话,结束ftp的运行。

case  开关远程系统在执行mget期间的文件名大小写字母映射机制。当case 为on(默认值为off)时,如果远程系统的文件名中存在大写字母,在写入本地目录时均映射为相应的小写字母。

cd remote-dir  改换远程系统上的当前工作目录到指定的目录。

cdup  把远程系统的工作目录改换为当前目录的父目录。

chmod mode file  修改远程文件的模式字段(访问权限)。

close  终止与远程FTP服务器的会话,返回到ftp命令环境。

cr  开关接收ASCII类型文件期间的回车删除机制。在ASCII类型的文件传输期间,一个数据行(或记录)是由回车与换行符序列标识的。当打开cr开关(默认)时,在收到完整的数据行之后,ftp会删除回车字符,以符合使用单个换行符作为数据行终止符的惯例。在ASCII类型的文件传输期间,仅当cr处于off状态时,才使用换行符作为数据行的分隔符。

delete remote-file  删除远程系统中的指定文件。

debug [level]  开关调试模式。选用的参数level用于设置调试级别。当启用调试模式时,ftp将会输出发送给远程FTP服务器的每一个命令,同时插入一个“-->”字符串前缀。

dir [remote-dir] [local-file]  列出远程主机指定目录中的文件与目录,把输出结果保存在指定的本地文件中。如果未指定远程目录,默认的目录为远程主机的当前工作目录。如果未指定本地文件,或指定的本地文件为“-”,直接在终端上显示输出结果。如果启用了交互提示模式,ftp会提示用户确认最后一个文件参数local-file是否用于接受dir命令的输出。

disconnect  相当于close命令。

get remote-file [local-file]  下载远程文件,储存在本地系统。如果未指定本地文件名,采用远程文件名命名本地文件。如果指定的远程文件名含有通配符,只有文件名展开后的第一个文件名被采用。

glob  对于mdelete、mget和mput命令,启用或禁用文件名展开机制。如果禁用文件名展开机制,文件名参数不管是否包括通配符,均按其文字原样采用。

hash  开关以“#”表示的每个数据块传输进度的显示(每个数据块为1024字节)。

help [cmd]  显示指定内部命令的说明信息。如果未指定任何命令,ftp将列出所有可用的内部子命令。

idle [seconds]  设置远程FTP服务器的空闲时间时钟。如果省略了时间参数seconds,显示当前空闲时间的时钟设置。

lcd [dir]  改变本地系统中的当前工作目录。如果未指定目录,则进入用户的主目录。

ls [-a] [remote-dir] [local-file]  以长列表的形式,列出FTP服务器指定目录中的文件或子目录,给出文件的类型与访问权限、链接计数、文件属主、用户组、文件的字节数及最近修改时间等属性,其效果类似于Linux系统中的“ls -l”命令。其中,“-a”选项意味着列出所有文件,包括以句点“.”为首字符的隐藏文件。如果未指定远程目录,默认的目录为当前工作目录。如果未指定本地文件,或者本地文件名为“-”,表示输出内容直接送到终端显示。如果启用了交互提示模式,ftp将会提示用户确认最后一个文件参数local-file是否用于接收ls命令的输出。

mdelete [remote-files]  删除远程系统中的多个文件。

mdir remote-files local-file  类似于dir命令,区别是mdir能够同时指定多个远程目录或文件。如果启用了交互提示模式,ftp将会提示用户确认最后一个文件参数local-file是否用于接收mdir命令的输出。

mget remote-files  一次下载多个文件。按文件名生成机制展开含有通配符的远程文件名,对每个文件执行一次get操作。下载的文件存储在本地工作目录或之前由“lcd dir”命令指定的目录中。除非启用了case和runique等开关,且本地系统存在同名的文件,下载后的文件通常与远程文件同名。如果需要,也可以首先使用“! mkdir dir”命令在本地系统中创建新的目录。

mkdir remote-dir  在远程系统上创建指定的目录。

mls remote-files local-file  类似于nlist命令,其区别是mls命令能够同时指定多个远程目录或文件,且必须指定本地文件。如果启用了交互提示模式,ftp将会提示用户确认最后一个文件参数local-file是否用于接收mls命令的输出。

mode [modename]  设置FTP的文件传输模式,默认的文件传输模式是stream。

modtime file  显示远程系统中指定文件的最近修改时间。

mput local-files  一次上传多个文件。按文件名生成机制展开含有通配符的本地文件名,对每个文件执行一次put操作。除非启用了sunique等开关,且远程系统存在同名的文件,上传的文件通常与本地文件同名。

newer file-name [local-file]  仅当远程文件的最近修改时间比本地系统中的文件更新时,才从FTP服务器中下载指定的文件。如果本地系统不存在同名的文件,则认为是远程文件更新。

nlist [remote-dir] [local-file]  列出远程系统指定目录中的文件。如果未指定远程目录,列出远程系统当前目录中的文件。如果启用了交互提示模式,ftp将提示用户确认最后一个文件参数local-file是否用于接收nlist命令的输出。如果未指定本地文件,或指定的本地文件为“-”,则在终端上显示nlist命令的输出。

open host [port]  与指定的FTP服务器建立连接。也可以指定选用的端口号,采用非标准的端口连接FTP服务器。如果处于默认的“自动注册”方式,ftp也会尝试自动注册到远程FTP服务器。

prompt  开关交互提示模式。在传输多个文件期间,通常会进入交互提示模式,从而允许用户有选择性地接收或存储文件。如果禁用(默认的方式为启用)交互提示模式,mget或mput 将会连续地依次传输指定的所有文件,mdelete会自动删除指定的所有文件,无须用户干预。

put local-file [remote-file]  把本地文件上传到FTP服务器。如果未指定远程文件名,则使用本地文件名命名远程文件。如果指定的本地文件名含有通配符,只有文件名展开后的第一个文件名被用。

pwd  显示FTP服务器的当前工作目录。

quit  等同于bye命令。

recv remote-file [local-file]  等同于get命令。

reget remote-file [local-file]  类似于get命令,其区别是:如果local-file存在且小于remote-file,则假定local-fileremote-file部分传输的副本,因而可从断点位置开始继续传输文件。当在一个不稳定的网络上传输较大的文件时,这个命令是非常有用的。

remotehelp [cmd]  显示远程FTP服务器的帮助信息。如果指定了具体的命令,则显示相应命令的说明。

remotestatus [file]  显示远程系统中指定文件的状态信息。如果省略了文件参数,显示远程FTP服务器的状态信息。

rename [from] [to]  把远程系统中的文件from重新命名为to

reset  清除响应队列。这个命令的主要用途是与远程FTP服务器重新同步命令/响应序列。当会话期间出现逻辑混乱时,重新同步是非常必要的。

restart marker  在get或put命令之后运行此命令,将会在指定的标记位置开始重新传输文件。在UNIX或Linux系统中,标记marker通常是文件的字节偏移值。

rmdir dir  删除远程系统中的指定目录。

runique  开关本地系统中文件名唯一性的维护机制。如果利用get或mget命令下载的远程文件与本地系统中的现有文件同名,下载的文件将会在文件名后面附加一个“.1”或“.2”后缀,依次类推。同时显示生成的唯一文件名。如果继续重复,直至超越“.99”,ftp将会输出一个错误信息。终止文件的继续传输。默认值是不检测文件名的唯一性。

send local-file [remote-file]  等同于put命令。

size remote-file  返回远程系统中指定文件的大小。

status  显示ftp会话的当前状态。

sunique  开关远程系统中文件名唯一性的维护机制。远程FTP服务器必须支持STOU命令及相关协议,才能确保文件名唯一性的成功实现。上传完成之后FTP服务器将会报告生成的唯一文件名。默认值是不检测文件名的唯一性。

system  显示远程系统操作系统的类型。

trace  开关分组数据的跟踪机制。

type [type-name]  设置文件传输的类型。如果未指定文件传输类型,ftp将显示当前的类型。默认的文件传输类型是ASCII字符。

umask [newmask]  设置远程FTP服务器默认的文件掩码(umask)。如果省略了newmask参数,则显示FTP服务器当前的掩码设置。

user user-name [password]  向远程FTP服务器提供用户名与密码等,标识自己的身份。如果未指定密码,且FTP服务器需要提供时,ftp将提示用户输入密码。在输入密码期间禁止本地回显。除非运行ftp时禁用了“自动注册”功能。在初始连接FTP服务器时,这一过程会自动执行。

verbose  开关详细显示模式。在详细显示模式中,ftp将会显示FTP服务器的所有响应信息。此外,在文件传输完成之后,也会显示有关文件传输效率的统计数据。通常,ftp总是处于详细显示模式。

? [cmd]  等同于help命令。

应用实例

1. 当需要采用通配符指定文件名,一次传输多个文件时,为避免交互提示与确认,可以指定“-i”选项。

$ ftp –i iscas
Connected to iscas (192.168.90.100).
220 (vsFTPd 2.2.2)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

2. 此时,可以无须干预地一次下载多个文件。

ftp> mget u*
local: ucontext.h remote: ucontext.h
227 Entering Passive Mode (192,168,90,100,197,106).
150 Opening BINARY mode data connection for ucontext.h (2015 bytes).
226 Transfer complete.
2015 bytes received in 0.0281 secs (71.80 Kbytes/sec)

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z