第十二章 匿名FTP
概述
匿名FTP是一种最重要、用途最广泛的Internet服务。这种卓越的
服务可以使你从Internet的上千种计算机上拷贝文件。这些储存在计算机
上的文件包含着各种各样的信息。
你想为你的PC机获得一个程序吗? 你想要一期电子杂志吗? 你想向
Usenet讨论组频繁提问题吗?
Internet中几乎有你所想要的各种资料和计算机软件,你都可以免费
地进入并取出。
这一章讲的是怎样使用匿名FTP。也许你不知道怎样进入FTP,
我们将告诉你怎样通过电子邮件得到文件。
当你看完这一章,你就能够读第十三章的有关内容了。在第十三章,
将讲解怎样运用Archie服务器在匿名FTP主机上查询大量具体的文件。
FTP简介
“FTP”这个词是文件传送协议的缩写(File Transfer Protocol),
FTP是在Internet上传送文件的规定的基础。我们提到FTP时不只是
认为它是一套规定,FTP是一种服务,它可以在Internet上,使得文件
可以从一台Internet主机传送到另一台Internet主机上,通过这种方式,
主要靠FTP把Internet中的主机相互联系在一起。
像大多数的Internet服务一样,FTP使用客户机/服务器系统(参
见第二章),你在使用一个名叫ftp的客户机程序时, 就和远程主机上的
服务程序相连了。理论上讲,这种想法是很简单的。当你用客户机程序时,
你的命令就发送出去了,服务器响应你发送的命令。例如,你录入一个命
令,让服务器传送一个指定的文件,服务器就会响应你的命令,并传送这
个文件;你的客户机程序接收这个文件,并把它存入你的目录中。(在这
章的后面将讨论文件和目录问题)。
你也许知道,当你从远程计算机上拷贝文件到自己的计算机上时,我
们称为“下传”(downloading)文件; 当你从自己的计算机上拷贝文件
到远程计算机上时,称为你“上传”(uploading)文件。 如果你不明白
的话,就请想象有一台远程计算机悬浮在你头上的天空之中,“up”就是
远离你,“down”就是朝向你。
当我们谈论FTP时,我们使用和Telent相同的术语(参见第七章)。
你的计算机叫做本地主机,别的计算机叫做远程主机。在Internet语言中,
我们说这个ftp客户机程序允许你向远程主机发送或接收文件。
当使用ftp程序时,你录入ftp命令和你想要连接的远程主机的地址。
一旦程序开始,你就可以录入命令,来回拷贝文件。当你使用ftp时, 有
很多命令你
都可以使用。例如,你可以查询远程计算机上的目录,并且可以变换目录。
把“FTP”作为一个动词是很普遍的。例如,你可能听见某人这样
说:“你可以FTP到一个名叫rtfm.mit.edu的主机上得到常见问题清单
(the frequently asked question list)的拷贝。如果这台计算机太忙
了,你可以从别的计算机上FTP到相同的文件。”
匿名FTP简介
我们已经讲了,FTP允许你把文件从一个Internet计算机传递到另
一个计算机上。但是,这里有一个基本的约束:如果你没有被正式授权的
话,就不能进入计算机。习惯上讲,这就意味着你必须在那台计算机上登
录。换句话说,你只有在有了一个用户标识和口令之后,才能在计算机上
拷贝文件。
匿名FTP是这样一种工具:作为用户,你本来不注册就不能和远程
主机联系并“下传”文件,但是,这个管理系统提供了一个指定的的用户
标识anonymous(匿名),在Internet上, 任何人在任何地方都可以使用
它。
你不能在没有提供这种匿名FTP服务的Internet主机上使用匿名F
TP。
当你使用ftp程序和匿名FTP主机相连时, 它的工作方式与正规的
FTP是相同的,除非你要求进入的是anonymous(匿名)用户标识。 当
要求你输入口令时,你可以录入你的电子邮件地址或名字。这样做,以便
于系统所有者知晓进入它们文件的访问者(关于Internet上的地址问题,
参见第四章)。
anonymous(匿名)用户标识上只能使用FTP,不能用于Telnet ,
即不能用Telnet来连接一个匿名FTP主机(参见第七章),也不能作为
一个普通用户用匿名用户标识来登录。
当一个系统管理人员在计算机上建立了一个匿名FTP后,他标出一
个作为向公众开放的目录,而别的目录是不可以随意进入的。这样对一个
组织来说很安全,公众可以随意进入。作为保密措施之一,大多数匿名F
TP允许你“下传”文件,但不能“上传”文件。这就是说,你能从远程
主机上拷贝文件,但不能把文件拷贝到远程主机上。
如果一个匿名FTP主机允许“上传”文件的话,你就可以把新的文
件拷贝到一个单独设计的“上传”目录上,然后,系统管理人员就有机会
检验这些新文件,并把这些新文件移入公众“下传”目录。用这种方法,
远程用户就可以免受他人“上传”麻烦的文件之害,例如,染上病毒的程
序。
很多系统管理人员没有时间做不停的检查工作。当你“下传”文件时,
请记住要进行通常的预防工作。例如,当你在你的PC机上运行一个程序
以前,用病毒检测程序检查一下。
作为一个Internet的用户,你可以用FTP在两台主机上传送文件。
一般而言,大多数人在Internet上只有一个单一的帐户,FTP更多地被
用作“下传”公共文件。在这一章中,我们将集中讲解怎样用匿名FTP
“下传”文件。
你将看到,ftp客户机程序中有大量的你可以用的命令, 有些命令有
变化。我们将把重要命令的功能进行简介,并且告诉你工作时怎样显示帮
助信息。虽然我们不能详细地介绍每一个命令,但是我们将让你知道怎样
使用匿名FTP。
如果你使用过Unix操作系统,你就会很快地明白ftp程序和它的命令,
你首先以联机方式显示ftp进入。用下面的命令:
man ftp
我们已经在第十一章讨论过man命令,以及怎样使用它。
匿名FTP的重点
首先,匿名FTP运用很广,没有什么指定的要求。所以,每一个人
都可以在匿名FTP主机上访问文件。
什么是“big deal”?“big deal ”是指世界上大量运用的匿名FT
P,即上千的匿名主机和无数的文件都可以被免费拷贝。在Internet上,
各种信息和各种计算机程序都是可获得的。人们和一些组织可以利用计算
机设备和磁盘空间来获得对自己有用的文件。为什么呢?因为正如第一章
所讲的,Internet的资源是共享的。
在你没有开始使用匿名FTP时,你不知道它的优点,如果你使用了
匿名FTP,你就会发现匿名FTP是人类历史上最有价值的发明之一。
如果你刚刚接触Internet,如果你认为我们对匿名FTP的评价言过
其实,我们不会责怪你,以后你自己会明白。为什么我们评价这样高,原
因有三点。
首先,我们已经说过,匿名FTP允许你“下传”你想要的各种信息。
一直到你是一个Internet上的熟练用户之后,你才能明白这一点的重要性。
匿名FTP提供进入最大信息库的通路,此外,这个库总是不断在壮大,
它不关闭,并且无所不包,还是可以免费访问的。关于这种种的信息,可
以浏览一下这本书的最后部分的《附录》,尤其要注意通过匿名FTP可
得到的条目。
你知道怎样在许多不同的匿名FTP主机和许多文件中寻找一个指定
的文件吗?你可以用一种叫做Archie的服务。Archie将查询一个特别的F
TP数据库,找到包含你所想找的文件的所有主机。在第十三章中有一个
例子,告诉你怎样使用Archie。
第二,在Internet上,匿名FTP是软件分发的主要方式。原因是在
Internet上保存所有已提供所用标准协议的有用程序。许多程序通过匿名
FTP分布,每一个人都可以建立一个Internet主机。
例如,你想要进入Usenet讨论组,你的系统管理人员就必须在你的计
算机上安装Usenet软件,你的系统管理人员到哪里去获得这个软件呢?在
匿名FTP中。
匿名FTP之所以非常重要的最后一个原因是:匿名FTP被用来归
档和传播技术信息, 从而定义了 Internet 自己。 正如第二章所讲的,
Internet是在大量的协议和惯例的基础上建立起来的,这种协议在技术上
被称作要求说明(RFC)。RFC作为技术上的解释就是假定某事应该
怎么做。在指定的的题目中,RFC也常用来提供有用的信息。
RFC给每一个要读它的人提供一个数字。例如,RFC#1325
是一个新用户共同的问题答案的长列表(RFC同第九章讨论的问题目录
表有相同之处)。
如果你想读RFC#1325,就用Archie在名叫rfc1325.txt 的文
件中寻找。当你发现一个匿名FTP主机中有这文件时,就用这一章告诉
你的方法,用FTP,从这个主机上“下传”这个文件。如果你想“下传”
一个所有的RFC的索引,就用Archie去寻找一个名叫rfc-index.txt 的
文件。
启动ftp程序
要从远程主机上“下传”或“上传”文件,请用ftp程序。 这个程序
作为客户机与在远程主机上的FTP服务器相联系。当这种联系建立起来
后,你必须录入一个用户标识和口令,这样才能使用你想要使用的ftp 命
令。
有两种方法可以开始启动ftp程序。 这里我们向你显示大部分情况下
的做法,下面我们将告诉你另外一种方法。
录入ftp命令,然后录入你连接的远程主机的地址名。例如, 你想要“
下传”的文件是在名叫rftm.mit.edu的计算机上,录入命令如下:
ftp rtfm.mit.edu
如第四章已介绍到的,所有Internet上的主机都有一个正式地址,也
就是一个IP地址。这个地址包含着几个独立的数字,例如,rtfm. mit
.edu的IP地址是18.70.0.224。
一些系统在涉及某些标准地址时比较麻烦,如果你在使用ftp 时遇到
这种问题,就请使用IP地址。例如,下面两个命令连接的是相同的主机:
ftp rtfm.mit.edu
ftp 18.70.0.224
关于IP地址和Internet地址的具体情况,请参见第四章。
当ftp程序开始后,它将把你所想连接的远程主机联系起来。 当这种
联系建立后(如果远程主机较远的话,这种联系要花一些时间),你将看
见下面的信息显示出来:
Connected to CHARON.MIT.EDU.
220 charon FTP server (Version 6.6 Wed Apr 14 21∶00∶27 EDT
1993) ready
Name (rtfm.mit.edu∶harley):
第一行信息告诉我们联系已经成功了。注意,我们联系的远程主机名
实际上是charon.mit.edu.这是因为rtfm.mit.edu名字又叫 charon. mit
.edu。
在匿名FTP中这种别名是很普遍的。这是因为它们使用易记住的名
字,另外,系统管理员为了不弄错用户而可以灵活地改变计算机。例如,
如果系统管理员认为有必要用不同的计算机来进行FTP,他可以不必告
诉每一个用户这种变化。这样,他要做的只是确保地址rtfm.mit.edu换在
新的计算机上。
以ftp开头的主机名字是很普遍的。例如, 电子新领域基金会(EF
F)有一个匿名FTP主机叫ftp.eff.org。 (EFF是一个公众服务组
织,致力于使计算机事业更加开放,为此制定更加自由的政策和更加有力
的措施。作为它工作的一部分,EFF将管理一个匿名FTP主机,这个
匿名FTP主机储存着许多有趣的信息资源,包括电子杂志。)
这个EFF的匿名FTP主机的公开名字是ftp.eff.org。当然, 当
你FTP这个地址时,你将看见它化名为别的计算机名,在我们这章中,
这个化名的名字是krager.eff.org。现在,又回过头看看前面的例子,这
第二行如下所示:
220 charon FTP server (Version 6.6 Wed Apr 14 21∶00∶ 27
EDT 1993) ready.
这行告诉我们FTP服务器的名字以及这个服务器所用的FTP软件
的版本号。
注意这一信息的开头有一个数字220,在FTP中所有的信息中都
是以这样的数字开头的,没有办法去掉它,但这些数字是不重要的,你可
以不管它。这些数字向你显示,这些信息确实是从远程服务器上传送来的。
而没有用这个数字开头的行是来自ftp客户机程序。
最后,让我们看看最后一行的信息:
Name (rtfm.mit.edu∶harley):
这是我们的ftp客户机程序要求的, 就是问我们想要用什么用户标识
去登录名叫rtfm.mit.edu的计算机:恰巧,我们登录的本地主机叫harley,
ftp程序知道这个, 并建议我们可以在远程系统上使用相同的用户标识。
这就是为什么我们看见“harley”在这括号里的原因。
如果你键入回车键,ftp 程序将用缺省的用户标识传送到远程主机。
在大多数情况下,你希望用anonymous登录远程主机, 简单地录入这个名
字并回车:
anonymous
你将看见如下显示:
331 Guest login ok, send e-mail address as password.
Passward:
FTP服务器已认可用户标识anonymous, 现在你可录入你的电子邮
件地址作为口令。如果一些FTP 服务器认为你的口令不像是正确的地址,
就不允许你登录。
一些FTP服务器要检查你的口令,看它是否像你的真正的邮件地址。
如果不对,你将被拒绝进入某个公共目录(你也许根本不知道发生了什么)。
当你键入批准的用户标识和口令,你将看见下面一行显示出来的信息:
230 Guest login ok, access restrictions apply.
ftp >
这就意味着你正式可以登录,可以使用匿名FTP设备了。
第二行,ftp>,是你的ftp客户机程序的提示符。 当你看见这个提示
符,你就可以录入一个ftp的命令了。我们将在这章的后面讨论各种命令,
到时我们将向你显示“下传”一个文件时匿名FTP的整个过程。
现在,我们只想提到两个命令:显示所有ftp命令的清单,键入“?”
;结束FTP,使用“quit”。
最后一点我们想谈谈当你的FTP客户机不能与远程主机相联系时是
什么原因。如果发生上述情况,可能有三个方面的原因。首先,FTP服
务器可能暂时无法使用。在这种情况下,我们将看见:
ftp:connect:Connection refused
第二,与远程主机相连的网络可能不起作用了。这种情况也可能是主
机连上的网络有问题,或这个主机本身没有工作。像这种情况,我们将看
见如下信息:
ftp:connect: Host is unreachable
最好的解决办法是再重新连一遍。
最后一种情况是你的地址写错了。例如,你想从rtfm.mit.edu上“下
传”文件,但你却录入了错误地址:
ftp rtff.mit.edu
你将看见下面的信息显示出来:
rtff.mit.edu:unknown host
ftp >
这时,你可以录入另外一个名字的主机(我们将在下一节里向你介绍)
,另外,你可以用quit命令终止程序。
上面显示的“unknown host”容易让人误解。在这里,你的FTP客
户机不能与远程主机相联系的原因有很多,两种最普遍的原因是:
1.你把计算机的地址拼写错了。
2.你指定的计算机名字在Internet上不存在。
启动ftp程序的第二种方法
在前面的一节中,我们讲到有两种方法可以启动FTP客户机程序。
第一种方法是录入ftp,接着录入指定的远程主机的地址。例如:
ftp rtfm.mit.edu
第二种方法是录入ftp,但不录入远程主机地址,如:
ftp
这时程序将开始,但没有实现与远程主机的联系,我们将看见下面的
显示:
ftp>
这是ftp提示符,它意味着程序等待你录入一个命令。 要与远程主机
相联系,就录入open,接着是主机的地址,例如:
open rtfm. mit. edu
这样,与远程主机的联系就建立起来了。正是你录入ftp 命令时指定
的地址。在前节的最后我们所举的例子中,在ftp 后录入了错误的地址。
在这个例子中,远程主机的名字是rtfm.mit.edu,但我们错误录入的是:
ftp rtff.mit.edu
这样录入后,ftp程序努力做联系工作,当它联系不上时, 它就放弃
了,然后显示提示符,等待你录入命令,在这种情况下,你将看到:
rtff.mit.edu: unknown host
ftp>
你现在可以录入:
open rtfm.mit.edu
如果录入此地址不工作的话,你就试着换一个地址。如果你决定放弃,
就录入
quit
这样就终止ftp程序。
启动和结束ftp的概要
有两种方法启动ftp,录入命令和远程主机的地址:
ftp rtfm.mit.edu
或者只录入命令本身:
ftp
接着,出现ftp>提示符,录入open命令:
open rtfm.mit.edu
停止ftp时,当ftp>提示符显示后,录入quit命令:
quit
目录和文件
当你开始运用匿名FTP时,你将发现你需要了解一些文件和目录的
情况。你接触的匿名FTP主机大多是Unix操作系统的计算机,你需要了
解Unix操作系统的文件系统。
你可能还记得,在第一章中,我们告诉你读一些Unix操作系统的书将
是有帮助的。即使你所用的操作系统不是Unix操作系统,但你将要进入的
很多计算机都是Unix计算机。当你使用匿名FTP时,这种情况就出现了。
在这里,我们将给你简单介绍百分之七十五的Unix文件系统。如果你
想了解更多的信息,最好的办法是去仔细读一本好的Unix书,我们向你推
荐一本由“Harley Hahn”(McGraw-Hill,1993)所著的《Unix 学生指南》
(《A student's Guide to Unix》)。
在Unix中,文件的定义是很普通的。一个文件被定义成一个输入源或
输出的对象。当然,这种定义技术性太强了,我们可以作这样一点想象:
一个文件就是聚集数据的库。
存储在计算机中的文件,能包括任何类型的信息:程序、文本、图像
等等。多数的文件存储在磁盘上(硬盘),另外,我们也听到过文件存储
在CD、磁带和软盘上。
创建一个文件,要给它取个名字。当你想用文件做某些事时,你就必
须提及它的名字,例如,当你想用匿名FTP“下传”一个文件时,你必
须告诉你的FTP客户机,你想“下传”的文件名。
Unix文件名可以含有字母、数字和某些标点字符。例如,在这章开头我
们涉及到的两个文件名rfc1325.txt和rfc-index.txt。
Unix中大写字母和小写字母是有区别的。这就是说,当你用一个文件
名时,必须用准确的字母。例如,这样写上面的文件名Rfc1325.txt 就是
错误的。在Unix中,字母R和 r 是完全不同的, 所以 rfc1325. txt 和
Rfc1325.txt是完全不同的两个名字。
绝大部分Unix文件名都是由小写字母组成的,但是,你有时也会遇到
一个文件名是有大写字母的。所以,一定要打入正确的名字。
由于许多计算机都存储大量的文件,Unix操作系统允许我们把这些文
件组织收集在一起形成一些目录,一个目录就象把同种类的文件聚集起来
的仓库一样,与别的文件分开。
当你和远程FTP主机相联系时,你会发现大量的目录。为了“下传”
一个文件,你必须知道这个文件所处的目录名,以及这个文件本身的名字。
这里有一个例子。
在第九章,我们已经讲过许多的Usenet新闻组,有问题表和答案表,
这些表包括了所有要讨论的基本问题,这些表叫常见问题(FAQ)表。
计算机rtfm.mit.edu作为一个Usenet档案被存储在FAQ表中,以便人们
通过匿名FTP能得到。
城市传奇讨论组(alt.folklore.urban) 是新闻组中比较有趣的组之
一。 这个文件的名字是 folklore- faq , 可以在/ pub/usenet/news
.answers目录中找到,要了解一下这个目录名,你需要了解的仅是Unix操
作系统是怎样组织它的目录系统的。
能够把文件集中起来组成目录是非常重要的,它允许我们组织收集大
量的文件。但是,许多Unix操作系统有上千个文件,把它们简单地集中起
来形成目录是远远不够的,我们需要更高水平的组织方式。
解决的方法是集中一些目录而形成另一些目录,也就是允许我们形成
一种体系,即一些目录包含了另一些目录。
例如,在rtfm.mit.edu主机上,所有的公共目录被集中在一个叫 pub
的目录中;在pub目录中,所有的包含Usenet (用户网)信息的目录都集
中在一个叫usenet的目录中;在usenet目录中,是一些包含有与各种新闻
组有关的文件和目录。
有一个指定的新闻组名字叫news.answers,它作为一个所有FAQ表
的仓库,这些表是邮寄给其它各组的(参见第九章)。这样,在rtfm.mit.
edu 主机上,usenet目录包含一个名叫news.answers 的目录, 在 news
.answers中集中了所有的FAQ表。这就是为什么folklore-faq文件是在
名为/pub/usenet/news.answers的目录中的原因。
当一个目录包含着其它一个目录,我们就叫这第二个目录为次级目录
( sub- directory ), 有时, 把第一个目录叫做主目录或叫根目录(
parent directory),次级目录叫做子目录(child directory)。
每一个Unix计算机系统都有一个包括系统中的所有次级目录和文件的
主目录,这个主目录称作根目录。在根目录下有很多的次级目录,这些次
级目录下又有另一些次级目录,以此类推。
在我们的例子中,pub是根目录下的子目录;usenet是pub目录下的子
目录;news.answers是usenet目录下的子目录,而folklore-faq是 news
.answers目录下的文件。
如果你要画一个这个系统的图,它就像一棵树一样,有树枝和更小的
树枝长在一个主树干上,这个主树干就叫做根目录。
当我们写一个子目录名时,必须首先从根目录开始,然后要表示出所
经过的所有目录,直到最后的树枝。明白这些后,你只需要记住两件事。
首先,根目录用一个简单的符号“/”表示,我们不用“root”这个
单词;第二,我们用相同的符号“/”来分开一个目录名和另一个目录名,
如这个名字/pub/usenet/news.answers,用文字描述一下就是“从根目录
开始,然后进入pub子目录,接着进入 usenet 子目录, 最后进入 news
.answers子目录”。
当你使用Unix操作系统时,你就想像自己是置身于一个目录树中,正
在运行的目录叫做你的工作目录或当前目录。你使用适当的命令,就可以
从一个目录移动到另一个目录(这就像从树上的一个树枝移到另一个树枝
上),你将发现,当你“下传”一个包含在某目录中你想要的文件以前,
移到该目录是很方便的。
正由于这种方便,我们能够按照目录顺序描述一个文件所在的位置。
例如,我们想告诉一个朋友,Usenet中城市传奇讨论组在FAQ表中的位
置。 我们就要这样告诉他, FTP到 rtfm. mit. edu 中, 拷贝文件
/pub/usenet/news.answers/folklore-faq。
目录名被“/”字符分开,就描述为路径或路径名, 这样, 为了在
Internet上FTP一个文件,你必须知道:(1)包含这个文件的匿名F
TP主机的名字;(2)文件的路径名。如果你看一下这本书《附录》,
你就会发现许多Internet资源都是用这种方法描述的。
ftp命令概述
当你录入了ftp命令并和远程主机建立了联系,你将看见这样的提示符:
ftp>
有了这个提示符,你就可以录入ftp命令了(ftp命令有很多)。FT
P客户机程序将把你的所有命令送入FTP服务器,FTP服务器将响应
你的请求。这就是说,你录入一个又一个命令,直到你达到了你的目标(
也就是说“下传”了文件),然后录入quit命令终止FTP程序。
任何时候,你可以录入?或help来显示所有的ftp命令,图12 -1包
含着所有命令。(不要为你的ftp客户机没有所有这些命令而担心, 一般
你的客户机包含了一些最重要的命令。)
如果你想看一下一个指定的命令的概况,录入?(或help)和命令名。
例如,如果你录入
? quit
你将看见:
quit terminate ftp session an exit
在ftp > 提示符后,你可以录入?或help, 它将显示出FTP服务器
所识别的所有可能的命令的摘要,摘要如下。
命令可能是缩写,这些命令是:〖HT5”H〗
!crmacdefproxysend
$ delete mdelete send portstatus
account debug mdir put struct
append dirmget pwd sunique
asciidisconnect mkdir quit tenex
bell8form mlsquotetrace
binary getmode recv type
bye glob mput remotehelp user
case hash nmap rename verbose
cd help ntrans reset?
cdup 1cdopen rmdir
close1s prompt runique
图12-1所有ftp命令
注意,在图12-1中列出了很多的命令。 但由于你所使用的FTP
软件版本不同,使得命令的数目也就有所改变。
你可能会惊奇,难道我真的要学会使用所有的命令吗?这个回答是否
定的。对于常用的匿名FTP程序来说,你只需要会使用图12 -2所列
的命令就行了,我们将在下面讨论这些命令。
当你想结束一个正在执行的ftp命令时,按 CTRL-C。
基本命令
quit关闭和远程主机的联系,终止ftp程序
?显示所有ftp命令表
?command显示一行指定的命令的概况
help显示所有ftp命令表
help command显示一行指定的命令的概况
! 本地主机:停止ftp,开始shell
! command本地主机:执行指定的shell命令
连接
open[host]与指定计算机建立连接
close关闭和远程主机的连接,但保留ftp
user[name[password]]设置用户标识
目录
cd[directory]远程主机:改变到指定的目录
cdup远程主机:改变到主目录
dir[directory[local-file]]远程主机:显示长的目录清单
lcd[directory]本地主机:改变目录
ls[directory[local-file]]远程主机:显示短目录清单
pwd远程主机:显示当前目录名
传送文件
get[remote-file[local-file]]“下传”一个文件
mget[remote-file...]“下传”多个文件
设置选项
ascii(缺省)把文件设置成ASCII文本文件
binary把文件设置成二进制文件
hash是/不:每传送一个数据块显示一个#号
prompt是/不:传送多个文件的提示
status显示选项的当前状态
图12-2最有用的ftp命令摘要
基本的ftp命令
我们把ftp命令分成几种类型。首先,是基本命令。 我们已经介绍了
quit,?和help命令(这一命令与?相同)。
另外一个基本命令是!(惊叹号),这个命令使用在Unix操作系统上
是录入一个正规命令行到你的本地计算机,简单地在!之后录入命令,然
后按回车键,这个ftp程序就运行起来,把这个命令送入你的Unix shell
执行。这个命令执行完后,ftp程序将恢复控制并且重新显示它的提示符。
这里有一个例子。我们想在你的本地系统上用Unix的date命令来显示
时间和日期。在ftp>提示符后,我们录入!date。当date命令执行后,我
们将回一个ftp>提示符:
ftp > ! date
Thu Jun 17 23:11:19 PDT 1993
ftp >
如果你想录入不只一个Unix命令,你可以只录入!字符:
ftp > !
这个ftp程序将运行起来,开始一个新的shell。你现在可以录入你想
要执行的任何一个Unix命令。当你执行完后,终止shell,ftp程序将恢复
控制。对于多数shell,你可以录入CTRL-D来终止shell。如果这样
不能完成,试着用exit命令来终止这个shell。
ftp的连接命令
第二类ftp命令是控制和远程主机联系的命令: open、close和user。
我们已经介绍过open命令了,你能用它来建立FTP连接。
close命令将终止FTP连接,但不终止ftp程序。当你想关闭一个连
接,再打开另一个连接时,你就可以用close命令。
如果你和一个远程主机连接成功了,但是你的用户标识和口令却是错
误的,你可能失去,也可能不会失去这次连接(这依赖于你所使用的FT
P服务器)。如果你没有失去这种联系,你就只有在指定了一个有效的用
户标识和口令后才能正常工作。想这样做,就要使用user命令。简单地录
入:
user
ftp程序将问你要进入的用户标识和口令,如果你想进入, 就要直接
指定信息:
user anonymous [email protected]
在这里,我们指定的用户标识是anonymous,口令是fuzzball.ucsb.edu。
ftp的目录命令
第三类ftp命令是你能从一个目录移动到另一个目录, 并且显示该目
录的内容。正如我们曾解释过的,你正在工作的目录叫做工作目录(或当
前目录)。当你建立了一个FTP联系后,你可以跟踪两个工作目录:一
个在远程主机上,一个在你的本地计算机上。对于大部分匿名FTP主机
来说,你开始就自动地位于根(最高级)目录上,要移动到别的目录上,
就用cd(改变目录)命令。录入这个命令名,后面跟你想移动到的目录的
名字, 然后按回车。 例如, 如果你想移动到名叫 /pub/usenet/news
.answers的目录下,录入:
cd/pub/usenet/news.answers
如果你了解Unix操作系统,你就可以用单个的cd命令,每一次移动到
一个目录下。例如:
cd pub
cd usenet
cd news.answers
然而,你需要使用cd命令的这种技巧超出了本书的范围,详细内容请
参看关于Unix操作系统方面的书。
有时,我们可以用pwd (显示工作目录)命令来显示你的远程主机工
作目录的名字。例如,如果你录入
pwd
你将看见类似下面的信息显示出来:
257 "/pub/usenet/news.answers" is current directory
(请记住,FTP服务器的信息总是以一个数字开头。)
这时,你将看见一个与你预料不相同的目录名。例如,在rtfm. mit
.edu系统中,如果你用录入pwd命令来移动到/pub/usenet/news. answers
目录下,你实际上将看见:
257 "/pub/usenet-by-group/news.answers" is current directory.
这不是出错了。这意味着系统管理员给了第二级目录两个不同的名字:
usenet和usenet-by-group。在这种情况下, 你可以用你用的那个名字。
“usenet-by-group”这个名字更详细,而usenet这个名字更容易书写。
在 Unix 操作系统中, “ print ”(打印)这个词的意思常常是“
display”(显示)。这样,pwd(显示工作目录)命令的功能就是显示你
的工作目录名。这个传统说法使我们回到Unix早年的时代,当时终端实际
上是把它们打印在纸上。
当你录入ftp命令时, 你的本地计算机上的工作目录是你碰巧所在的
目录。当你“下传”文件时,文件将放在这个目录中。如果你想把你的文
件移入别的目录,你就要在开始“下传”文件以前用lcd 命令移动到别的
目录。例如:
lcd faq-files
这个命令就使你的本地工作目录变为faq-files。 你将再次发现多看
一些Unix书中的信息是有用的。尤其是,你应该学会怎样建自己的目录,
怎样从一个目录移到另一个目录。
这里没有ftp命令来显示你的本地工作目录名。但是,可以用! 命令
后跟pwd命令来显示你的本地计算机工作目录:
! pwd
当你开始启动一个匿名FTP程序之前,应决定你所要“下传”的文
件要存在你的本地计算机的哪一个目录里。在你录入 ftp 命令之前, 用
Unix操作系统中的cd命令来确定目录。这样做后,你将不必用lcd 命令就
能把要想“下传”的文件放入正确的目录中了。
显示远程主机上一个目录的组成情况,你可以用两个不同的命令。ls
命令将显示这个目录上的所有文件名。这里是一张典型的输出,它显示了
news.answers目录的一些文件名:
esperanto-faq
feminism
finding-addresses
finding-sources
fleas-ticks
folklore-faq
fonts-faq
dir命令显示一个更长的条目,在文件名后, 你还可以看见一些额外
的信息。这里是一些典型的输出:
-rw-rw-r--8 root37120Jun201:24esperanto-faq
drwxrwxr-x 2 root 3 512 Jun 12 00:07 feminism
-rw-rw-r-- 14 root 3 28880 Jun 12 03:37 finding-addresses
-rw-rw-r-- 12 root 3 41939 Jun 16 04:04 finding-sources
-rw-rw-r-- 10 root 3 41533 Jun 16 03:30 fleas-ticks
-rw-rw-r-- 8 root 3 84701 Jun 15 03:33 folklore-faq
drwxrwxr-x 2 root 3 512 Jun 18 01:46 fonts-faq
如果你有一些使用Unix操作系统命令的经验,你就知道这些是在执行
了“ls-l”命令之后显示出来的。当然,这些显示没有错误,你只需要明
白四点:
首先,最左边的字符告诉我们,这一行描述的是一个目录或一个文件。
“d”这个字母表示是一个目录,“—”这个字符表示是一个文件。 在这
个例子中,我们有两个目录,五个文件。
每一行最右边,是一个文件名或一个目录名。名字的左边,是该文件
或目录被校正(修改)的时间和日期。
最后,在时间和日期的左边的数字是文件的字节数,这个数据对于目
录来说是没有什么意义的。
这样,我们就明白folklore-faq是一个文件,它被校正(修改)的时
间是6月15日3点33分,有84701个字节长, 你可以忽略其余的
信息。你将发现复制一个文件的长目录单到你的本地计算机上是很方便的。
在指定的目录名后跟一个文件名,例如:
ls/pub/usenet/news.answers ls.list
dir/pub/usenet/news.answers dir.list
每一个命令都产生一个指定目录的目录单。第一个命令“下传”一个
文件到你的名为ls.list的本地计算机上(当然, 你可以选择你希望的名
字)。
当你用ls和dir命令时,你必须有指定的目录名和本地文件名。 如果
你想“下传”一个工作目录清单,你可以用一个.的目录名(一个单一的
点字符)。在Unix操作系统中,一个单一的“.”字符表示你的工作目录。
例如:
ls.ls.list
dir.dir.list
ftp的文件传送命令
有两个“下传”文件的命令(也就是说,从远程主机上拷贝文件到你
的计算机上),这两个命令是get和mget。
get命令允许你一次“下传”一个文件,mget(多get)命令允许你一
次“下传”多个文件。
在用get命令时,在get后录入你想从远程主机上“下传”你的本地计
算机上的文件名。
例如,我们前面提到你在rtfm.mit.edu计算机上建立一个匿名FTP
程序,你想“下传”folklore-faq文件,你希望这个文件在你的计算机上
的名字是urban-legends。
首先,移到包含这个文件的目录上:
cd/pub/usenet/news.answers
现在,录入get命令,“下传”文件:
get folklore-faq urban-legends
你将看见下面的信息:
200 PORT command successful
150 Opening ASCII mode data connection for folklore- faq
(84701 bytes)
这样,文件就被拷贝到了你的计算机上。当拷贝完成后,你将看
到:
226 Transfer complete
local: urban-legends remote: folklore-faq
86113 bytes received in 17 seconds (4.9Kbytes/s)
ftp >
你现在可以录入另外的命令了。(顺便说一下,不要担心文件实际上
是84701字节长,而我们接收到86113个字节。当我们拷贝一个
文本文件时,额外的字节必须与某些字符进行编码,其余的字符保证了我
们“下传”的文件大小是正确的。)
如果你在用get命令时,只跟一个简单的文件名,ftp程序将用这个名
字作为“下传”你的本地计算机的文件的名字。例如,如果你录入:
get folklore-faq
那么这个“下传”的文件就自动地命名为folklore-faq。
如果你的本地计算机上已经有一个相同名字的文件了,那么这个现存
的文件将被覆盖。当一个文件被覆盖后,就没有办法再恢复了,所以要十
分小心。
如果你正在使用Unix操作系统,远程文件的传送只以一个Unix输入命
令而不是一个本地文件输入本地计算机中。代替上面第二个文件名的是录
入一个“|”字符(竖线,叫做输送符号),后面跟命令名。
例如,你想读一个名叫README的远程文件。一个方法是“下传”
它到本地文件中,停止或暂停FTP操作,读文件,删除文件,然后恢复
FTP操作。另一方法,你可以把这个远程文件作为分页程序(例如more)
放在你的本地计算机内:
get README | more
注意,你不能在“|”字符后空一格(正规的Unix命令可以)。 这是
因为get 命令要求有两个词:远程文件名(在这里是README)和本
地目标名(在这里是|more)。当你想一次“下传”多个文件时, 就要使
用mget(多get)命令。录入这个命令, 后面跟你想“下传”的文件名,
例如:
mget finding-addresses finding-sources folklore-faq
当你使用mget命令时,你不能指定另一个名字。所以,这些文件
拷贝到你的本地计算机上时,是和原来的名字相同的名字。
mget命令可以一次传送一个文件。在传送一个文件之前,mget将显示这
个文件名并要求你确定。例如,
mget finding-addresses?
在这里你要录入y(yes)或n(no),并且按入回车键。
记住,你可以用按入CTRL-C来中断ftp命令,包括get和mget命
令。
mget命令的好处是,你可以指定一个目录名,mget命令将处理此目录
中的所有文件。与此相似,如果你知道怎样用Unix操作系统的通配字符,
你就可以下传所有那些与指定格式相匹配的文件。
如果你不知道通配字符,我们将简要地告诉你可以零个或多个字母后
面跟一个*(星号)字符,还有,可以用一个字母后跟一个? (问号)字
符。
例如,要把在远程工作目录上,以fi字母开头的所有文件都“下传”,
你可以用下面的形式:
mget fi*
欲知使用这种方式的更多情况,请参看有关Unix操作系统的书。(可
以试用ls命令。例如,试着用ls fi*列出所有以fi作为开头的名字的文件
清单。)
在这一章,我们集中介绍了在匿名FTP中经常使用的“下传”功能。
而ftp程序也有一些命令用于“上传”,有 put (“上传”一个文件)和
mput(每次“上传”多个文件),这些命令有get和mget 的格式相同的特
征。
关于别的情况,请看你的本地ftp程序文件。如果你用的是Unix 计算
机,通过录入man ftp命令,你可以显示以联机方式的ftp条目。
设置ftp的选项
在ftp程序中,有一些命令你可以用来控制“下传”操作, 这就是我们
下面要介绍的binary,ascii, hash, prompt和status。
在第五章,我们介绍了文本文件和二进制文件的不同之处。简单地讲,
一个文本文件(也叫做ASCII文件)由普通的字符、字母、数字、标
点等等组成。在这一章里我们提到的例子都是文本文件。
二进制文件包含的信息不是文本的。例如,如果你想“下传”包含图像
的文件,你就涉及二进制文件了。
在一般情况下,ftp程序都认为它是在对文本文件进行操作, 如果你
想“下传”二进制文件,你就应该在录入get或mget命令之前告诉程序。
binary命令告诉ftp程序你将要“下传”二进制文件。 如果你要换回来,
ascii命令就表示你将要“下传”文本文件。 当你使用这些命令之一时,
我们就说你正在设置表示类型。
例如,你想要“下传”一些包含着图像的文件,你在“下传”之前,
应录入下面的命令:
binary
当你录入这个命令时 ,你将看见下面的信息:
200 Type set to I
这个I代表“图像”(不要考虑它)。
如果你用binary命令来“下传”一个文本文件,它也会很好地工作(
虽然速度要慢些),所以只有当你拷贝二进制文件时要特别准确。对于许
多远程主机,只有当你设置了binary这个表示类型后,二进制文件才能被
完全拷贝。
你常常会遇到名字以.Z或.tar结束的文件。这些文件使用了特殊的
格式。.Z文件是压缩文件,.tar文件包含了一些文件的集合( 叫做档案
库),这些文件都是二进制文件。名字以.txt结束的文件一般是文本文件。
如果你不能明确地知道自己要“下传”的文件类型,那么置为binary
是比较安全的。
下面一个选项,我们介绍hash。它告诉ftp程序, 当数据包被传送之
后,显示一个#字符(有时也叫做#号字符)。这样可使你在“下传”一
个大文件时能够监视这个过程。数据包的大小依赖于你的FTP联系的状
态,但是在“下传”之前你将被告之它是什么。
启动hash操作,就录入:
hash
终止这个操作时,再录入相同的命令。
最后一个选项我们想介绍prompt。在这节的开头我们已经讲过,当你
用mget 命令时FTP客户机将向你询问每一个文件的情况, 如果你终止
prompt选项,mget命令将不用得到你的许可就自动地传送每一个文件。
关闭prompt选项,只需录入:
prompt
要启动prompt,再录入相同的命令。
最后,如果你想显示所有选项的当前状态,你就要用status命令:
status
当你这样操作后,你将看见许多选项,而且大多数选项完全可以忽略。
典型的匿名FTP对话
图12-3包含了一个典型的匿名FTP对话的所有清单。 我们键入的
命令用黑体字表示。
在这个例子中, 我们连接了 rtfm. mit. edu 远程主机, 我们用
anonymous为匿名用户标识, 用自己的邮件地址作为口令(在所有的这种
系统中,当我们录口令时,口令不会回显)。
% ftp rtfm.mit.edu
Connected to CHARON.MIT.EDU.220 charon FTP server
(Version 6.6 Wed Apr 14 21:00:27 EDT 1993) ready.
Name (rtfm.mit.edu:harley): anonymous
331 Guest login ok, send e-mail address as password.
Password:230 Guest login ok, access restrictions apply.
ftp> cd/pub/usenet/news.answers
250 CWD command successful.
ftp> hash
Hash mark printing on (8192 bytes/hash mark).
ftp> get folklore-faq
200 PORT command successful.
150 Opening ASCII mode data connection for folklore-faq(84701 bytes).
###########
226 Transfer complete. local: folklore-faq remote:folklore-faq
86113 bytes received in 17 seconds (4.9 Kbytes/s)
ftp> quit
221 Goodbye.
图12-3匿名FTP对话实例
然后我们改变目录为/pub/usenet/news.answers,并且启动hash命令,
接着,我们用get命令“下传”名为folklore-faq的文件。
当“下传”完成后,我们录入quit命令,从而终止与rtfm.mit.edu的连
接,并且结束对话。
到达一个新的计算机的方法
当你FTP到一个新的计算机时,有时需要花费一些时间才能找到到达
它的方法,调整你自己,开始寻找某些文件和目录。
首先,寻找一个叫做pub的目录。 许多匿名FTP主机都有着一个包含
所有公共文件和子目录的目录。
其次,在你使用的每一个目录中,寻找下面的一个或多个文件:
README
index
ls-lR.Z
ls-ltR.Z
如果README或index文件存在, 在你“下传”其它文件之前先
“下传”并且读这两个文件。README文件包含着一些普遍的信息,
index文件有一些可得到的东西的描述。
当你第一次使用一个新的匿名FTP主机时,在根目录中寻找一个叫
README的文件。
ls-lR.Z和ls-ltR.Z文件包含着公共文件和目录的详表, 这两个名字
从Unix操作系统中的ls(list)命令而来。这个ls-ltR.Z文件包含的内容
是按时间来分类,并且显示文件更改的最近时间。ls-lR.Z 文件包含的内
容是按字母顺序来分类。如果你想看这样一个列表,你只需要“下传”这
些文件中的一个。
这些文件名末尾的字母.Z表示这个文件是一个指定的压缩文件。当你
“下传”这样的文件时,你必须在读它们之前执行“uncompress”命令。
如果你FTP到有大量文件的远程主机上,ls-lR.Z和ls-ltR.Z 文件
可能非常大,那么你实际上不能“下传”他们。如果你硬去“下传”的话,
你将发现这种“下传”将要花去你本地计算机的大量硬盘空间使之装满,
而且“下传”依然会失败;并且,既使你设法“下传”了这种文件,当你
解压缩时,这些文件也非常大。
所以,当你“下传”一个文件之前一定要查看文件的大小。当“下传”
一个文件时,它将占去本地计算机的所有自由磁盘空间,这种情况并不罕
见。如果你发现自己有可能出现这种情况时,请尽快地删除这个文件。(
用Unix操作系统的rm命令)
通过发电子邮件申请匿名FTP服务
如果你不能运行ftp程序, 可以通过发电子邮件的方法申请匿名FT
P服务。你可以用一个叫做Ftpmail的程序(这个程序由Paul Vixie编写,
当时他在DEC网络系统实验室工作)。即使你可以经常地使用ftp程序,
你偶尔也会发现通过电子邮件申请FTP是非常方便的。例如,当你需要
一个长目录清单时(见这节的最后一个例子),你也可能发现通过电子邮
件发一个申请比你自己用ftp程序工作要容易得多。
使用 Ftpmail 程序, 你向一个 Ftpmail 服务器发封电子邮件。 在
Internet上,有一些Ftpmail服务器,主要的是一个名叫ftpmail.decwrl
.dec.com的主机。在这一节中,我们将介绍怎样使用这个Ftpmail服务器;
在这一节的最后,我们将向你显示你会用到的其它Ftpmail服务器的列表。
在使用Ftpmail时,你向ftpmail@de cwrl.dec.com发了一封电子邮件。
在这封电子邮件中,每一行包含一个命令,这命令是启动一个匿名FTP
对话的指令。Ftpmail服务器将接收这信息,并按你的意思执行命令, 对
话结果将自动地传递给你。另外,当Ftpmail 接收到你的请求后将发给你
一个响应,并且报告匿名FTP对话后的现状(我们在第五章和第六章介
绍了Internet上的邮件设备)。
当你给Ftpmail发送一封电子邮件时,标题(Subject)行可不理睬。
但是,如果你要指定标题时,Ftpmail 将在给你一个回应时把它作为标题
行(Subject line)的一部分。这样,如果你向Ftpmail 传递了很多的请
求时, 用不同的标题来帮助你识别回复是很容易的。
为了说明怎样使用Ftpmail的命令,传送信息给ftpmail @ decwrl
.dec.com。这里有我们用mail程序(第六章)传送这样一信息的简短对话:
% mail ftpmail @ decwrl.dec.com
Subject: Request for help
help
CTRL-D
EOT
在你使用Ftpmail以前,读所有的命令是一个好主意。作为参考, 图
12-4包含了最重要的Ftpmail命令的概述。为了了解这些命令的意义,
你应该知道在这章的前面介绍的匿名FTP“下传”文件的基本原则。注
意Ftpmail命令中改变目录是用chdir命令,而不是cd。
使用Ftpmail是很简单的。为了简便,我们只用图12-4中依次列出
的Ftpmail命令,不常用的命令就不去管它了。例如, 要检索一个文本文
件,你通常只需要用到以下几个命令(按这个顺序):reply, connect,
ascii, chdir, get, quit。
下面的例子显示了一个对话实例。在这里,我们用命令去和匿名FT
P主机 cathouse. org 相连, 改变目录为 /misc/fun/humor/british
.humour/monty.python/flying.circus,请求一个名为argument. clinic
的文本文件。
% mail [email protected]
Subject: Example of requesting a text file
reply [email protected]
connect cathouse.org
ascii
chdir/misc/fun/humor/british.humour/monty.python/flying.civcous
get argument.clinic
quit
CTRL-D
EOT
如果你检索的文件很大(超过64000个字节),Ftpmail 将自动
把它分成小块,并且分别邮来每一块;直至你得到这些分开的信息并把它
们重新恢复为原来的文件(不要担心,它们将被编号)。
记住,你申请的结果将通过邮件送给你。正如我们在第五章中介绍的,
只有文本文件才能通过可靠的邮件送过来。这样,如果我们申请一个二进
制文件,它必须首先被转换为一个文本文件(记住,名字以.Z或.tar结
束的文件是二进制文件)。在另一端,你得对文本文件进得解码,来恢复
成原来的二进制文件。
指定你的邮件地址
reply address邮件响应 连接主机
connect host连接指定的匿名FTP主机
设置选项
ascii邮寄的文本文件
binary邮寄的二进制文件
uuencode用uuencode把二进制文件转变为文本文件
btoa用btoa把二进制文件转变为文本文件
指定目录
chdir directory 改变到指定目录
请求文件
get file传递一个指定文件的副本(拷贝)
请求信息
help传递怎样使用Ftpmail的描述
dir[directory]传递一个长目录表
ls[directory]传递一个短目录表(只有名字)
结束对话
quit结束对话,不管余下的信息。
图12-4重要的Ftpmail命令概要
有两个通用的系统来完成这种转换, “ uuencode/uudecode ”和“
btoa”(二进制到ASCII)。现在,我们先介绍,如果你申请一个二
进制文件,你就要告诉Ftpmail,要对该文件进行编码,简单地用unencod
e或btoa命令。最好在“binary”命令之后使用转换命令(要告诉Ftpmail,
你申请一个二进制文件)。如果你在送一个二进制文件之前没有指定要对
文件进行编码,Ftpmail btoa命令将失败(不能够实现你的愿望)。
所以,申请一个二进制文件,正常情况下你应该用下面的命令(按这
个顺序):reply,connect, binary, uuencode(或btoa), chdir, get,
quit。下面一个例子是我们用命令来和匿名FTP主机ftp.uu.net 相连
的一个对话实例:改变目录到/doc/literary/obi/DEC/humor, 申请名为
Lawyer.jokes.Z的文本文件。 当我们接收到这个文件后, 我们必须用“
uudecode”程序来恢复成原来的二进制文件,然后用解压缩程序来恢复这
个文件。
% mail [email protected]
Subject: example of requesting a binary file
reply [email protected]
connect ftp.uu.net
binary
uuencode
chdir/doc/literary/obi/DEC/humor
get Lawyer.jokes.Z
quit
CTRL-D
EOT
我们最后一个例子是通过邮件申请一个目录表。 这个申请比你运行
ftp程序更加灵便。在这个例子中,我们将申请一些幽默文件的一个长表。
当我们通过邮件接收到这个以邮件信息寄来的表后,为进一步参考,这个
表很容易被保存下来,也可以拷贝给一个朋友。
匿名FTP主机cathouse.org 包含一个幽默文件的奇妙库, 它叫做
Catstyle Archives,由Jason R.Heimbaugh(也就是众所周知的Catstyle)
编译。在下面的例子中,我们发出Ftpmail命令去和cathouse.org 连接,
改变目录为/misc/fun/humor目录,申请所有子目录的长表(命令dir* 指
定我们想要看的所有子目录)。当我们接收到这个目录表,我们就能浏览
它,并且申请我们感兴趣的文件。
% mail [email protected]
Subject: Example of requesting a directory listing
reply [email protected]
connect cathouse.org
ascii
chdir/misc/fun/humor
dir *
quit
CTRL-D
EOT
正如我们前面介绍的,在Internet上还有其它一些Ftpmail服务。表1
2-1显示了它们的地址。实质上, 它们的工作方法与我们在这章中所介
绍的一样,尽管细节和有些命令有所不同。
当你第一次用这些Ftpmail服务器中的一个之前, 送一个信息去请求指
导。简单地发一个信息,该信息只有一行,用了help一词。
像我们上面介绍的一样。
地名Internet 地址Ip地址
法国[email protected]
德国[email protected]
爱尔兰[email protected]
美国·加里弗尼[email protected]
美国·新泽西[email protected]
表12—1Ftpmai服务地址摘