一个高效的多处理目录漫游和搜索工具
fswalk的Python项目详细描述
F步行
一个高效的多处理目录漫游和搜索工具
简介
fswalk是一个简单的python脚本,它递归地遍历文件系统
用于收集文件元数据并将其收集到json文件中的目录或
一个Elasticsearch数据库。
它运行多个进程,每个进程负责执行文件列表
包含在子目录中。
收集的元数据是filename, path, uid, gid, size
和atime
。
输出要么是动态发送到stdout的json文件,要么是Elastisearch
索引。提供了一个简单的搜索选项来检索文件的所有者,
组或名称的一部分。在
脚本aslo提供了一个对结果进行快速分析的选项 输出文件。在
warning:当结果被发送到stdout时,由于多处理而不是
为了减慢速度,json文件会打印一个额外的,
符号,它可能会
中断json兼容性。
pyjson5
python库允许读取此类非标准json文件。在
安装
要求:
- python>;=3.5
- python包:requests、pyjson5、elasticsearch
安装当前稳定版本:
$ pip install fswalk
安装最新的devel快照:
^{pr2}$示例
开始使用8个进程进入/home/bzizou
目录,不包括
.snapshot
子目录,并将结果作为gzip压缩的json文件:
bzizou@f-dahu:~/git/fs_walk$ fswalk -p /home/bzizou -x '^/home/bzizou/\.snapshot/' -n 8 |gzip > /tmp/out.gz
分析结果文件的输出:
bzizou@f-dahu:~/git/fs_walk$ fswalk -a /tmp/out.gz
User Size Count
=================================================================
bzizou 2749804131 11125
root 1030651826 1351
1000 390705282 476
11610 726417 7
Group Size Count
=================================================================
realuser 2749795275 11119
root 1030660332 1356
1000 390705282 476
2222 726417 7
staff 350 1
TOTAL SIZE: 4171887656
TOTAL FILES: 12959
但我们把结果扫描到同一个目录中:
bzizou@f-dahu:~/git/fs_walk$ fswalk -p /home/bzizou -x '^/home/bzizou/\.snapshot/' -n 8 --elastic-host=http://localhost:9200 --elastic-index=fs_walk_home -g
搜索路径名中包含“povray”字符串且属于uid为10000的用户的所有文件:
bzizou@f-dahu:~/git/fs_walk$ fswalk --elastic-host=http://localhost:9200 --elastic-index=fs_walk_home --search="10000:*:povray:*"
/home/bzizou/povray/OAR.cigri.14068.1251218.stderr
/home/bzizou/povray/OAR.cigri.14068.1251220.stderr
/home/bzizou/povray/OAR.cigri.14068.1251224.stderr
/home/bzizou/povray/OAR.cigri.14068.1251231.stderr
/home/bzizou/povray/OAR.cigri.14068.1251231.stdout
/home/bzizou/povray/OAR.cigri.14068.1251233.stderr
/home/bzizou/povray/OAR.cigri.14068.1251233.stdout
/home/bzizou/povray/OAR.cigri.14068.1251234.stderr
/home/bzizou/povray/OAR.cigri.14068.1251234.stdout
/home/bzizou/povray/OAR.cigri.14068.1251237.stderr
/home/bzizou/povray/OAR.cigri.14068.1251237.stdout
/home/bzizou/povray/OAR.cigri.14068.1251238.stderr
使用
Usage: fswalk [options]
Options:
-h, --help show this help message and exit
-p PATH, --path=PATH Path to scan
-n NPROC, --nproc=NPROC
Number of process to launch
-x EXCLUDE_EXPR, --exclude=EXCLUDE_EXPR
Regular expression for path exclusion
-a ANALYZE_FILE, --analyze=ANALYZE_FILE
Creates a summary based on a previously generated json
file
-s SEARCH_STRING, --search=SEARCH_STRING
Search a subset of files with syntax:
[uid]:[gid]:[path_glob]:[hostname] (--analyze or
--elastic-host needed)
--numeric Output numeric uid/gid instead of names
--hostname=HOSTNAME Overwrite the value of the hostname string. Defaults
to local hostname.
-e ELASTIC_HOST, --elastic-host=ELASTIC_HOST
Use an elasticsearch server for output. 'Ex:
http://localhost:9200'
--elastic-index=ELASTIC_INDEX
Name of the elasticsearch index
--elastic-bulk-size=MAX_BULK_SIZE
Size of the elastic indexing bulks
-g, --elastic-purge-index
Purge the elasticsearch index before indexing
ANALYZE_FILE
参数可以是gzip压缩的json文件或纯文本json文件。在
- 项目
标签: