下一页 上一页 目录

3. ftp 使用初学者指南

ftp 快速使用指南。

标准的 ftp 程序是最原始的 ftp 客户端。它在大多数 Linux 发行版中都是标准配置。它最初出现在 4.2BSD 中,4.2BSD 由加州大学伯克利分校开发。

3.1 运行 ftp 程序

ftp 很容易使用。假设您想连接到匿名 ftp 站点 metalab.unc.edu,以下载最新的 Linux 内核源代码。

在命令行中,输入

$ ftp metalab.unc.edu

ftp 程序将尝试连接到 metalab.unc.edu。另一种方法是从命令行运行 ftp,不带任何参数,然后使用 open 命令,并将站点名称作为参数

$ ftp
ftp> open metalab.unc.edu

3.2 登录 FTP 服务器

当您连接到 FTP 站点时,它会要求您登录(按回车键将以您的本地用户名登录,在本例中为 foo:我们以 anonymousftp 身份登录,以访问公共存档。

220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12
EST 1999) ready.
Name (metalab.unc.edu:foo): 

现在,我们输入一个完整的电子邮件地址作为密码(这是大多数公共 FTP 站点的要求)。

331 Guest login ok, send your complete e-mail address as password.
Password:

成功登录后,会向我们提供以下信息

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

3.3 文件传输类型

登录 ftp 站点后,ftp 将打印出文件传输类型。在我们的例子中,它是二进制。二进制模式按位传输文件,就像它们在 FTP 服务器上一样。但是,ASCII 模式将直接下载文本。您可以键入 asciibinary 来切换类型。

您想下载内核源代码,因此您将文件传输类型保持为二进制。二进制类型也适用于任何非文本文件——例如图形图像、zip/gzip 压缩包、可执行程序等。如果​​不确定,请使用二进制模式。

3.4 导航和列出目录

您执行 ls 以查看文件列表。ftp 服务器上的 ls 命令在远程服务器上执行,因此您可以使用的命令行选项因服务器而异。最常见的选项通常可用,请查看 ls 的 manpage 以了解详细信息。

ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 33590
-r--r--r--   1 root     other    34348506 Dec 03 03:53 IAFA-LISTINGS
lrwxrwxrwx   1 root     other           7 Jul 15  1997 README -> WELCOME
-rw-r--r--   1 root     other         890 Nov 15 13:11 WELCOME
dr-xr-xr-x   2 root     other         512 Jul 15  1997 bin
dr-xr-xr-x   2 root     other         512 Jul 15  1997 dev
dr-xr-xr-x   2 root     other         512 Jul 18  1997 etc
drwxrwxrwx  11 ftp      20           4608 Nov 28 16:00 incoming
lrwxrwxrwx   1 root     other          13 Jun 04  1998 ls-lR -> IAFA-LISTINGS
dr-xr-xr-x  17 root     root          512 Jun 08 11:43 pub
dr-xr-xr-x   3 root     other         512 Jul 15  1997 unc
dr-xr-xr-x   5 root     other         512 Jul 15  1997 usr
226 Transfer complete.

如果 ls 命令列出太多文件以至于它们滚动到屏幕顶部,您可以使用 Shift-PageUp 向上滚动。这在 Linux 控制台模式以及 xterm 或 rxvt 中都有效。

在公共 FTP 存档中,可下载的资源通常保存在 /pub 目录中。在本例中,您已经知道内核源代码位于目录 /pub/Linux/kernel 中,因此您键入以下内容以进入该目录

ftp> cd pub/Linux/kernel
250-README for kernel
250-
250-What you'll find here: kernel sources and patches
250-
250-
250 CWD command successful.

您看到的以“250”开头的消息是服务器发送的信息消息。在本例中,ftp 服务器配置为在您 cd 进入目录时自动向您发送 README 文件。

3.5 下载和上传文件

现在,在再次执行 ls 后,您看到您想要 cd 进入 v2.2 目录。您又执行一次 ls,并找到您要下载的文件。它是 linux-2.2.13.tar.gz。所以你输入这个

ftp> get linux-2.2.13.tar.gz
local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).

ftp 程序已开始将远程文件 linux-2.2.13.tar.gz 保存为本地文件 linux-2.2.13.tar.gz

如果您想将其保存为本地文件 foo.tar.gz,您可以像这样指定它

ftp> get linux-2.2.13.tar.gz foo.tar.gz
local: foo.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).

如果您想一次下载多个文件,则必须使用 mget(multiple get,多重获取)命令。您可以将 mget 与您要下载的文件名的空格分隔列表一起使用,或者您可以将通配符与 mget 命令一起使用。例如

ftp> mget linux*

将获取所有以字符串“linux”开头的文件。通常,mget 会在下载每个文件之前提示您。您可以使用 prompt 命令切换此行为。

现在假设您编写了一段软件,并且您想将其上传到 MetaLab 以包含在其 Linux 软件存档中。首先,您需要更改到 /incoming 目录(大多数公共 FTP 服务器都有一个目录,通常称为 incoming 或 uploads,文件可以上传到该目录),然后您可以使用 put 命令

ftp> cd /incoming
ftp> put foo.tar.gz
local: foo.tar.gz remote: foo.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for foo.tar.gz.
226 Transfer complete.
10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec)

put 命令的工作方式与 get 命令相同,因此您可以使用 mput 同时上传多个文件。您还可以通过指定远程文件名和/或路径名作为参数,以不同的文件名在服务器上上传本地文件。

如果您尝试上传文件 foo.tar.gz 时,该文件不在您当前的本地目录中怎么办?您可以使用 lcd(local change directory,本地更改目录)命令切换本地目录

ftp> lcd /home/foo/
Local directory now /home/foo

3.6 运行 shell 命令

ftp 客户端支持使用感叹号 (!) 运行本地命令。例如,要获取当前本地目录中的文件列表,请执行以下操作

ftp> !ls

其工作方式是 ftp 调用 shell(在 $SHELL 环境变量中指定),正是 shell 运行 ls。因此,您可以通过在任何适用于您的 shell 的命令行前面加上“!”来运行它(大多数 Linux 发行版中的默认 shell 是 bash,Bourne Again SHell)。请注意,!cd 不会像您预期的那样工作,这就是 lcd 命令存在的原因。

3.7 哈希标记和刻度线

如果您可以在使用 ftp 下载文件时观看进度,那不是很好吗?您可以使用 hash 命令在下载文件时打印出哈希标记

ftp> hash
Hash mark printing on (1024 bytes/hash mark).

正如您所见,ftp 将为每下载 1024 字节的数据打印一个哈希标记。

还有一个 tick 选项。

ftp> tick           
Tick counter printing on (10240 bytes/tick increment).

This will print something to this effect as you download a file:

Bytes transferred: 11680

3.8 其他 ftp 命令

还有许多其他 ftp 命令。如果您有权限这样做(如果您连接到您自己的私有 shell 帐户,您应该拥有权限),您可以使用 mkdir 命令在远程服务器上创建目录。您可以使用 delete 命令删除远程服务器上的文件,或使用 rmdir 删除目录。您还可以使用 chmod 命令更改文件权限。

有关使用 ftp 的更多详细信息,请参阅 ftp 程序中的在线帮助(键入 help,不带参数,以获取命令列表,或键入 help <commandname> 以获取有关特定命令的帮助)。您还可以通过在命令提示符下键入 man ftp 来阅读 Unix man page 中关于 ftp 的信息。


下一页 上一页 目录