我正在与 SFTP 服务器交互,该服务器在下载文件后会删除文件。为了防止数据丢失,我需要读取文件,将其放在持久存储上,然后关闭连接以表明我已收到它。对我来说不明显的是如果我不能安全地存储文件会发生什么。有没有办法以语义上指示“我正在关闭连接但它失败”的方式关闭连接?我在 RFC 中找到的只是一条 SSH_FXP_CLOSE 消息,它似乎只表示传输成功。所有其他错误消息类型似乎仅在服务器向客户端返回响应时使用,而不是相反。
问问题
740 次
1 回答
0
您不能向 SFTP 服务器发出错误信号,这不是 SFTP 的用途。
对于您的特定情况,只需关闭 SFTP 连接而不显式关闭文件(不发送SSH_FXP_CLOSE
)可能会向服务器表明出现问题。
尽管它确实取决于您的服务器实现,但它认为是什么错误。SFTP 服务器的文档应描述触发删除的内容。
在 SFTP 中,没有什么能比得上“下载”操作(与 FTPRETR
命令相反)。只有琐碎的文件操作,如打开文件(用于读取或写入)、读取文件片段、关闭文件。所以并不是“下载后服务器删除文件”那么简单。例如,该规则可以说“服务器在先前打开读取文件后关闭文件后删除文件”或类似的东西。
于 2015-06-05T06:13:20.290 回答