如何验证SFTP上传是否已完成

时间:2013-12-27 13:35:36

标签: bash sftp

我正在使用bash脚本通过Sftp将文件上传到目标服务器。

如果我确定上传的文件是完整上传的,sftp将不会返回任何内容或网络连接可能被破坏?

我发现在上传到服务器之前我可以获取文件的大小,然后我可以将它与服务器上文件的现有大小进行比较。

也许您可以提及其他更好的选择?

谢谢。

3 个答案:

答案 0 :(得分:0)

许多下载软件的网站都会提供软件及其校验和。

我们可以使用相同的技术来检查我们的上传文件 上传文件及其校验和,在服务器端将文件的校验和与上传的校验和进行比较, 如果两者不匹配,你就会知道

  1. 上传的文件已损坏,或
  2. 上传的校验和已损坏,或
  3. 上传的校验和和文件都已损坏。

答案 1 :(得分:0)

我认为获得尺寸是一个不错的选择。 我能想象的是什么:

客户方:   - 将文件的大小及其md5放在一个文件中,如“.fileinfo”   - 将fileinfo发送到服务器   - 将(有趣的)文件发送到服务器

服务器端:   - 定期检查文件夹的文件(例如“watch ls”命令)   - 如果存在“.fileinfo”,请读取它,并检查大小是否对应于同名的现有文件(不带“.filefome”)。如果大小对应,请执行文件的“md5sum”,并检查它是否对应。如果是,请将文件移动到最终目标文件夹,然后删除“.fileinfo”文件。如果不重申。

答案 2 :(得分:0)

测试sftp的退出代码。如果它返回0,您可以非常确定一切正常(假设您使用的是OpenSSH sftp)。这仅适用于使用-b开关(我假设您正在做的事情)。

SFTP协议允许checksum calculation,但我认为你不熟悉不支持OpenSSH(或任何一方或双方)。

要100%确定,您可以将文件下载并与原始文件进行比较。