如何在Linux上使用FTP命令

文件传输协议比我们的大多数阅读器都老,但它仍然很强大。FTP不具备现代协议的安全性,但无论如何您都可能需要使用它。下面是如何做到这一点的。

警告:请勿在Internet上使用FTP

让我们从一开始就明确这一点:文件传输协议(FTP)可以追溯到20世纪70年代初,它的编写完全没有考虑安全性。它不会对任何东西使用加密。登录凭据(如您的用户名和密码)以及您下载或上载的数据将以明文传输。一路上任何人都可以看到你的秘密。但是,FTP仍然有其用途。

如果您在您的网络内传输文件,您应该是安全的-只要网络上没有人在您传输它们时对任何敏感文档进行数据包嗅探和窃听。如果您的文件不是以任何方式保密或敏感的,使用FTP在您的内部网络中移动它们应该没有问题。Linux有标准的ftp命令行程序来精确处理这种情况。

但绝对不要使用ftp命令通过互联网访问外部资源。为此,请使用sftp命令行程序,该程序使用安全SSH文件传输协议。在本教程中,我们将介绍这两个程序。

为了澄清为什么你从来不想在互联网上使用FTP,看看下面的屏幕截图。它以明文形式显示FTP密码。在您的网络上或您与Internet上的FTP服务器之间的任何人都可以很容易地看到密码是“MySecretPassword”。

如果没有加密,恶意攻击者也可以在传输过程中修改您正在下载或上传的文件。

ftp命令

假设您在FTP站点上有一个有效的帐户,您可以使用以下命令连接到该帐户。在本文中,请将命令中的IP地址替换为您要连接的FTP服务器的IP地址。

ftp  192.168.4.25

警告:您应该只使用ftp命令连接到受信任的本地网络上的服务器。使用下面介绍的sftp命令通过Internet传输文件。

FTP服务器使用欢迎消息进行响应。问候语的措辞因服务器而异。然后,它会询问您正在登录的帐户的用户名。

请注意,将显示您要连接的站点的IP地址,后跟您的Linux用户名。如果您在FTP服务器上的帐户名与您的Linux用户名相同,只需按Enter键即可。这将使用您的Linux用户名作为FTP服务器上的帐户名。如果您的Linux用户名和FTP帐户名不同,请键入FTP帐户用户名,然后按Enter键。

登录到FTP服务器

系统将提示您输入FTP站点的密码。输入您的密码,然后按Enter键。您的密码不会显示在屏幕上。如果FTP服务器验证了您的FTP用户帐户名和密码组合,则您将登录到FTP服务器。

您将看到ftp>提示符。

查看和检索文件

首先,您可能希望获得FTP服务器上的文件列表。ls命令就是这样做的。我们的用户看到文件gc.c在FTP服务器上,他希望将其下载到自己的计算机上。他的计算机是FTP术语中的“本地计算机”。

检索(或“获取”)文件的命令是get。因此,我们的用户发出命令get gc.c。他们键入get、空格,然后输入要检索的文件名。

FTP服务器通过将文件传输到本地计算机并确认传输已发生来做出响应。还会显示文件的大小和传输所需的时间。

lsget gc.c

要一次检索多个文件,请使用dmget(Multiple Get)命令。mget命令将要求您确认是否要依次下载每个文件。按“y”表示是,按“n”表示否。

对于大量的文件来说,这将是乏味的。因此,相关文件的集合通常作为单个tar.gz或tar.bz2文件存储在ftp站点上。

相关:如何在Linux上从.tar.gz或.tar.bz2文件中提取文件

mget *.c

将文件上载到FTP服务器

根据已授予您的FTP帐户的权限,您可能能够将文件上载(或“上传”)到服务器。要上传文件,请使用PUT命令。在我们的示例中,用户将一个名为Songs.tar.gz的文件上传到FTP服务器。

put Songs.tar.gz

正如您可能预期的那样,有一个命令可以一次将多个文件放到FTP服务器上。它被称为mput(多个放置)。与mget命令一样,mput将逐个要求确认上传每个文件的“y”或“n”。

将文件集放入tar存档的论点同样适用于放入文件,就像获取文件一样。我们的用户正在使用以下命令上传多个“.odt”文件:

mput *.odt

创建和更改目录

如果ftp服务器上的用户帐户允许,您可以创建目录。执行此操作的命令是mkdir。需要说明的是,您使用mkdir命令创建的任何目录都将在ftp服务器上创建,而不是在本地计算机上创建。

要更改ftp服务器上的目录,请使用cd命令。使用cd命令时,ftp>提示符不会更改以反映新的当前目录。pwd(打印工作目录)命令将显示您的当前目录。

我们的ftp用户创建一个名为MUSIC的目录,切换到该新目录,使用pwd命令确认它们所在的位置,然后将文件上传到该目录。

mkdir musiccd musicpwdput songs.tar.gz

要快速移动到当前目录的父目录,请使用cdup命令。

cdup

访问本地计算机

要更改本地计算机上的目录,您可以在ftp>提示符下使用lcd命令。但是,很容易忘记您在本地文件系统中的位置。访问本地文件系统的一种更方便的方法是使用!指挥。

那!命令将打开本地计算机的shell窗口。您可以在此shell中执行在标准终端窗口中可以执行的任何操作。当您键入exit时,您将返回到ftp>提示符。

我们的用户已经使用了!命令并进入本地计算机上的shell窗口。他们发出了ls命令来查看该目录中存在哪些文件,然后键入exit返回到ftp>提示符。

!lsexit

重命名文件

要重命名FTP服务器上的文件,请使用rename命令。在这里,我们的FTP用户使用rename重命名一个文件,然后使用ls命令列出目录中的文件。

rename songs.tar.gz rock_songs.tar.gzls

删除文件

要删除FTP服务器上的文件,请使用delete命令。要一次删除多个文件,请使用mdelete命令。系统将要求您为删除每个文件提供“y”或“n”确认。

在这里,我们的FTP用户列出了文件以查看它们的名称,然后选择了一个要删除的文件。然后,他们决定将它们全部删除。

lsdelete gc.omdelete *.o

使用sftp命令

熟悉IP寻址系统的读者会注意到,上述示例中使用的ftp服务器的192.168地址是内部IP地址,也称为私有IP地址。正如我们在本文开头所警告的那样,ftp命令只能在内部网络上使用。

如果要连接到远程或公共FTP服务器,请使用sftp命令。我们的用户将连接到位于test.trebex.net的可公开访问的FTP服务器上名为demo的SFTP帐户。

当他们连接时,系统会通知他们连接已建立。他们还被告知无法验证主机的真实性。这对于第一次连接新主机是正常的。他们按“y”接受连接。

因为用户帐户名(Demo)是在命令行上传递的,所以不会提示他们输入用户帐户名。仅提示他们输入密码。这将被输入、验证和接受,并向他们显示sftp>提示符。

sftp demo@test.rebex.net

除了以下例外,我们上面描述的FTP命令在SFTP会话中的工作方式相同。

要删除文件,请使用RM(FTP使用DELETE)。 要删除多个文件,请使用rm(FTP使用mdelete)。 要移动到父目录,请使用cd。(FTP使用cdup)

我们的用户在他们的SFTP会话中使用了一些命令。他们使用ls列出文件,使用cd切换到pub目录。他们已经使用PWD打印了工作目录。

在Linux世界中还有其他传输文件的选择,特别是SCP(安全复制),但这里我们重点介绍FTP和SFTP。在适用的场景中使用这两个命令将很好地满足您和您的文件存储和检索需求。

相关文章