1

有一个远程文件系统,我可以使用 ssh 访问它。

我需要:

  1. 扫描此文件系统以查找比给定日期时间新的所有文件。
  2. 检索这些文件的名称、大小和 modified_time_stamp 的列表

一些限制:

  1. 我无法将脚本上传到此远程服务器。我只能通过 ssh 运行命令
  2. 远程服务器中可能有超过 100k 的文件,这个过程应该至少每分钟发生一次,所以 ssh 调用的数量应该最少,最好等于 1

我已经设法得到(1)使用这个:

`touch -am -t {timestamp} /tmp/some_filename; find {path} -newer /tmp/some_filename; rm /tmp/some_filename')`

我想我可以朝着将结果管道传输到“xargs ls -l”的方向移动,然后解析结果以从那里提取大小和时间戳,但后来我发现了这篇文章......

另外,我正在使用 python 运行命令(即它不仅仅是一个命令行),所以可以对来自 ssh 命令的结果进行一些后期处理

4

1 回答 1

1

我建议在服务器端编写或修改您的 python 脚本,如下所示:

  1. 当一段时间没有获取数据时,使用您提供的触摸/查找脚本获取初始数据并调用找到的文件以获取所需的属性
  2. 然后,在服务器上的 python 脚本中,订阅 inotify() 数据以获取更新。
  3. 当远程连接并需要所有这些数据时,提供结合 1+2 的最新更新

inotify 是 Linux 中支持的系统调用,它允许您实时监视目录上的文件系统事件。

看:

https://serverfault.com/questions/30292/automatic-notification-of-new-or-changed-files-in-a-folder-or-share

http://linux.die.net/man/7/inotify

https://github.com/seb-m/pyinotify

于 2013-07-07T08:41:58.820 回答