#dedup #程序 #cli

bin+lib multi-machine-dedup

使用 SQLite 实现多机功能的去重工具

1 个不稳定版本

0.2.0 2022 年 12 月 22 日

#9 in #程序

GPL-3.0-or-later

22KB
263 代码行

multi-machine-dedup

关于

multi-machine-dedup 是一个使用 SQLite 实现多机功能的去重工具。

multi-machine-dedup 是一个 EDLA 项目。

edla.org 的目的是推广各个领域的技术前沿。

安装

cargo install multi-machine-dedup

如何使用

递归索引目录 <DIRECTORY_FULL_PATH> 并用 <LABEL> 标记,存储到 SQLite 数据库 <SQLITE_FILE> 中

 multi-machine-dedup index -l <LABEL> --db <SQLITE_FILE> <DIRECTORY_FULL_PATH>

检查目录

 multi-machine-dedup check-integrity -l <LABEL> --db <SQLITE_FILE>

比较两个数据库

 multi-machine-dedup compare --db1 <SQLITE_FILE_1> --db2 <SQLITE_FILE_2>

SQL 查询示例

您可以使用如 DBeaver CESQLiteStudio 这样的便捷数据库工具查询生成的 SQLite 数据库。

查找大于 <A_SIZE> 的顶级重复文件

select label, full_path, hash,size,nb_dup from file , (select hash, count(*) as nb_dup from file where size > <A_SIZE>
group by hash order by nb_dup DESC, size DESC) as T
where file.hash = T.hash  order by nb_dup DESC, size DESC ;

查找所有具有相同 <CRC_VALUE> 的文件

select * from file where hash=<A_CRC_VALUE> ;

查找所有具有 image/jpeg MIME 类型的文件

select * from hash where mime like "image/jpeg" ;

技巧

  • 在 PowerShell 中启用调试模式
$Env:LOG='debug';  cargo run ...
  • 在 PowerShell 中删除 LOG 环境变量
remove-item Env:LOG
  • 显示 <SUBCOMMAND> 的帮助
multi-machine-dedup <SUBCOMMAND> --help

multi-machine-dedup help <SUBCOMMAND>

路线图

受到 https://github.com/hgrecco/dedup 的启发,multi-machine-dedup 可能会提供类似的功能。

许可

© 2022 Olivier ROLAND. 在 GPLv3 许可下分发。

依赖项

~28–38MB
~608K SLoC