fs-hasher工具介绍

工具列表

 hf-stat  hf-simdex  fs-hasher

hf-stat工具

使用方法

-f参数为例

Usage: ./hf-stat -f hashfile 

参数用途

-f : 显示.hash.anon文件中存储的文件信息列表
Screen Shot 2017-05-11 at 7.18.30 P

-h : 显示哈希文件中各文件的数据块的信息:数据块哈希值(Chunk Hash)、数据块的长度(Chunk Size)、压缩率(Compression Ratio)
Screen Shot 2017-05-11 at 7.23.16 P

-w : 显示所包含的文件哈希(File Hash)和相应的文件路径(File Path)
Screen Shot 2017-05-11 at 7.25.12 P

-t : 显示.hash.anon文件的总体信息
Screen Shot 2017-05-11 at 7.26.49 P

hf-simdex

使用方法:

Usage: ./hf-simdex [-i <list|rbtree>] [-s <hash>] hashfile ...

参数用途

-i : 指定操作方法,默认值为rbtree

若添加参数为rbtree,效果如下,效果看上去非常像hf-stat -t的效果,但多出了重复数据块的统计信息。

Screen Shot 2017-05-11 at 7.50.10 P

添加参数为list,效果与rbtree相同,多输出了中间过程,但运行速度明显较rbtree慢10倍以上。
Screen Shot 2017-05-11 at 7.53.34 P

-s : 从统计中剔除指定的hash值对应的数据块。

Screen Shot 2017-05-11 at 8.02.36 P

示例中选择剔除了hash值为e3:79:72:7f:1a:a0的数据块,可以看到数据块总数从1069738减少到了1069737,由于剔除的数据块没有重复出现,因此重复数据块统计结果未变。对比结果如下所示:

Untitled

fs-hasher

使用方法

Usage: ./fs-hasher [-mdqMeb] -p <path> {-c <fixed|variable> [-C <chunking options>] -h <murmur> -z <none|zlib-def>  -o <hashfile> | -F <configfile>}

必须使用参数包括-p,-c,-h,-z,-o;最简单的使用方法如下所示:
Screen Shot 2017-05-14 at 12.22.15 A

参数用途

基本参数

-p : 指定要处理的文件目录,相对路径、绝对路径均可。

-c : 设置分块选项,有两个参数:fixed、variabe。使用方法为:-c fixed 或 -c variable

当使用-c fixed时,可以通过附加-C参数设定属性:
csize=<csize>
tails=<on|off>
用法如下所示:

-C csize=xxx tails=on 或 tails=off

tails开启时,对相同文件目录经行处理时结果如下:
Screen Shot 2017-05-16 at 11.16.08 P
tails关闭时,对相同文件目录经行处理时结果如下:
Screen Shot 2017-05-16 at 11.16.19 P

其中tails=off时处理的数据块较少。

当使用-c varibale时,可以通过附加-C参数设定属性:
[:algo=<random|simple|rabin]
[:win_size=<window size>]
[:match_bits=<no of bits to check in the fingerprint>]
[:pattern=<pattern of bits to match>]
[:min_csize=<csize>][:max_csize=<csize>]
[:tails=<on|off>]

使用方法与fixed中-C参数的使用方法一致。

-h : 指定hash方法,观察了一下貌似只支持murmurhash。

-z : 指定生成文件的压缩方法,可选择不进行压缩(none)或者zlib-def压缩。

-o : 指定所要生成的hash文件的路径、文件名。

其他参数

-m : 忽律所有挂载在指定的路径下的文件。

-d : 输出调试信息,效果如下所示,会以[DBG]开头输出。
Screen Shot 2017-05-14 at 1.02.25 A

-q : 静默执行,避免输出执行过程,仅输出结果,效果如下所示:
Screen Shot 2017-05-14 at 1.04.10 A

-M : 使用mmap来读取文件

-e : 加入该参数会使得程序在读取文件失败后直接退出,若不添加该参数,程序将继续运行。

-b : 扫描块设别(默认会跳过)

block device是块设备 char devicej是字符设备;
I/O设备大致分为两类:块设备和字符设备。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。
  在大多数的UNIX操作系统中,块设备只支持以块为单位的访问方式,如磁盘等.KYLIN支持以字符方式来访问块设备,即支持以字符为单位来读写磁盘等块设备。所以在/dev目录中的块设备,如磁盘等,均以字符设备的外观出现。所以,字符设备和块设备的区别主要体现在KYLIN内核中的管理方式,操作方式和内核/设备驱动接口上。
  

-u : 输出帮助信息。

-F : 从设置文件中读取数据块和hash文件设置的相关信息。

在vim中使用%!xxd -c 12指令可以方便的查看.hash.anon文件。如下所示:

屏幕快照 2017-06-01 22.32.49

可以直观发现数据集中大量的全0Chunk。
屏幕快照 2017-06-01 22.33.09

可以看到FSL数据集的一些信息(linux版本等等)。
屏幕快照 2017-06-01 22.33.16

例如上图可以看到一份png图片文件的数据。

posted @ 2017-05-24 19:34  tino_ryj  阅读(904)  评论(0编辑  收藏  举报