#重复 #文件排序 #删除文件 #去重 #目录 #查找 #过滤

app deduplicator

查找、排序、过滤并删除重复文件

18个版本

0.2.2 2024年7月5日
0.2.1 2023年11月14日
0.2.0 2023年7月17日
0.1.6 2023年2月6日
0.0.9 2023年1月13日

#209 in 文件系统

Download history 1/week @ 2024-06-04 3/week @ 2024-06-11 265/week @ 2024-07-02 12/week @ 2024-07-09 18/week @ 2024-07-16 57/week @ 2024-07-23 25/week @ 2024-07-30

103 每月下载次数

MIT 协议

30KB
604

去重器

查找、排序、过滤和删除重复文件

使用方法

Usage: deduplicator [OPTIONS] [scan_dir_path]

Arguments:
  [scan_dir_path]  Run Deduplicator on dir different from pwd (e.g., ~/Pictures )

Options:
  -t, --types <TYPES>          Filetypes to deduplicate [default = all]
  -i, --interactive            Delete files interactively
  -s, --min-size <MIN_SIZE>    Minimum filesize of duplicates to scan (e.g., 100B/1K/2M/3G/4T) [default: 1b]
  -d, --max-depth <MAX_DEPTH>  Max Depth to scan while looking for duplicates
      --min-depth <MIN_DEPTH>  Min Depth to scan while looking for duplicates
  -f, --follow-links           Follow links while scanning directories
  -h, --help                   Print help information
  -V, --version                Print version information
      --json                    

示例

# Scan for duplicates recursively from the current dir, only look for png, jpg & pdf file types & interactively delete files
deduplicator -t pdf,jpg,png -i

# Scan for duplicates recursively from the ~/Pictures dir, only look for png, jpeg, jpg & pdf file types & interactively delete files
deduplicator ~/Pictures/ -t png,jpeg,jpg,pdf -i

# Scan for duplicates in the ~/Pictures without recursing into subdirectories
deduplicator ~/Pictures --max-depth 0

# look for duplicates in the ~/.config directory while also recursing into symbolic link paths
deduplicator ~/.config --follow-links

# scan for duplicates that are greater than 100mb in the ~/Media directory
deduplicator ~/Media --min-size 100mb

安装

Cargo 安装

稳定版

$ cargo install deduplicator

夜间版

如果您想使用夜间版功能进行安装,可以使用

$ cargo install --git https://github.com/sreedevk/deduplicator

请注意,如果您使用版本管理器安装 Rust(如 asdf),则需要重新安装(asdf reshim rust)。

Linux(预构建二进制文件)

您可以从发布页面下载预构建的二进制文件。下载适用于 Linux 的 deduplicator-x86_64-unknown-linux-gnu.tar.gz。一旦您有了带有可执行文件的 tar 文件,您可以按照以下步骤进行安装

$ tar -zxvf deduplicator-x86_64-unknown-linux-gnu.tar.gz
$ sudo mv deduplicator /usr/bin/

Mac OS(预构建二进制文件)

您可以从发布页面下载预构建的二进制文件。下载适用于 Mac OS 的 deduplicator-x86_64-apple-darwin.tar.gz tar 文件。一旦您有了带有可执行文件的 tar 文件,您可以按照以下步骤进行安装

$ tar -zxvf deduplicator-x86_64-unknown-linux-gnu.tar.gz
$ sudo mv deduplicator /usr/bin/

Windows(预构建二进制文件)

您可以从发布页面下载预构建的二进制文件。下载适用于 Windows 的 deduplicator-x86_64-pc-windows-msvc.zip 压缩文件。解压缩 zip 文件并将 deduplicator.exe 移动到系统环境变量 PATH 的一个位置。

注意:如果您遇到 msvc 错误,请从此处安装 MSCV

性能

去重器使用大小比较和fxhash(一种非加密的哈希算法)来快速扫描大量文件以查找重复项。它还高度并行(使用rayon和dashmap)。我能在约300毫秒内扫描120GB的文件(视频、PDF、图片)。查看基准测试。

基准测试

命令 目录大小 文件数量 平均值 [毫秒] 最小值 [毫秒] 最大值 [毫秒] 相对
去重器~/数据/tmp (~120G) 721个文件 33.5 ± 28.6 25.3 151.5 1.87 ± 1.60
去重器~/数据/书籍 (~8.6G) 1419个文件 24.5 ± 1.0 22.9 28.1 1.37 ± 0.08
去重器~/数据/书籍--最小-大小 10M (~8.6G) 1419个文件 17.9 ± 0.7 16.8 20.0 1.00
去重器~/数据/ --类型 pdf,jpg,png,jpeg (~290G) 104222个文件 1207.2 ± 37.0 1172.2 1287.7 67.27 ± 3.33
  • 最后一个条目较低,因为去重器必须处理的文件数量较多(约660895个文件)。文件的平均大小很少影响去重器的性能。

这些基准测试使用hyperfine运行。以下是用于基准测试去重器的机器的规格。

OS: Arch Linux x86_64 
Host: Precision 5540
Kernel: 5.15.89-1-lts 
Uptime: 4 hours, 44 mins 
Shell: zsh 5.9                        
Terminal: kitty 
CPU: Intel i9-9880H (16) @ 4.800GHz 
GPU: NVIDIA Quadro T2000 Mobile / Max-Q 
GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] 
Memory: 31731MiB (~32GiB)

屏幕截图

路线图

- Tree format output for duplicate file listing
- GUI
- Packages for different operating system repositories (currently only installable via cargo) 

依赖项

~12–22MB
~292K SLoC