技术· 6 分钟阅读

服务器codex装不上怎么办

传了一半的安装包,scp说断就断,从头再来?不存在的。

起因

前几天要在服务器上装一个 VS Code 插件的 VSIX 包。服务器网络环境特殊,没法直接访问外网,于是我先通过 SSH 反向代理把服务器的流量接到本地梯子上。代理是通了,可下载进度条纹丝不动,一看速度——100KB/s 左右晃悠,一个几百兆的文件要传到天荒地老。

放弃直连下载,回归经典古法:本地先把包下好,再 scp 到服务器上。

scp openai.chatgpt-latest.vsix ajifang@183.222.164.28:/tmp/

速度虽然不快,但好歹在跑。眼看着传到 90% 多,网络一个抖动,连接断了。报错 Broken pipe,紧接着 Connection reset

没事,重来。

又传到 80%,又断了。

再重来。

第三次断在 99% 的时候,我盯着终端沉默了半分钟。

scp 的硬伤

scp 不支持断点续传,这是它的设计决定的。传输一旦中断,服务器上已经收到的那部分数据直接作废,下次传必须从零开始。网络稳定的时候这不是问题,可一旦遇到大文件或者烂网络,scp 就是个定时炸弹。

sftp 的解法

翻了一圈资料,发现 Windows 自带的 sftp 命令就能解决这个问题,不需要装任何额外软件。

登录方式和 SSH 一样:

sftp ajifang@183.222.164.28

进入 sftp 交互界面后,先切到目标目录:

cd /tmp

然后用 put 命令上传:

put E:/downloads/openai.chatgpt-latest.vsix

如果传到一半又断了,重新连上 sftp,这次换一个命令:

reput E:/downloads/openai.chatgpt-latest.vsix

reput 会检查服务器上已经传了多少字节,只传剩下的部分。就这么简单。

为什么不装 WinSCP

WinSCP 当然更好用,图形界面拖拽上传,自带断点续传,稳定性没得说。但当时手头只有 PowerShell,不想折腾安装流程,sftp 一行 reput 就把问题解决了,何乐而不为。

如果你经常需要传大文件,WinSCP 确实值得装一个,一劳永逸。

评论

发表评论

0/1000 字符

评论将在审核后显示。请勿提交恶意内容。

暂无评论,来抢沙发吧!