如何使用 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。
我正在使用 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。