3个稳定版本
使用旧Rust 2015
1.0.2 | 2016年11月6日 |
---|
#18 在 #btrfs
15KB
528 代码行
BTRFS去重
这是一个BTRFS去重实用程序。它以批处理模式运行,扫描具有相同大小的文件,对每个文件执行SHA256哈希,然后调用内核去重ioctl对所有匹配的文件进行操作。
由James Pharaoh编写。
托管在gitlab.wellbehavedsoftware.com (https://gitlab.wellbehavedsoftware.com/well-behaved-software/wbs-backup/tree/master/btrfs-dedupe) — 请在此处报告任何问题或功能请求。
它还可在以下位置获取
-
[Github] (https://github.com/wellbehavedsoftware/wbs-backup/tree/master/btrfs-dedupe) — 这是一个gitlab仓库的克隆版,应在此处提交错误报告等。欢迎在此处提交pull请求,但问题应在gitlab(上方)跟踪。
-
WBS Dist — 这包含Ubuntu trusty和xenial的二进制包。
一般信息
这个实用程序非常简单。它接受目录列表,扫描具有匹配大小的文件,对每个文件执行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