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

如何用Bash脚本实现Windows与Linux文件传输及打包集成

远程Linux构建相关文件传输与打包问题解答

问题1:通过Bash脚本将文件从Windows复制到Linux

最常用的方式是借助scp(基于SSH的文件传输工具),前提是Windows机器已经开启OpenSSH Server(Windows 10及以上可在「设置-应用-可选功能」中安装)。

脚本示例

  • 复制单个文件:
# 在Bash环境(如Git Bash、WSL或Linux终端)中执行
scp /c/Users/你的用户名/路径/目标文件.txt linux用户名@Linux主机IP:/Linux上的目标路径/

Windows路径在类Unix Bash环境中可以用/c/替代C:\,避免路径转义问题。

  • 复制整个目录:
scp -r /c/Users/你的用户名/路径/目标目录/ linux用户名@Linux主机IP:/Linux上的目标路径/

自动化关键:免密登录

为了让脚本无需手动输入密码,需配置SSH免密:

  1. 在Windows的Bash环境中生成SSH密钥对:ssh-keygen -t rsa(一路回车采用默认设置)
  2. 将Windows的公钥(~/.ssh/id_rsa.pub内容)复制到Linux机器的~/.ssh/authorized_keys文件中
  3. 确保Linux上~/.ssh/目录权限为700,authorized_keys权限为600

如果需要增量复制文件,也可以用rsync,命令格式类似:

rsync -avz /c/Users/你的用户名/路径/目标文件.txt linux用户名@Linux主机IP:/Linux上的目标路径/

问题2:在Linux的sh脚本中从Windows获取文件并纳入tgz包

核心思路是先把Windows上的文件拉取到Linux本地临时目录,再和编译产物一起打包,最后清理临时文件。

脚本片段示例

假设你的POST_BUILD脚本原本仅打包编译产物,修改后如下:

#!/bin/bash

# 1. 创建临时目录存放从Windows拉取的文件
TEMP_DIR="/tmp/windows_import_files"
mkdir -p "$TEMP_DIR"

# 2. 从Windows拉取需要的文件(需Windows开启SSH服务并配置免密)
scp windows用户名@Windows主机IP:/c/Users/你的用户名/路径/需要的文件* "$TEMP_DIR/"

# 3. 打包编译产物+Windows拉取的文件
tar czf 最终包名.tgz /path/to/编译产物目录/ "$TEMP_DIR/"

# 4. 清理临时目录(可选)
rm -rf "$TEMP_DIR"

注意事项

  • 确保Linux机器能访问Windows的SSH端口(默认22),防火墙需放行对应端口
  • Windows路径在scp命令中可以用C:/Users/...或转义反斜杠C:\\Users\\...,推荐用正斜杠避免转义麻烦
  • 拉取文件时可以用通配符(如*.dll、*.config)批量获取所需文件

内容的提问来源于stack exchange,提问作者Tal V.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:33:31