SFTP文件locking机制

如何确保通过SFTP上传的文件(在Linux基础系统中)在传输过程中保持locking状态,以便自动化系统不会读取它?

客户端有没有选项? 还是服务器端?

从版本5开始,SFTP协议支持locking。请参阅规范 。

你没有指定,你使用的是什么SFTP服务器。 所以我假设是最广泛的OpenSSH。 OpenSSH只支持SFTP版本3,所以不支持locking。

无论如何,即使您的服务器支持文件locking,大多数SFTP客户端/库将不支持SFTP版本5.即使他们这样做,他们也不会支持lockingfunction。 请注意,锁是显式的,客户端必须要求它。

这个问题有一些常见的解决方法:

  • 根据@ user1717259的build议,上传完成后,客户端可以上传“完成”文件。 让您的自动化系统等待“完成”文件出现。
  • 你可以有一个专门的“上传”文件夹,让客户端(primefaces)将上传的文件移动到“完成”文件夹。 只让您的自动系统看起来“完成”文件夹。
  • 对正在上传的文件(“.filepart”)有一个文件命名约定,并让客户端(自动)在上传到最终名称后重命名该文件。 让你的自动化系统忽略“.filepart”文件。
    请参阅(我的)文章上传时locking文件/上传到临时文件名称 ,例如实施此方法。

解决这个问题的典型方法是上传你的真实文件,然后上传一个空的“done.txt”文件。

在尝试读取真实文件之前,自动化系统应等待“完成”文件的出现。