如何确保通过SFTP上传的文件(在Linux基本系统中)在传输过程中保持锁定状态,以便自动系统无法读取?
客户端是否有选项?还是服务器端?
答案 0 :(得分:11)
SFTP协议支持从版本5开始锁定。请参阅specification。
您没有指定您使用的SFTP服务器。所以我假设最广泛的一个是OpenSSH。 OpenSSH仅支持SFTP版本3,因此它不支持锁定。
无论如何,即使您的服务器支持文件锁定,大多数SFTP客户端/库也不支持SFTP版本5.即使他们这样做,他们也不支持锁定功能。请注意,锁是显式的,客户端必须请求它。
这个问题有一些常见的解决方法:
答案 1 :(得分:8)
解决此问题的一种典型方法是上传您的真实文件,然后上传空的'done.txt'文件。
在尝试读取真实文件之前,自动系统应该等待“完成”文件的出现。
答案 2 :(得分:0)
SFTP的简单文件锁定机制是首先将文件上载到读取进程不的目录(文件夹)中。您可以使用sftp>“制作”备用文件夹。 mkdir命令。将文件上载到备用目录,而不是最终目标目录。一旦SFTP> put命令完成,然后像这样移动: SFTP> 移动alternate_path / filename destination_path / filename 。由于SFTP“move”只是切换文件指针,因此它是原子的,所以它是一个有效的锁。