通过 SSH 在远程和本地系统之间传输文件的 4 种方法

迟早,您会发现自己必须通过 SSH 将文件上传到远程服务器或从中复制文件。

您可以通过多种方式通过 SSH 传输文件。 我将在这里讨论以下方法:

  1. scp:已弃用的旧命令
  2. rsync:用于文件同步的流行命令
  3. sshfs:通过 SSH 挂载远程目录
  4. sftp 客户端:通过 SFTP 访问文件的 GUI 工具

要通过 SSH 成功传输文件,您需要

  • 在两台机器之间进行 SSH 访问
  • 知道远程机器上的用户名和密码
  • 远程机器的 IP 地址或主机名(在同一子网上)

除此之外,让我们看看通过 SSH 在远程系统之间复制文件的方法。

方法一:使用 scp 命令通过 SSH 复制文件

我读过 scp 将被弃用。 尽管如此,它仍然是我最喜欢的通过 SSH 在系统之间传输文件的工具。 为什么? 因为它的语法类似于 cp 命令。

让我们看看如何使用 scp 命令。

将文件从远程机器复制到本地机器

这是场景。 您想将文件从远程 Linux 系统复制到当前登录的系统。

这是一个通用语法,它将文件从远程系统上用户的主目录复制到本地登录系统的当前目录。

scp [email protected]_address:/home/username/filename .

你看到与 cp 命令的相似之处了吗? 除了必须用冒号 (:) 指定用户名和 IP 地址外,几乎相同。

现在,让我向你展示一个真实的世界 example 这个命令的。

在里面 example 上面,我复制了文件 remote.txt 来自 /home/abhishek/my_file 将远程系统上的目录复制到本地机器的当前目录。

这应该会提示您应该知道文件在远程系统上的确切位置。 选项卡完成在远程系统上不起作用。

将文件从本地机器复制到远程机器

通过 SSH 将文件复制到远程 Linux 系统

这里的场景略有改变。 在这一个中,您将使用 scp 通过 SSH 将本地文件发送到远程系统。

这是一种通用语法,它将文件名复制到远程系统上用户名的主目录。

scp filename [email protected]_address:/home/username
使用 scp 命令通过 SSH 将文件复制到远程 Linux 系统

在上述 example,我复制了 local.txt 文件从当前目录到用户的主目录 abhishek 在远程系统上。

然后我登录到远程系统以显示该文件实际上已被复制。

您也可以复制目录

还记得我告诉过你我喜欢 scp 因为它与 cp 命令相似吗?

与 cp 命令一样,您也可以使用 scp 通过 SSH 复制目录。 语法也类似于 cp 命令。 你只需要使用 -r 选项。

scp -r source_dir [email protected]_address:/home/username/target_dir

你可以用它做更多的事情。 在本教程中阅读更多 scp 命令示例:

方法 2:使用 rsync 通过 SSH 复制文件和目录

由于 scp 已被弃用,rsync 是通过 SSH 在远程系统之间复制文件的下一个最佳工具。 实际上,它在许多方面都比 scp 好。

命令语法与 scp 相同。 旧版本的 rsync 必须使用 rsync -e ssh 但现在已经不是这样了。

将文件从远程机器复制到本地机器

假设您要将文件从远程系统上用户的主目录复制到本地登录系统的当前目录。

rsync [email protected]_address:/home/username/filename .

让我们也一样 example 你用 scp 看到的。 我正在复制文件 remote.txt 来自 /home/abhishek/my_file 将远程系统上的目录复制到本地机器的当前目录。

使用 rsync 通过 SSH 从远程 Linux 系统复制文件

将文件从本地机器复制到远程机器

这是一个通用语法,它将文件复制到远程系统上用户名的主目录。

rsync filename [email protected]_address:/home/username

是时候看看真实的世界了 example. 我在复制 local.txt 文件从当前目录到用户的主目录 abhishek 在远程系统上。

使用 rsync 命令通过 SSH 将文件复制到远程 Linux 系统

用 rsync 复制目录怎么样?

一样的。 只需使用 -r 带有 rsync 的选项可通过 SSH 在远程系统之间复制整个目录。

rsync -r source_dir [email protected]_address:/home/username/target_dir

看看这个 example. 我将整个 my_file 目录从远程系统复制到本地系统。

使用 rsync 通过 SSH 从远程 Linux 系统复制目录

rsync 是一个多功能工具。 它本质上是一个用于在两个目录之间“递归同步”内容的工具,并且在进行自动备份方面非常流行。

方法 3:使用 SSHFS 通过 SSH 从远程系统访问文件

还有可用于访问远程文件和目录的 SSHFS(SSH 文件系统)。 但是,这对于复制文件并不是很方便。

在这种方法中,您将远程目录挂载到本地系统上。 挂载后,您可以在挂载目录和本地系统之间复制文件。

您可能需要先使用发行版的包管理器在本地系统上安装 sshfs。

在 Debian 和 Ubuntu 上,您可以使用以下命令:

sudo apt install sshfs

在系统上安装 sshfs 后,您可以使用它来挂载远程目录。 最好为挂载点创建一个专用目录。

mkdir mount_dir

现在以这种方式在远程机器上挂载所需的目录:

sshfs [email protected]_address:path_to_dir mount_dir

挂载后,您可以将文件复制到该目录或从该目录复制,就好像它在本地计算机上一样。

cp local_file mount_dir

请记住,您已安装此文件。 完成工作后,您还应该卸载它:

umount mount_dir

这是一个 example 我安装的地方 my_file 目录从远程系统到 remote_dir 本地系统上的目录。 我复制了 remote.txt 文件到本地系统,然后卸载目录。

使用 sshfs 通过 ssh 传输文件

方法 4:使用基于 GUI 的 SFTP 客户端在远程系统之间传输文件

作为最后的手段,您可以使用 FTP 客户端在远程和本地系统之间传输文件。

FileZilla 是最流行的跨平台 FTP 客户端之一。 您可以轻松地安装在本地系统上。

安装后,转到 文件->站点管理器 并添加远程系统详细信息,如 IP 地址、SSH 端口号、用户名和密码。

在 Filezilla 中使用 SFTP 连接到远程服务器

连接后,您可以看到一个拆分窗口视图,左侧显示本地文件系统,右侧显示远程文件系统。

使用 Filezilla 通过 sftp 在远程和本地 Linux 系统之间传输文件

要传输文件,请从左到右或从右到左拖放文件。 底部会出现一个进度条。

你更喜欢哪种方法?

好的! 我展示了可用于通过 SSH 复制文件的各种命令行和 GUI 方法。

现在由您决定在此处使用哪种方法。 请评论您首选的通过 SSH 传输文件的方法。