python - ssh - 获取许多远程文件的元数据

标签 python ssh scalability finder

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

我需要:

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

一些限制:

  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 命令的结果进行一些后处理

最佳答案

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

  1. 如果一段时间内没有获取数据,请使用您提供的 touch/find 脚本获取初始数据,并调用找到的文件以获取所需的属性
  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

关于python - ssh - 获取许多远程文件的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453600/

相关文章:

python - 为 Popen() 调用最小化了 CMD 窗口?

python - 无法写入文件,但可以写入文本

ssh - 使用lxc用户通过SSH连接到lxc容器

linux - 如何在 CentOS 中不设置帐户就授予访问权限

python - 在 python 中生成图形的高内存消耗

python - 在python中加载模块

linux - HDFS +在Linux远程计算机上运行hdfs命令

ruby - 如何使用 omniauth/oauth 对每秒登录数进行基准测试? ( ruby +rspec)

performance - 解决可扩展性

java - 可扩展的 http session 管理(java,linux)