Linux 上的 LFTP 教程和示例
Linux 上当然不乏 ftp 客户端:有些带有图形用户界面,例如 Filezilla,另一些是命令行应用程序,即使在显示服务器(例如 Xorg 或 Wayland)不可用时也可以使用。在本文中,我们讨论最常用且功能丰富的 CLI ftp 客户端之一:lftp。
在本教程中您将学习:
如何在最常用的 Linux 发行版上安装 lftp
如何连接远程主机并对其进行身份验证
如何创建、删除、编辑和列出书签
一些最常用的lftp命令
如何以非交互方式运行命令
如何使用lftp下载torrent文件
Linux 上的 LFTP 教程和示例
使用的软件要求和约定
安装
正如其手册页中所述,lftp 是一个复杂的文件传输程序,它允许使用各种协议(如 FTP、FTPS、SFTP、HTTP、HTTPS、BitTorrent 协议等)连接到远程主机。该程序是开源的,可在所有最常用的基于 Linux 的操作系统的存储库中找到;在 Debian 及其衍生产品(例如 Ubuntu 和 Linux Mint)上安装该应用程序只需运行以下命令:
$ sudo apt-get update && sudo apt-get install lftp
在最新版本的 Fedora 上,可以使用 dnf 包管理器安装该包,只需发出以下命令:
$ sudo dnf install lftp
如果 ArchLinux 是您的日常驱动程序,您可以使用 pacman 安装 lftp。该软件包可在“Extra”存储库中找到:
$ sudo pacman -S lftp
将软件安装到我们的系统上后,我们可以开始了解它的一些最有趣的功能。
连接到远程服务器
使用lftp时,我们基本上可以通过两种方式连接到远程主机。第一种方法是从 shell 调用应用程序并提供远程主机的 URL,第二种方法是在已经处于 lftp 提示符时使用 open
命令。
调用lftp时连接到远程主机
要在从 shell 调用 lftp 应用程序时连接到远程主机,我们所要做的就是提供远程计算机 URL,如以下示例所示:
$ lftp ftp://ftp.remotehost.com
启动命令后,如果与远程主机的连接成功,我们将看到lftp提示符,准备接受我们的命令(我们也可以通过调用不带任何选项或参数的应用程序来进入lftp提示符):
lftp ftp.remotehost.com:~>
此时,由于我们已经连接到远程主机,为了验证自己的身份,我们可以使用 login
别名或 user
命令(第一个只是一个内置命令)第二个的别名)。要执行身份验证,我们将 因此运行:
lftp ftp.remotehost.com:~> login ourusername ourpassword
如果未提供密码,将以交互方式询问:
lftp ftp.remotehost.com:~> login ourusername
Password:
最后,要实现完全非交互式身份验证,可以直接在我们传递给 lftp 进行连接的 URL 中提供登录凭据:
$ lftp ftp://ourusername:ourpassword@ftp.remotehost.com
在 lftp 提示符下连接到远程主机
要在使用lftp提示符时连接到远程主机,我们必须使用open
命令,该命令使用以下语法:
open [OPTIONS] site
要连接到我们在上一个示例中使用的同一台虚拟远程计算机,我们将运行:
lftp :~> open ftp://ftp.remotehost.com
open
命令,当像前面的例子一样使用时,只会将我们连接到远程主机,而不执行任何身份验证。但是,可以通过 --user
和 --password
选项提供登录信息。例如,要使用我们的凭据连接并登录到远程计算机,我们将运行:
lftp :~> open ftp://ftp.remotehost.com --user ourusername --password ourpassword
或者,我们可以提供登录信息作为 URL 的一部分,就像我们之前所做的那样:
lftp :~> open ftp://ourusername:ourpassword@ftp.remotehost.com
创建和管理书签
为了轻松访问远程主机并对其进行身份验证,而不必每次连接时都提供所需的所有信息,我们可以创建书签。为了完成此任务,我们可以在lftp提示符下使用bookmark
命令。该命令接受一系列子命令,让我们创建和操作书签;让我们看看它们是什么。
创建书签(添加子命令)
第一个子命令 add
让我们创建一个新书签。我们所需要提供的只是我们想要用于书签的名称和连接信息。例如,要为 ftp://ftp.remotehost.com 创建书签,其中包含登录信息,我们将运行:
lftp :~> bookmark remotehost ftp://ouruser:ourpassword@ftp.remotehost.com
如您所见,我们提供了用于远程计算机中身份验证的密码,作为与书签一起使用的 URL 的一部分。这里我们应该注意两件重要的事情:第一是默认情况下密码不存储在书签文件中(~/.local/share/lftp/bookmarks
或 ~/.lftp/bookmarks
)除非我们在应用程序配置文件中指定选项set bmk:save-passwords yes
(每用户设置存储在~/.lftprc
中)或~/.lftp/rc
文件,系统范围的配置文件是 /etc/lftp.conf
)。
第二件事要注意的是,密码以纯文本形式存储,如果我们正在使用的机器不可信,这可能会带来安全风险。
提供用于书签的 URL 并不总是必要的。如果我们已经连接到要为其创建书签的远程主机,我们只需调用 bookmark
命令并仅提供我们想要使用的书签名称:
lftp ouruser@ftp.remotehost.com:~> bookmark remotehost
要使用“remotehost”书签并连接到相应的远程主机,我们将运行:
$ lftp remotehost
或者,使用 open
命令:
lftp :~> open remotehost
删除书签(del 子命令)
删除书签非常简单:我们所要做的就是使用 del
子命令并提供我们要删除的书签的名称,例如:
lftp :~> bookmark del remotehost
编辑书签(edit 子命令)
要编辑书签,我们可以使用 edit
子命令。一旦我们运行它,包含书签的文件将在我们的默认文本编辑器中打开:
lftp :-> bookmark edit
我们所要做的就是进行适当的更改,然后像平常一样保存它们。当不在lftp提示符下时,也可以通过直接调用我们的编辑器来编辑书签文件(它只是一个文本文件,没什么晦涩的)。
列出书签(list 子命令)
要列出所有书签,我们所要做的就是使用 list
子命令。书签列表将显示在屏幕上,如果密码存储在其中,则将用 X
字符屏蔽:
lftp :-> bookmark list
remotehost ftp://ouruser:XXXX@ftp.remotehost.com/
Lftp 命令
到目前为止,我们只了解了如何使用 lftp 连接、验证和创建书签。现在让我们看看连接到远程服务器时可以使用的一些最有用的命令。要获取可用命令的完整列表,我们可以在 lftp 提示符下键入 help
并按 Enter 键:
lftp :~> help
列出远程目录的内容
当建立连接并且我们在远程服务器上进行身份验证时,我们可能要做的第一件事是列出远程工作目录的内容。要完成该任务,就像我们在本地执行的一样,我们可以使用 ls 命令:
lftp ouruser@ftp.remotehost.com:/> ls
dr-xr-xr-x 2 19304109 19304109 4096 Jul 7 2016 .
dr-xr-xr-x 2 19304109 19304109 4096 Jul 7 2016 ..
[...]
以同样的方式,要更改远程工作目录,我们可以使用 cd 命令。如果我们想运行这些命令的“本地”版本,列出本地工作目录的内容或更改它,该怎么办?我们所要做的就是在命令前加上 !
(感叹号):所有带有该前缀的命令都将被视为本地 shell 命令。在下面的示例中,我们列出了本地工作目录的内容:
lftp ouruser@ftp.remotehost.com:/> !ls
Desktop Documents Downloads Music Pictures Public Templates Videos
编辑远程文件
要编辑远程文件,我们可以使用 edit
命令。当我们这样做时,远程文件将被检索到本地计算机上的临时目录,并在默认文本编辑器中打开。内容更改并保存后, 文件会自动重新上传。
检索并上传文件和目录
要将远程文件检索到本地工作目录,我们可以使用 get
命令。在其基本用法中,我们提供远程文件位置和可选的保存文件的本地路径(默认情况下,文件将使用其基本名称保存)。要将远程 wp-config-sample.php
远程文件保存在本地,作为 sample.php
,我们将运行:
lftp ouruser@ftp.remotehost.com/> get wp-config-sample.php -o sample.php
通过重复相同的语法可以一次下载多个文件。
要执行相反的操作,例如将本地文件上传到远程主机,我们可以使用put
命令。基本上,我们提供要上传的本地文件的路径作为命令的参数。如果必须使用不同的名称远程保存文件,我们将其作为 -o
选项的参数提供,就像我们上面所做的那样。在下面的示例中,我们上传本地文件 wp-config-sample.php
,并将其保存在远程主机中作为 sample.php
:
lftp ouruser@ftp.remotehost.com/> put wp-config-sample.php -o sample.php
get
和 put
命令只能检索和上传常规文件:这意味着它们不适用于目录。如果我们想要下载或上传目录及其内容,我们必须使用mirror
命令`。顾名思义,该命令在本地计算机上创建远程目录的镜像,反之亦然。我们必须提供的只是源目标(默认情况下被视为远程目标),以及可选的目标目录(默认情况下为本地目标目录)。让我们看一个例子:
lftp ouruser@ftp.remotehost.com/> mirror -P 10 site local_backup
上面的命令将在本地计算机上创建 remote site
目录的镜像,并将其保存为 local_backup
。我们使用的 -P
选项是什么? -P
选项(--parallel
的缩写)接受一个整数作为参数,它是并行下载的最大文件数(一次下载一个文件)真的会很乏味!)。
要反转远程和本地目录,我们必须使用 -R
选项,即 --reverse
的缩写形式:此选项将创建反向镜像,因此传递给镜像命令的第一个参数被视为本地 目录,第二个作为远程目录。 可以使用显式地将文件包含在镜像中或从镜像中排除
分别是 -i
(--include
) 和 -x
(--exclude
) 选项。这两个选项都接受正则表达式作为参数:与该表达式匹配的所有文件名都将包含在镜像中或从镜像中排除。
还可以使用 -e
选项(--delete
的缩写)创建相同的镜像:目标上存在但源上不存在的文件将被删除。
非交互运行命令
到目前为止,我们已经了解了如何从lftp 提示符运行一些命令。如果我们想以完全非交互的方式运行它们怎么办?我们所要做的就是使用lftp -c
选项。使用此选项时,将执行作为参数传递的命令,然后 lftp 自动退出。命令必须分开 以分号。假设我们要连接到远程主机,并在本地创建 site
目录的镜像到名为 local_backup
的目录。我们会运行:
$ lftp -c "open ftp://ouruser:ourpassword@ftp.remotehost.com; mirror --parallel=10 site local_backup"
下载种子文件
Lftp 也可以用作 torrent 客户端。我们所要做的就是提供 torrent 文件的位置(可以是本地文件、URL 或磁铁链接)。默认情况下,检索到的文件存储在当前工作目录中,但可以通过 -O 选项指定不同的位置。例如,要通过 torrent 下载 Debian 稳定 ISO 在 ~/Download
目录中,我们将运行:
lftp :~> torrent https://cdimage.debian.org/debian-cd/current/amd64/bt-cd/debian-10.7.0-amd64-netinst.iso.torrent -O ~/Downloads
结论
在本教程中,我们学习了 lftp 应用程序的基本用法:我们了解了如何在一些最常用的 Linux 发行版上安装该应用程序、如何连接远程服务器并进行身份验证、如何创建书签以进行快速位置访问以及用于列出远程和本地目录的内容、编辑远程文件以及向远程主机上传和下载文件的命令。我们还了解了如何以非交互方式执行命令。最后我们看到了如何使用lftp 作为 torrent 客户端。如需完整列表 使用lftp时可以运行的功能和命令,请查阅其手册!