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

如何从本地远程执行服务器脚本?解决SSH登录后命令中断问题

解决本地压缩文件传输至服务器后自动解压的问题

你当前脚本的问题在于:ssh user@server会启动交互式远程会话,后续的cd、rm等命令会在你退出远程会话后本地执行,完全达不到远程操作的目的。要让命令在服务器端执行,需要把这些远程操作命令作为参数传递给ssh,让它批量远程执行,而非进入交互模式。

修改后的完整脚本

# 本地压缩目标文件夹
tar -czvf targetfolder.tar.gz targetfolder
echo "zipped targetfolder; moving to server"
# 将压缩包传输至服务器用户主目录
scp targetfolder.tar.gz user@server:
# 远程执行服务器端的一系列操作
ssh user@server '
cd ~/targetfolderonserver && \
rm -rf targetfolder && \
mv ~/targetfolder.tar.gz ./ && \
tar -xf targetfolder.tar.gz
'
# 可选:传输完成后删除本地压缩包
# rm targetfolder.tar.gz

关键说明

  • 用单引号包裹所有远程命令,确保本地Shell不会解析命令中的特殊字符(如~、变量),直接完整传递给远程服务器执行。
  • 用&&连接每个命令,保证前一个命令执行成功后才会执行下一个,避免某一步出错后后续操作继续执行引发问题。

更高效的优化方案(无需本地生成压缩包)

可以通过管道直接在传输过程中完成压缩和解压,节省本地磁盘空间和传输时间:

echo "Transferring and extracting targetfolder to server"
tar -czf - targetfolder | ssh user@server '
cd ~/targetfolderonserver && \
rm -rf targetfolder && \
tar -xzf -
'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:55:12