如何使用 SSHJ 从 SFTP 服务器获取预先过滤的文件列表

How to get pre-filtered file list from SFTP server using SSHJ

我正在使用 SSHJ SFTP library 从 SFTP 服务器获取文件列表。 与服务器的连接速度很慢,目录中有数万个文件。经常获取文件列表会以各种超时/套接字错误结束。

是否有可能告诉客户端仅从例如检索文件列表。 “.zip”文件,以便对性能产生积极影响?伪命令:sftpClient.ls("*.zip")

我知道有一种方法 List<RemoteResourceInfo> net.schmizz.sshj.sftp.SFTPClient.ls(String path, RemoteResourceFilter filter) 可以过滤列表,但据我了解,过滤只会在客户端发生? IE。客户端仍会收到整个文件列表,然后会被过滤。

有什么方法可以实现这一点,以便服务器只 return 请求的名称? SFTP 协议甚至支持这个吗?

事实上,SFTP 协议无法提供符合任何条件的文件列表。没关系,你用的是什么SFTP库。

如果您需要过滤列表,则必须使用另一个 interface/API。如果您有 shell 访问权限,您可以使用 shell 命令 ls *.zip

或者构建您自己的(REST?)API。