【发布时间】:2018-02-19 01:27:43
【问题描述】:
我正在尝试使用 Python 找到一种更快的方法来筛选包含大约 9 个其他目录的大目录(大约 1.1TB)并在多个 linux 服务器上查找大于 200GB 或类似文件的文件,并且它必须是 Python。
我已经尝试过很多方法,例如使用脚本调用 du -h,但 du 太慢了,无法通过 1TB 大的目录。 我也尝试过 find ./ +200G 之类的 find 命令,但这也将永远持续下去。
我也尝试过 os.walk() 和 .getsize() 但这是同样的问题 - 太慢了。 所有这些方法都需要数小时和数小时,如果有人能够帮助我,我需要帮助找到另一种解决方案。因为我不仅要在一台服务器上搜索大文件,而且我必须通过近 300 台服务器进行 ssh 并输出所有大于 200GB 的文件的巨大列表,而且我尝试过的三种方法都不会能够做到这一点。 任何帮助表示赞赏,谢谢!
【问题讨论】:
-
不幸的是,没有办法这样做。例如,一个名为 Everything 的程序为您的整个驱动器编制索引,您可以根据过滤器对文件进行排序。即使是这个程序也找不到这种“快捷方式”。 Python 应该没有什么不同。使用不同的语言也不会改变任何东西,因为 os.walk 和 .getsize() 主要依赖于操作系统,并且主要运行非 Python 代码。
-
我不认为 python 会提高你的磁盘读取速度。我认为您正在寻找的是并行化,以便您可以同时检查每台服务器。那么总共应该只需要几个小时。
-
@RobertSeaman 我对并行化概念不是很熟悉,是否有任何信息链接可以发送给我?