8 个版本
0.0.8 | 2023年12月13日 |
---|---|
0.0.7 | 2023年11月22日 |
0.0.4 | 2023年6月15日 |
0.0.3 | 2023年4月23日 |
0.0.1 | 2023年2月28日 |
#243 in 文件系统
50 每月下载次数
105KB
1.5K SLoC
重复销毁者
命令行工具,用于查找重复目录并提供基本处理。
简介
你是否曾经备份过备份文件夹的备份文件夹?然后你尝试使用传统的去重工具来整理混乱的文件夹,结果发现你不得不手动检查20 431个文件?那么 DuDe 就是你需要的!DuDe 可以找到文件系统中最顶层的重复文件夹,并允许你一次性轻松地消除所有重复文件(或者至少直到下一次备份...)。
(这也是一个旨在作为 Rust 学习经验的小项目。)
安装
从源代码安装
在 Linux 上,使用 Rust 1.64 或更高版本,通过运行以下命令进行安装:
cargo install --features cli duplicate_destroyer
安装完成后,将会有 dude
二进制文件可用。
我已在 Fedora 35+ 和 Raspberry Pi OS Bullseye 上测试了安装。
在 Ubuntu 22.04 LTS 上
可能缺少构建依赖项 - cc
。首先运行以下命令安装 DuDe:
apt install build-essential
然后从源代码构建
cargo install --features cli duplicate_destroyer
基本用法
警告:该包仍然相对较新,API 可能会有一些重大更改。
扫描目录以查找重复项
dude --path path/to/some/dir --path path/to/another/dir
一旦扫描目录,DuDe 将打印找到的重复组。例如:
Group 1/2
--------------------------------
0. "path/to/some/dir/some_dir/A"
1. "path/to/some/dir/other_dir/B"
--------------------------------
Size: 8kB
-----------
Select action and paths. (Or press Ctrl-C to exit program.)
[O]pen, Open [F]older, [D]elete, ReplaceWith[H]ardlink, ReplaceWith[S]oftlink, [N]othing
要对找到的项采取行动,请输入操作字母和文件编号。例如:
O 0 1
将打开两个文件。
D 0
将(在确认后)删除我们示例中的 "path/to/dir/some_dir/A"。
并行处理
使用 --jobs
标志配置用于计算校验和的线程数
dude --path path/to/some/dir --jobs 3
当使用 DuDe 与现代 CPU 和外置 HDD 时,通常最好只使用一个线程(默认情况下就是这样),因为程序当时成为 I/O 绑定,从 HDD 读取多个文件的并行访问可能会降低读取速度。
最小大小
可以通过--minimum-size
参数指定返回重复项的最小大小。但请注意,这并不会显著减少计算时间,因为DuDe仍然会获取所有可能存在重复项的文件的校验和。这样做的原因是,即使是大型的目录也可能在某些小文件上有所不同,如果我们完全忽略小文件,我们可能会丢失一些虽小但很重要的数据。
哈希算法
杜德可以使用这些哈希算法来比较文件
- blake2 [默认]
- sha3-256
- sha3-512 如果DuDe在内存受限的系统上运行,建议切换到sha3-256算法
dude --path path/to/some/dir --algorithm "sha2-512"
CLI选项
Usage: dude [OPTIONS] --path <PATH>
Options:
-p, --path <PATH> Add path to be scanned
-m, --minimum-size <MINIMUM_SIZE> Minimum size of duplicates considered (can have a metric prefix) [default=100]
-j, --jobs <JOBS> Number of jobs that run simultaneously [default=0]
--json-file <FILE> Output the list of duplicates to a file in json format
--no-interactive Disable interactive duplicate handling
-a, --algorithm <ALGORITHM> Hash algorithm used to compare files [possible values: blake2, sha3-256, sha3-512]
-h, --help Print help
-V, --version Print version
库
如果您不喜欢用户界面,您可以自己编写!DuDe提供了一个具有核心功能的库。请参阅[此处](https://docs.rs/duplicate_destroyer/latest/duplicate_destroyer/)的文档。
依赖项
~4–15MB
~165K SLoC