分类 Golang 下的文章

Golang 文件去重 - 支持多平台 Windows、Linux、MacOS

GitHub 地址:https://github.com/PrintNow/FileDeduplication

已编译好二进制文件:https://www.lanzous.com/b00z87aja


FileDeduplication | 文件去重

使用 Go 语言实现的文件去重,单线程
内存占用,越到后面可能占用越大,扫描777个文件到后期内存占用达到 100~150 MB
刚入门 Go,可能有很多不规范的、冗余的代码,接受指正

实现思路

遍历文件下所有文件,计算文件 MD5值,然后压入 map,map 结构大概是这样的

  key    :  value
------------------
文件路径 : 文件MD5值

然后根据当前 计算的 MD5值 在 map 中寻找,如果找到了,就判定文件有重复
将当前 重复文件路径,写入到 重复文件清单

删除重复文件:
按行读取 重复文件清单,然后执行删除操作

安装

使用编译好的二进制文件可以忽略这一步
已编译好二进制文件:https://www.lanzous.com/b00z87aja

下载 fileCheck.go 文件,然后安装 go 环境进行编译

执行以下命令

go build fileCheck.go

编译完成你将得到一个 二进制文件

  • Windows 平台 将得到一个名为 fileCheck.exe 二进制文件
  • Linux、Android 平台 将得到一个名为 fileCheck 二进制文件
  • ...

- 阅读剩余部分 -

Golang 最小编译化 / 使其执行时不显示DOS窗口

编译文件最小化

编译 go 文件,去掉符号信息和调试信息

  • -a 强制编译所有依赖包。
  • -s 去掉符号信息
  • -w 去掉DWARF调试信息,得到的程序就不能用gdb调试了
go build -ldflags "-s -w" http_request.go

然后使用 upx 压缩文件

upx -9 -k http_request

使其执行时不显示 DOS 窗口

Golang 运行时 一闪而过的命令行窗口/黑色窗口/DOS窗口
go build -ldflags="-H windowsgui" http_request.go