#btrfs #deduplication #tool #dedupe #io #hash #gitlab

app btrfs-dedupe

BTRFS完整文件去重工具

3个稳定版本

使用旧Rust 2015

1.0.2 2016年11月6日

#18#btrfs

MIT 许可证

15KB
528 代码行

BTRFS去重

这是一个BTRFS去重实用程序。它以批处理模式运行,扫描具有相同大小的文件,对每个文件执行SHA256哈希,然后调用内核去重ioctl对所有匹配的文件进行操作。

James Pharaoh编写。

托管在gitlab.wellbehavedsoftware.com (https://gitlab.wellbehavedsoftware.com/well-behaved-software/wbs-backup/tree/master/btrfs-dedupe) — 请在此处报告任何问题或功能请求。

它还可在以下位置获取

一般信息

这个实用程序非常简单。它接受目录列表,扫描具有匹配大小的文件,对每个文件执行SHA256校验和,然后调用ioctl去重每个匹配的整个文件。可选地,它还可以匹配文件名以及大小;在某些情况下,这可能会使程序运行更快。

用法

内置帮助

$ btrfs-dedupe --help

Btrfs Dedupe 

USAGE:
    btrfs-dedupe [FLAGS] [<PATH>]

FLAGS:
    -h, --help              Prints help information
        --match-filename    Match filename as well as checksum
    -V, --version           Prints version information

ARGS:
    <PATH>...    Root path to scan for files

替代方案

我知道有两种替代方案

  • Duperemove — 对文件执行块级哈希并尝试去重文件的部分。这对于我的目的来说有些过度,尽管我没有理由相信它工作得不好。我相信它比这个工具慢,因为它对文件内容进行了更深入的分析。

  • Bedup — 执行与这个工具类似的任务,并且它还保留文件数据库以避免再次进行校验和。然而,主要实现并没有使用内核ioctl(当它被创建时这些并没有可用),尽管有一个分支支持这一点。它还可能在出错时将文件系统置于不一致状态,即设置为不可变,并且如果有许多文件要去重,它还会崩溃。

还有[正在进行的工作] (http://www.mail-archive.com/linux-btrfs%40vger.kernel.org/msg32862.html),旨在在文件系统中实现自动实时去重,但这个过程可能需要很长时间才能稳定,而且其概念存在根本性问题,使其在很多情况下不适用。

关于BTRFS中去重状态的通用信息可以在维基页面中找到。

依赖关系

~4MB
~77K SLoC