You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BASH循环中将Linux服务器文件复制到本地Windows机器

解决Linux到Windows跨机器文件复制的路径问题

核心问题

你使用的cp命令仅能操作Linux本地文件系统,无法直接访问Windows的外接硬盘路径。之前的命令都将Windows路径当作Linux本地目录名称来创建,导致文件被错误保存到了服务器本地。

正确解决方案

方案1:在Linux服务器用scp推送文件(需Windows开启OpenSSH服务)

先确保Windows已安装并开启OpenSSH服务器,然后执行以下循环命令:

while read name; do
  scp -R "/home/me/folder/${name}/folder_to_copy" "你的Windows用户名@WindowsIP:/E/me/${name}/"
done < /home/me/names_list.txt
  • 注意:Windows路径要将\替换为/,盘符后直接跟/(比如E:\me写成/E/me)。

方案2:在本地Windows用pscp拉取文件(推荐)

使用Putty配套的pscp工具(一般随Putty安装),在Windows命令提示符或PowerShell中执行:

# 单次执行写法
for /f "delims=" %n in (C:\你存放names_list.txt的路径\names_list.txt) do pscp -R 你的Linux用户名@LinuxIP:/home/me/folder/%n/folder_to_copy E:\me\%n\

# 批处理文件写法(将%n改为%%n)
for /f "delims=" %%n in (C:\你存放names_list.txt的路径\names_list.txt) do pscp -R 你的Linux用户名@LinuxIP:/home/me/folder/%%n/folder_to_copy E:\me\%%n\

这种方式无需在Windows开启SSH服务,直接在本地环境处理路径,更不易出错。

错误原因说明

  • 第一个命令中的E:\me\'$name'\':Linux会将\视为转义字符,无法识别Windows盘符路径,最终将整个字符串当作本地文件夹名称创建。
  • 第二个命令中的myUsername@myIP:\E:\me\'$name'\':同样被Linux解析为本地文件夹名称,导致文件错误保存到服务器目录。

内容的提问来源于stack exchange,提问作者LT17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:28