go-rdfind是一个用于寻找一个目录中是否存在内容完全相同的两个文件的工具。
本工具由沃航科技开发,用途是用于整理日益积累的项目资料。
当一个项目参与人员变多时,有些资料往往是人手一份,但是当项目结束,需要将数据备份时,容易出现同一份文件被多次备份,有些甚至是大文件。考虑到文件备份的高效性,沃航科技开发了这个软件用于专门清理内容完全一样的文件。
无论是windows平台还是linux平台,均存在类似工具,但是实际使用中发现,这些工具清理速度缓慢,而且已经很长时间没有被更新了。考虑到文件的重要性,因此公司才决定自己开发一套工具的。
本软件考虑到需求上数据IO密集型操作,对运算性能要求不高,因此没有使用C语言这种运行速度非常快的开发语言,而是选择了天生的异步IO语言---go语言,已保证运行速度。
go语言是跨平台语言,同时使用于windows,linux。并且生成的可执行文件为单文件,使用方便。
系统是通过计算文件的sha512值,然后将该值与该文件大小保留起来,后续新的文件如果出现相同的sha512值以及相同的文件大小,就会认为是相同的文件。因此有小概率会出现碰撞,也就是不同的文件却拥有相同的大小,并且计算出相同的sha512,结果被识别为同一个。
-d folder 用于选择需要检查的文件夹
-t thread number 用于设置同时运行的协程数量,默认为4
-w handle way 用于指定处理方式
0为只是显示与提醒,其他什么都不做
1为删除新发现的那个,其他什么都不做
2为删除新发现的那个,然后生成硬链接
3为删除新发现的那个,然后生成符号链接(需要超级权限)
-c channel的深度,可以理解为遍历协程与计算协程之间的数据fifo深度,默认65536
-e 启动删除空文件夹的功能
-j 删除大小为0的文件
-v or --version 显示当前程序版本
-h or --help 显示帮助
eg: rdfind -d /home/wf -w 2 -t 8 -e -j
go build rdfind.go
更多编译参数请参照go语言官方说明
本代码遵循GNU GENERAL PUBLIC LICENSE Version 3, 如在其他项目中使用了本代码,请依照该授权将其他相关部分代码全部开源。
沃航科技官网为沃航科技。可通过该网站的联系方式联系作者。