如何捕获SFTP命令执行输出以排查大文件上传的潜在错误
解决方法
sftp 交互模式下的 put 命令本身没有独立的日志输出参数,你可以通过以下两种方式捕获传输过程的所有输出和错误信息:
- 方式1:连接阶段开启调试并持久化日志
连接sftp时添加-v参数开启详细调试模式,同时通过shell的流重定向和tee命令,把所有会话输出(包含传输进度、错误栈、交互详情)同时输出到屏幕和本地日志文件:
进入交互界面后正常执行sftp -P portnumber -v user@ip 2>&1 | tee sftp_upload.logput file1.txt即可,后续如果传输中断,直接查看sftp_upload.log就能定位具体错误原因。 - 方式2:已进入sftp交互界面时临时开启调试输出
不需要断开重连,直接在sftp命令行输入verbose即可开启详细输出模式,所有操作的实时进度、报错信息都会直接打印在终端,再次输入verbose即可关闭调试模式。
大文件传输优化建议:你可以用
reput命令替代原生put命令,reput默认支持断点续传,若传输中断,下次执行时会从上次中断的位置继续上传,不需要重新传输整个数百GB的文件,大幅节省传输时间。
内容的提问来源于stack exchange,提问作者Rio
相关产品推荐
相关产品推荐

