【发布时间】:2021-05-27 15:09:05
【问题描述】:
我正在使用 bash 脚本通过 Sftp 将文件上传到目标服务器。
在 sftp 不返回任何内容或网络连接可能中断的情况下,如何确定上传的文件已完成上传?
我看到我可以在上传到服务器之前获取文件的大小,然后我可以将它与服务器上文件的现有大小进行比较。
也许您可以提及其他更好的选择?
谢谢。
【问题讨论】:
-
改用
scp,因为它提供了一个退出代码,可用于确定是否存在错误 -sftp没有。 -
@twalberg,谢谢,但我只能使用 Sftp。
-
OpenSSH
sftp在退出代码中也提供了错误指示。 -
@MartinPrikryl 在我目前使用的至少一个发行版中,
sftp的手册页没有提及退出代码。如果它确实提供了一个,它是基于运行的最后一个命令(即 cd 或 ls 或其他东西)还是基于最后一次传输,还是基于其他东西?我想也许我必须去代码潜水才能弄清楚。scp的退出条件至少记录在案... -
你说得对,它似乎没有记录在案。它仅在使用
-b开关时有效(批处理模式)。在批处理模式下,任何错误都会中止脚本并返回退出代码1。