使用 PSCP 将文件和文件夹从 Windows 传输到 Linux
开源的 PSCP 程序可以轻松地在 Windows 和 Linux 计算机之间传输文件和文件夹。
pscp
185.220.101.11
直接Filezilla登录SSH，通过FTP on SSH传不好？
来自欧盟的 Firefox 91.0|Windows 10 用户
2022-11-10T13:08:47.000
开源的 PSCP 程序可以轻松地在 Windows 和 Linux 计算机之间传输文件和文件夹。
![](/data/attachment/album/202211/10/074452ys2lgjdqq8gaj8rg.jpg)



> 
> 开源的 PSCP 程序可以轻松地在 Windows 和 Linux 计算机之间传输文件和文件夹。
> 
> 
> 


你是否正在寻找一种将文件从 Windows 计算机快速传输到 Linux 计算机并再次传输回来的方法？开源的 PSCP 程序可以轻松传输文件和文件夹，当然它是开源的。


### 在 Windows 中设置 PATH


了解如何在 Windows 中设置命令路径可以更轻松地使用 PSCP 等方便的程序。如果你不熟悉该过程，请阅读 [如何在 Windows 上设置 PATH](https://opensource.com/article/22/10/set-path-powershell)。


### 使用 PSCP


PSCP（PuTTY 安全复制协议）是一个命令行工具，用于将文件和文件夹从 Windows 计算机传输到 Linux 计算机。


* 从 [网站](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 下载 `pscp.exe`。
* 将 `pscp.exe` 移动到 `PATH` 中的文件夹（例如，如果你按照 [Opensource.com](http://Opensource.com) 上的 PATH 教程进行操作，则为 `Desktop\App`）。如果你没有设置 `PATH` 变量，你也可以将 `pscp.exe` 移动到保存要传输的文件的文件夹中。
* 使用 Windows 任务栏中的搜索栏在 Windows 计算机上打开 Powershell（在搜索栏中输入 `powershell`。）
* 输入 `pscp -version` 以确认你的计算机可以找到该命令。


### IP 地址


在进行传输之前，你必须知道目标计算机的 IP 地址或完全限定域名。假设它是同一网络上的计算机，并且你没有运行 DNS 服务器来解析计算机名称，你可以在 Linux 机器上使用 `ip` 命令找到目标 IP 地址：



```
[linux]$ ip addr show |grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 192.168.1.23/24 brd 10.0.1.255 scope global noprefixroute eth0

```

在所有情况下，127.0.0.1 都是计算机仅用于与自身通信的环回地址，因此在此示例中，正确的地址是 192.168.1.23。在你的系统上，IP 地址可能不同。如果你不确定哪个是哪个，你可以连续尝试每个，直到找到正确的（然后在某处写下来！）


或者，你可以查看路由器的设置，其中列出了通过 DHCP 分配的所有地址。


### 防火墙和服务器


`pscp` 命令使用 OpenSSH 协议，因此你的 Linux 计算机必须运行 OpenSSH 服务器软件，并且防火墙必须允许 SSH 流量。


如果你不确定你的 Linux 机器是否正在运行 SSH，请在 Linux 机器上运行以下命令：



```
[linux]$ sudo systemctl enable --now sshd

```

要确保你的防火墙允许 SSH 流量，请运行以下命令：



```
[linux]$ sudo firewall-cmd --add-servicessh --permanent

```

有关 Linux 上的防火墙的更多信息，请阅读 [使用防火墙使 Linux 更强大](https://opensource.com/article/19/7/make-linux-stronger-firewalls)。


### 传输文件


在这个例子中，我有一个名为 `pscp-test.txt` 的文件，我想将它从我的 Windows 计算机上的 `C:\Users\paul\Documents` 传输到我的目标 Linux 计算机主目录 `/home/paul`。


现在你已经有了 `pscp` 命令和目标地址，你可以传输测试文件 `pscp-test.txt`。打开 Powershell 并使用 `dir` 命令切换到示例文件所在的 `Documents` 文件夹：



```
PS> dir %USERPROFILE%\Documents\

```

现在执行传输：



```
PS> pscp pscp-test.txt paul@192.168.1.23:/home/paul
| Password:
End of keyboard-interactive prompts from server
pscp-test.txt | 0 kb | 0.0 kB/s | ETA: 00:00:00 | 100%

```

这是语法，逐字逐句来：


* `pscp`：用于传输文件的命令。
* `pscp-test.txt` 是你要从 Windows 传输的文件的名称。
* `paul@192.168.1.23` 是我在 Linux 计算机上的用户名，以及 Linux 计算机的 IP 地址。你必须将其替换为你自己的用户和目的地信息。请注意，`pscp` 需要目标计算机上的目标路径，而 IP 地址末尾的 `:/home/paul` 指定我希望将文件复制到我的主文件夹。


对 Linux 计算机进行身份验证后，`pscp-test.txt` 文件将传输到 Linux 计算机。


### 验证已传输


在你的 Linux 计算机上，打开终端并使用 `ls` 命令验证文件 `pscp-test.txt` 是否出现在你的主目录中。



```
[linux]$ ls
Documents
Downloads
Music
Pictures
pscp-test.txt

```

### 从 Linux 系统复制文件


你不仅限于将文件复制到 Linux 系统。使用 `pscp`，你还可以将文件从 Linux 复制到 Windows。语法是一样的，只是反过来：



```
PS> pscp paul@192.168.1.23:/home/paul/pscp-test.txt %USERPROFILE%\Documents\pscp-win.txt

```

这是语法：


* `pscp`：用于传输文件的命令。
* `paul@192.168.1.23:/home/paul/pscp-test.txt` 是我在 Linux 计算机上的用户名、Linux 计算机的 IP 地址，以及我要复制的文件的路径。
* `%USERPROFILE%\Documents` 是我的 Windows 计算机上我要保存文件的位置。 请注意，在将文件复制回我的 Windows 计算机时，我可以给它一个新名称，例如 `pscp-win.txt`，以区别于原始文件。 当然，你不必重命名文件，但对于本演示来说，它是一个有用的快捷方式。


打开文件管理器以验证 `pscp-win.txt` 文件是否已从 Linux 计算机复制到 Windows `C:\Users\paul\Documents` 下。


![Image of a file manager.](/data/attachment/album/202211/10/074501j3lbc8ch4eseuvr6.png)


### 远程复制


借助开源 `pscp` 命令的强大功能，你可以访问家中的任何计算机、拥有帐户的服务器，甚至是移动设备和 [边缘设备](https://opensource.com/tags/edge-computing)。




---


via: <https://opensource.com/article/22/10/transfer-files-windows-linux-pscp>


作者：[Paul](https://opensource.com/users/plaubscher) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

