【问题标题】:ssh - getting metadata of many remote filesssh - 获取许多远程文件的元数据
【发布时间】:2013-07-01 11:22:48
【问题描述】:

我可以使用 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”,然后解析结果以从那里提取大小和时间戳,但后来我找到了this article...

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

【问题讨论】:

  • 每分钟对 100,000 个文件进行一次大查找似乎是不明智的。

标签: python ssh scalability finder


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多