如何使用 SSH 将文件夹从本地计算机正确复制到服务器?为什么 scp 命令会出错?

And*_*ili 6 linux ssh scp putty mobaxterm

我使用名为MobaXterm的工具通过SSH登录到我的 Web 服务器(它有点像 Putty,但具有高级功能,这并不重要......)

我的问题是我想将本地计算机 (Windows) 中的目录发送到该服务器 (Linux) 的特定目录。

所以我尝试使用scp命令,如下所示:http : //www.hypexr.org/linux_scp_help.php

我是这样做的:

-jailshell-4.1$ scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

ssh: Could not resolve hostname C: Name or service not known
Run Code Online (Sandbox Code Playgroud)

但是,正如你所看到的,我得到了一个错误。

为什么?我错过了什么?我该如何解决这个问题?

Tnx

Arg*_*uts 6

大概您是在本地 MobaXterm shell(即 Windows 机器本地)中运行它的。如果是这种情况,您需要更新 scp 命令语法以适应该环境,尽管无论如何语法都不正确。

MobaXterm 通过 mountpoint 提供对其外壳中本地驱动器的访问/drives/X,其中 X 是 Windows 驱动器号。

此外,无论环境如何,scp 的(简化的)通用语法是:

scp 用法:

scp [[user@]host1:]/path[/filename] [[user@]host2:]/path/[filename]
Run Code Online (Sandbox Code Playgroud)

第一个序列 ( [[user@]host1:]/path[/filename]) 是“FROM”部分;要复制的文件或文件的来源。第二个是“TO”;目的地。括号表示可选参数。

它实际上只是标准 cp 命令的启用 ssh 的版本;:包含 ssh 特定信息之前的部分,以及与 cp 操作有关的信息。

用户:

user 默认为您当前的本地用户名 - 如果源和目标中的用户名都是正确的,则可以省略它。

主持人:

host默认为本地计算机(localhost);因此,如果您要从本地计算机复制到/从本地计算机复制,并且要使用的 localhost 上的用户名是当前用户,则可以省略本地文件的该参数。

文件路径:

path/filename默认为指定的用户主目录,如果需要,可以省略。在按照您的情况进行递归复制时,文件名可以省略 - 在这种情况下只需提供路径。通常,完整路径和文件名在 FROM 部分中指定,而在 TO 部分中仅指定路径(默认情况下保持相同的文件名)。

我使用remoteuserandremotePC作为用户名和远程 PC 主机名;替换为正确的名称。

示例中的正确语法:

 scp -r "/drives/C/Users/Andrea/Documents/Betrivius/candycane-0.9.6/candycane" remoteuser@remotePC:/home6/XXX/public_html
Run Code Online (Sandbox Code Playgroud)

使用命令man scp此站点获取其他详细信息(参数、其他使用信息)。

图形用户界面选项

或者,MobaXterm 提供图形文件浏览器(基于配置选项构建在 sftp 或 scp 上),当您通过 ssh 连接到远程主机时,它提供拖放双向文件传输。详情请看这里


小智 1

除非该 Web 服务器有办法直接连接到您的 Windows 计算机(在端口 22 上,这将需要运行 SSH 守护程序以及转发端口),否则您将需要从 Windows 端调用 SCP。MobaXTerm 是一个 ssh 客户端,我不确定它是否内置了 SCP(我个人不使用它),但这里最好的解决方案是使用 SCP 客户端,无论是命令行客户端还是 GUI 客户端。

WinSCP是一个相当流行的 Windows 客户端,当我别无选择只能使用 Windows 时,它是我的首选客户端。