如何使用Linux FTP命令传输文件

时间:2020-03-05 15:27:35  来源:igfitidea点击:

FTP(文件传输协议)是用于在远程网络之间传输文件的标准网络协议。

在本教程中,我们将通过实际示例向我们展示如何使用Linux'ftp'命令。

在大多数情况下,我们将使用桌面FTP客户端连接到远程服务器并下载或者上传文件。
但是,当我们在没有GUI的服务器上工作并且想要通过FTP向远程服务器或者从远程服务器传输文件时,“ ftp”命令很有用。

在你开始之前

FTP通信未加密。
为了安全地传输数据,请使用SCP或者SFTP。

为了能够传输文件,我们必须至少具有对源文件的读取权限和对目标系统的写入权限。

传输大文件时,建议在屏幕或者tmux会话内运行ftp命令。

运行“ ftp”命令的目录是本地工作目录。

建立FTP连接

  • 要打开与远程系统的ftp连接,请调用“ ftp”命令,然后调用远程服务器的IP地址或者域名。例如,要连接到位于“ 192.168.42.77”的FTP服务器,我们可以输入:
ftp 192.168.42.77
  • 如果建立连接,将显示一条确认消息,并提示我们输入FTP用户名,在本示例中,FTP用户名是'theitroad':
220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------
220-You are user number 1 of 50 allowed.
220-Local time is now 21:35. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (192.168.42.77:localuser): theitroad
You Jan see a different confirmation message depending on the FTP service running on the remote server.
  • 输入用户名后,系统将提示我们输入密码:
Password:
  • 如果密码正确,则远程服务器将显示确认消息和“ ftp>”提示。
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

如果我们要访问的FTP服务器接受匿名FTP帐户,并且我们想以匿名用户身份登录,请使用“匿名”作为用户名,并使用电子邮件地址作为密码。

常见的FTP命令

大部分FTP命令与我们在Linux Shell提示符下键入的命令相似或者相同。

以下是一些最常见的FTP命令

  • “帮助”还是“?” -列出所有可用的FTP命令。
  • 'cd'-更改远程计算机上的目录。
  • 'lcd'-更改本地计算机上的目录。
  • 'ls'-列出当前远程目录中文件和目录的名称。
  • 'mkdir'-在当前远程目录中创建一个新目录。
  • 'pwd'-在远程计算机上打印当前的工作目录。
  • '删除'-删除当前远程目录中的文件。
  • 'rmdir'-删除当前远程目录中的目录。
  • 'get'-将一个文件从远程复制到本地计算机。
  • 'mget'-将多个文件从远程复制到本地计算机。
  • 'put'-将一个文件从本地复制到远程计算机。
  • 'mput'-将一个文件从本地复制到远程计算机。

使用“ ftp”命令下载文件

登录后,当前的工作目录就是远程用户的主目录。

当使用“ ftp”命令下载文件时,文件将被下载到我们键入“ ftp”命令的目录中。

如果要将文件下载到另一个本地目录,请使用“ lcd”命令切换到该目录。

假设我们要将文件下载到“~/ftp_downloads”目录中:

lcd ~/ftp_downloads

要从远程服务器下载单个文件,请使用“ get”命令。
例如,要下载名为“ backup.zip”的文件,可以使用以下命令:

get backup.zip

输出应如下所示:

200 PORT command successful
150-Connecting to port 60609
150 6516.9 kbytes to download
226-File successfully transferred
226 2.356 seconds (measured here), 2.70 Mbytes per second
6673256 bytes received in 2.55 seconds (2.49 Mbytes/s)

要一次下载多个文件,请使用“ mget”命令。
我们可以提供单个文件名的列表或者使用通配符:

mget backup1.zip backup2.zip

下载多个文件时,系统将提示我们确认每个文件。

mget backup1.zip? y
200 PORT command successful
150 Connecting to port 52231
226-File successfully transferred
226 0.000 seconds (measured here), 31.51 Kbytes per second
14 bytes received in 0.00058 seconds (23.6 kbytes/s)
mget backup2.zip? y
200 PORT command successful
150-Connecting to port 59179
150 7.2 kbytes to download
226-File successfully transferred
226 0.000 seconds (measured here), 16.68 Mbytes per second
7415 bytes received in 0.011 seconds (661 kbytes/s)

从远程FTP服务器下载文件后,请使用“ bye”或者“ quit”命令关闭连接:

quit
221-Goodbye. You uploaded 0 and downloaded 6544 kbytes.
221 Logout.

使用FTP命令上传文件

要将文件从本地目录上传到远程FTP服务器,请使用“ put”命令:

put image.jpg

输出应如下所示:

200 PORT command successful
150 Connecting to port 34583
226-File successfully transferred
226 0.849 seconds (measured here), 111.48 Kbytes per second
96936 bytes sent in 0.421 seconds (225 kbytes/s)

如果要上传不在当前工作目录中的文件,请使用该文件的绝对路径。

要将多个文件从本地目录上传到远程FTP服务器,请调用“ mput”命令:

mput image1.jpg image2.jpg
mput image1.jpg? y
200 PORT command successful
150 Connecting to port 41075
226-File successfully transferred
226 1.439 seconds (measured here), 102.89 Kbytes per second
151586 bytes sent in 1.07 seconds (138 kbytes/s)
mput image2.jpg? y
200 PORT command successful
150 Connecting to port 40759
226-File successfully transferred
226 1.727 seconds (measured here), 111.75 Kbytes per second
197565 bytes sent in 1.39 seconds (138 kbytes/s)

上载多个文件时,该命令将提示我们确认要上载的每个文件。

完成将文件上传到远程FTP服务器后,请使用'bye'或者'quit'关闭连接。