树

我正在开发一个 API,其中我需要来自远程服务器的多个文件的路径。文件数量从 100 到 500 不等。这些文件位于不同的文件夹中。

因此,我一遍又一遍地循环,比如 10-50 次(取决于文件数量),然后使用我的 python api 中的 ssh 获取路径。

但我想要一个针对此问题的优化解决方案。目前,我正在按 loop 的次数多次建立 ssh 连接,这很慢,也不是最好的选择。

如果可能的话,我正在考虑/var/lib/mlocate/mlocate.db每天在本地机器上复制远程服务器,然后使用此数据库的命令查找路径。或者将远程目录索引存储在本地机器中,这样我就可以更快地进行查询。locate

还有哪些更好的方法可以实现这一目标?

答案1

它似乎tree可以非常快速地生成所有文件路径的列表。使用 SSH,在脚本上下文中,命令可能如下所示

ssh user@host "tree -if --noreport /your/base/directory" > /tmp/tree.output

-我有这个批量式输出而不是整齐的图形树
-F打印每行的完整路径前缀
--noreport切断最后两行sincetree附加一个空行和找到的文件/目录的摘要

输出结果如下

/var
/var/backups
/var/backups/alternatives.tar.0
/var/backups/alternatives.tar.1.gz
/var/backups/apt.extended_states.0
/var/backups/apt.extended_states.1.gz
/var/backups/apt.extended_states.2.gz
/var/backups/aptitude.pkgstates.0
/var/backups/dpkg.arch.0
/var/backups/dpkg.arch.1.gz

你可能想看看此处的手册页,查看如何使用-l等显示符号链接的一些选项


寻找

find也可以用于同样的目的

ssh user@host "find /your/base/directory" > /tmp/find.output

再次,你可能需要检查你是如何处理符号链接的在手册页中
find还可以根据文件类型、模式、深度等进行细化……


相关内容