私の目的は、変更について SFTP サーバーをポーリングすることです。私の最初の考えは、ディレクトリ内のファイルの数が変更されたかどうかを確認することです。次に、ディレクトリの変更を追加でチェックする場合があります。
現在、私は以下を使用しています:
try {
FileSystemOptions opts = new FileSystemOptions();
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 60000);
FileSystemManager manager = VFS.getManager();
FileObject remoteFile = manager.resolveFile(SFTP_URL, opts);
FileObject[] fileObjects = remoteFile.getChildren();
System.out.println(DateTime.now() + " --> total number of files: " + Objects.length);
for (FileObject fileObject : fileObjects) {
if (fileObject.getName().getBaseName().startsWith("zzzz")) {
System.out.println("found one: " + Object.getName().getBaseName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
これは apache commons vfs2 2.2.0 を使用しています。「問題なく」動作しますが、サーバーにファイルが多すぎると、カウントを取得するだけで数分以上かかります (現在、約 10,000 個のファイルがあるサーバーのカウントを取得するには 2 分以上かかります)。サーバー上のカウントやその他の変更をより速く取得する方法はありますか?