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

如何在Jenkins脚本化管道中跨Linux服务器复制node_js目录?

问题解决:Jenkins脚本化管道中scp复制整个目录的正确语法

你的错误出在scp选项的使用方式和参数位置上,具体原因:

  • -r(递归复制目录)是scp的核心选项,必须放在选项区域,不能和路径参数混放
  • StrictHostKeyChecking=no是ssh/scp的配置选项,需要用-o前缀声明,不能直接作为参数传递
  • 当你用/*展开目录内容时,子目录(如node_modules)会被当作单独的参数传递,没有-r的话scp无法处理目录复制

正确的两种写法

写法1:复制整个node_js目录到目标服务器

这种方式会在目标路径/home/ec2-user下生成完整的node_js目录:

stage('deploy to another server'){
    steps{
        sshagent(['SSHAgent']) {
            sh 'scp -r -o StrictHostKeyChecking=no /var/lib/jenkins/workspace/node_js ec2-user@54.83.76.126:/home/ec2-user'
        }
    }
}

写法2:复制node_js目录内的所有内容到目标目录

这种方式会把node_js下的所有文件、子目录直接放到/home/ec2-user目录下:

stage('deploy to another server'){
    steps{
        sshagent(['SSHAgent']) {
            sh 'scp -r -o StrictHostKeyChecking=no /var/lib/jenkins/workspace/node_js/* ec2-user@54.83.76.126:/home/ec2-user/'
        }
    }
}

关键修正点

  • 确保-r放在scp命令最前面的选项区,开启递归复制
  • 用-o前缀声明StrictHostKeyChecking=no选项,跳过主机密钥检查
  • 如果要复制目录内容,目标路径末尾加/可以明确告诉scp将内容放到该目录下(可选,但能避免歧义)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:36:03