百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

ahcoder 2025-03-24 13:27 37 浏览

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

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

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

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

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

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

scp 将被弃用,尽管如此,它仍然是我最喜欢的通过 SSH 在系统之间传输文件的工具。

为什么?

因为它的语法类似于 cp 命令。

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

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

假如您想将文件从远程 Linux 系统复制到当前登录的系统。

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

scp username@ip_address:/home/username/filename .

你看到与 cp 命令的相似之处了吗?

除了必须用冒号 (:) 指定用户名和 IP 地址外,几乎相同。

现在,让我向您展示这个命令的真实示例。

remote.txt在上面的示例中,我将文件从远程系统上的目录复制/home/abhishek/my_file到本地计算机的当前目录。

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

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

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

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

scp filename username@ip_address:/home/username

在上面的示例中,我将local.txt文件从当前目录复制到abhishek远程系统上用户的主目录。

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

也可以复制目录

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

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

scp -r source_dir username@ip_address:/home/username/target_dir

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

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

命令语法与 scp 相同,必须使用旧版本的 rsync,rsync -e ssh但现在不再如此。

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

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

rsync username@ip_address:/home/username/filename .

让我们以您在 scp 中看到的相同示例为例,我正在将文件remote.txt从/home/abhishek/my_file远程系统上的目录复制到本地机器的当前目录。

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

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

rsync filename username@ip_address:/home/username

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

用 rsync 复制目录怎么样?

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

rsync -r source_dir username@ip_address:/home/username/target_dir

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

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

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

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

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

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

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

sudo apt install sshfs

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

mkdir mount_dir

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

sshfs username@IP_address:path_to_dir mount_dir

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

cp local_file mount_dir

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

umount mount_dir

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

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

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

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

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

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

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

相关推荐

Java程序员必备的Linux命令速查表

Java程序员必备的Linux命令速查表在Java开发的世界里,Linux就像一位默默支持的幕后英雄。作为一名Java开发者,掌握一些基本的Linux命令,不仅能提高工作效率,还能让你在团队中显得格外...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux磁盘管理相关命令(linux磁盘管理常用命令)

磁盘的使用情况会直接影响系统的性能,因此我们经常会用到以下命令,主要围绕:fdisk:磁盘分区df:文件系统的磁盘空间占用情况du:文件目录的磁盘空间占用情况查看磁盘关系lsblk查看磁盘分区情况fd...

第四章 Linux常用shell命令-4.5.磁盘管理

主要介绍一下跟磁盘管理相关命令,有比较多的内容摘抄自网络,如有侵权,请及时联系我删除:显示目前在Linux系统上的文件系统磁盘使用情况统计:df创建和维护分区表的程序:fdisk将磁盘分区或镜像挂...

Linux新手必备:20个高效命令轻松掌握!

Linux基本命令使用指南在现代计算机操作系统中,Linux因其开放性、灵活性和强大的功能,广泛应用于服务器和开发环境中。作为技术人员,掌握Linux的基本命令是非常重要的。在本文中,我们将重点介绍2...

每日必学Linux命令:ls命令(linux命令详解之ls命令)

ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件...

Linux系统dev和proc目录详解(linux dev/sr0)

简介:Linux系统里的/dev和/proc目录那可是相当重要的系统文件。在Linux系统中,/dev目录专门用来存放设备文件。不光有设备文件,系统里还有好多特殊功能也是通过设备的形式...

Linux切换目录之cd命令(linux切换指定目录)

1.基本概念1.1命令作用当我们在Linux系统上工作时,做得相当多的一项任务就是在不同的目录之间进行切换,这时就需要用到cd命令了。cd是"changedirectory"的首...

Linux切换目录(cd命令)(linux如何切换到目录)

cd命令,是ChangeDirectory的缩写,用来切换工作目录。Linux命令按照来源方式,可分为两种,分别是Shell内置命令和外部命令。所谓Shell内置命令,就是Shel...

MongoDB数据库的快速部署和启动(mongodb的使用教程)

一、Mongodb介绍常见数据库介绍关系数据库RDBMS设计表结构,通过SQL语句进行操作。连表关系常见的关系型数据库:mysqloracle(商业)DB2(IBM)sqlserver(微软...

5分钟学会网络服务搭建,飞凌i.MX9352 + Linux 6.1实战示例

在“万物互联”的技术浪潮下,网络服务已成为连接物理世界与数字世界的核心纽带,它不仅赋予了终端设备“开口说话”的能力,更构建了智能设备的开发范式。本文就将以飞凌嵌入式OK-MX9352-C开发板(搭载了...

centos安装geoserver并配置开机启动

前提条件:服务器已经安装了java环境一、下载下载地址:http://geoserver.org/release/maintain/下载后文件名为:geoserver-2.19.3-bin.zip二、...

开机启动流程(开机流程图)

grubandbootCentos5,6的开机启动流程grubCentos7的开机启动流程Centos5,6的开机启动流程initrd/initramfs一般存储在/boot目录下,以.img...

Linux cron服务概述(crontab服务)

cron是Linux/Unix系统中一个非常重要的后台服务(守护进程),用于在预定的时间间隔自动执行命令或脚本。它使得自动化重复性任务成为可能,例如日志清理、数据备份、系统维护等。1.cron...

CentOS 8利用rc.local进行开机自启动的配置

CentOS8利用rc.local进行开机自启动的配置CentOS8linux系统是不建议使用rc.local进行开机自启动的,建议创建systemdservice。我们为了方便以后多一个配置...