我确实有时间限制,想知道远程扫描文件系统的有效方法是什么(在极端情况下谈论5000万个文件)? 命令dir需要很长时间(大约20小时!!!)。
答案 0 :(得分:1)
在本地或远程服务器上构建查找表,定期更新,然后搜索。这就是locate
命令在Unix上的工作方式。如果您将查找表实现为散列,则更多,更快(O(1)),而不是每次需要搜索文件时遍历文件系统。您支付的价格是它只是与您上次索引文件系统时的最新版本。
答案 1 :(得分:1)
如果您正在阅读5000万个文件的内容,那么根据定义,您将被限制在以下三个方面中最低的一个:
如果您一次只做一个文件,可以通过并行化算法加快速度。假设它是最佳并行化的,那么您将受到以上其中一种的限制。
(1)只能通过扫描/读取较少的文件来解决。 (2)只能通过在远程主机上运行或减少需要扫描的文件来解决。 (3)只能通过增加CPU,分配工作和/或在远程系统上运行来解决。
减少工作量可以通过更改算法,更改要求,在适当时缓存结果或其某种组合的结果来完成。
答案 2 :(得分:1)
登录服务器,转储文件列表如:
linux: $ ls > list.txt
windows: dir /b > list.txt
使用您喜欢的压缩器压缩(远程)list.txt并将其下载到本地系统。
您可以创建一个脚本来自动完成任务。