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