重复数据删除 开源实现 (deduputil) (转)

[dedup util]

dedup util是一款开源的轻量级文件打包工具,它基于块级的重复数据删除技术,可以有效缩减数据容量,节省用户存储空间。目前已经在Sourceforge上创建项目,并且源码正在不断更新中。该工具生成的数据包内部数据部局(layout)如下:

--------------------------------------------------
|  header  |  unique block data |  file metadata |
--------------------------------------------------

数据包由三部分组成:文件头(header)、唯一数据块集(unique block data)和逻辑文件元数据(file metadata)。其中,header为一个结构体,定义了数据块大小、唯一数据块数量、数据块ID大小、包中文件数量、元数据在包中的位置等元信息。文件头后紧接就存储着所有唯一的数据块,大小和数量由文件头中元信息指示。在数据块之后,就是数据包中文件的逻辑表示元数据,由多个实体组成,结构如下所示,一个实体表示一个文件。解包时根据文件的元数据,逐一提取数据块,还原出当初的物理文件。

逻辑文件的元数据表示:

-----------------------------------------------------------------
|  entry header  |  pathname  |  entry data  |  last block data |
-----------------------------------------------------------------

逻辑文件的实体头中记录着文件名长度、数据块数量、数据块ID大小和最后一个数据块大小等信息。紧接着是文件名数据,长度在实体头中定义。文件名数据之后,存储着一组唯一数据块的编号,编号与唯一数据块集中的数据块一一对应。最后存储着文件最后一个数据块,由于这个数据块大小通常比正常数据块小,重复概率非常小,因此单独保存。

更详细信息请参见 http://blog.csdn.net/liuben/archive/2010/01/09/5166538.aspx

dedup util目前处于pre-alpha开发阶段,支持文件打包、解包、追加文件、删除文件、罗列包中文件等功能。初步的测试结果显示,即使在不明确数据是否具备较高重复率的情况下,dedup技术也能较明显地减少数据包的数据量,产生的数据包比Tar工具的要小。

[源码]

项目URL: https://sourceforge.net/projects/deduputil

SVN代码库URL: https://deduputil.svn.sourceforge.net/svnroot/deduputil

[编译]

1.获取源码

svn co https://deduputil.svn.sourceforge.net/svnroot/deduputil deduputil

2.安装libz-dev

apt-get install libz-dev

如果不支持apt-get,请采用其他途径安装。

3.编译安装

./gen.sh

./configure

make

make install

[命令行]

Usage: dedup [OP TION...] [FILE]...

dedup tool packages files with deduplicaton technique.

Examples:

dedup -c foobar.ded foo bar    # Create foobar.ded from files foo and bar.

dedup -a foobar.ded foo1 bar1  # Append files foo1 and bar1 into foobar.ded.

dedup -r foobar.ded foo1 bar1  # Remove files foo1 and bar1 from foobar.ded.

dedup -t foobar.ded            # List all files in foobar.ded.

dedup -x foobar.ded            # Extract all files from foobar.ded.

Options:

-c, --creat      create a new archive

-x, --extract    extrace files from an archive

-a, --append     append files to an archive

-r, --remove     remove files from an archive

-t, --list       list files in an archive

-z, --compress   filter the archive through zlib compression

-b, --block      block size for deduplication, default is 4096

-H, --hashtable  hashtable backet number, default is 10240

-d, --directory  change to directory, default is PWD

-v, --verbose    print verbose messages

-h, --help       give this help list

[运行平台]

目前仅在Linux平台开发测试,其他平台未作评测。

[TODO]

1. 数据块碰撞问题

虽然MD5产生的碰撞的概率非常小,但仍然存在发生小概率事件的可能性。需要采用技术手段解决碰撞问题,这样才能保证数据安全,让用户放心使用。

2. 变长数据块

目前是定长数据块的实现,技术上较为简单,变长数据块可能会获得更高的数据压缩率。

3. 相似文件识别

如果两个文件只有很小的差别,比如在某处插入了若干字节,找出这些数据块并单独处理,可能会提高数据压缩率。

时间: 2024-12-18 09:04:05

重复数据删除 开源实现 (deduputil) (转)的相关文章

重复数据删除(De-duplication)技术研究(SourceForge上发布dedup util)

dedup util是一款开源的轻量级文件打包工具,它基于块级的重复数据删除技术,可以有效缩减数据容量,节省用户存储空间.目前已经在Sourceforge上创建项目,并且源码正在不断更新中.该工具生成的数据包内部数据部局(layout)如下: --------------------------------------------------| header | unique block data | file metadata |--------------------------------

Windows Server 2012R2之重复数据删除实战

Windows 8.1重复数据删除理论与windows server 2012R2重复数据删除理论相似,相关理论信息请参考: Windows 8.1 重复数据删除--概念(一)and Windows 8.1 重复数据删除--规划部署(二) 相关理论信息不再赘诉,具体请参考相应官网信息.需提前申明,如系统奔溃或磁盘更换等因素导致数据不完整情况请重新开启对应操作系统上重复数据删除功能以保证数据的完整与可用性(注:Windows 7上暂时还未在官网收到支持相关信息).启用及配置步骤如下: 一.启用wi

Windows 8.1 重复数据删除——规划部署(二)

一.规划部署目标   Windows 8.1&Server 2012 的重复数据删除设计为安装到主要数据卷上,而无需添加任何附加的专用硬件.这意味着你可以安装和使用该功能,而不会影响服务器上的主要工作负载.默认设置为非侵入性的,因为它们允许在处理特定文件之前数据"存留时间"达到五天,默认的最小文件大小为 32 KB.该实现是为低内存和 CPU 利用率而设计的.如果内存利用率变高,则重复数据删除功能将等待可用的资源.管理员可以根据所涉及数据的类型以及该卷或特定文件类型的更改频率和

Windows 8.1 重复数据删除——概念(一)

功能描述 重复数据删除指的是在数据中查找和删除重复内容,而不会影响其保真度或完整性.其目标是通过将文件分割成大小可以改变 (32-128 KB) 的小区块.确定重复的区块,然后为每个区块保留一个副本,从而在更小的空间中存储更多的数据.区块的冗余副本由对单个副本的引用所取代.区块会进行压缩,然后以特殊的容器文件形式组织到 System Volume Information 文件夹中. 针对卷启用了重复数据删除而且对数据进行优化之后,卷中会包含以下内容: 未优化的文件:例如,未优化的文件可以包括:无

重复数据删除(dedup)技术介绍 1

重复数据删除(de-duplication)是存储领域,尤其是数据备份领域的一个非常重要的概念.其目的是删除重复的数据块,从而减少对存储空间的使用. 这种想法的出发点是非常自然的.通常情况下,每次备份的数据总是会有一部分跟上一次备份的数据重合. 比如,每次备份都要包含一个100MB的文件,那么这个文件就会重复出现在所有的备份数据中. 经过多次备份操作之后,重复的数据块就会占用可观的存储空间,而实际上,这些重复的数据块保留一份就足够了. dedup就是为了解决这种问题而产生的. dedup和数据压

Hyper-v Server重复数据删除技术

Hyper-v Server重复数据删除技术 老衲听说windows Server 2012中新增了一项技术叫做重复数据删除,据说这个重复数据删除可以大大的节省磁盘的空间,下面我们来看看什么是重复数据删除: 重复数据删除指的是在数据中查找和删除重复内容,而不会影响其保真度或完整性.其目标是通过将文件分割成大小可以改变 (32-128 KB) 的小区块.确定重复的区块,然后为每个区块保留一个副本,从而在更小的空间中存储更多的数据.区块的冗余副本由对单个副本的引用所取代.区块会进行压缩,然后以特殊的

何时使用重复数据删除技术?

大数据与海量数据已经成为数据中心的主要业务,而重复数据删除与压缩是可以节约大量数据存储的技术. 只有备份还不够.重复数据删除与压缩即将成为主存储的必备功能. 重复数据删除是一种压缩技术,通过识别重复内容,进行去重,并在对应的存储位置留下指针,来最小化数据量.这个指针通过给定大小的数据模式进行哈希创建. 也许在于你已经在备份系统上实施了重复数据删除备份和归档多年,问题在于:是否需要在主存储上运用重复数据删除与压缩技术? 并非所有的重复数据删除技术都一样.IT专业人士在将其添加到主存储环境之前,应该

Windows Server 2012 之 重复数据删除

在windows 2012中,你可以对非系统卷启用重复数据删除功能.重复数据删除通过查找卷中的冗余数据,然后确保数据在卷中只保存一份来优化卷的存储空间.实现这个功能是通过将数据存放在单一的一个位置,并且为其他的冗余的数据副本提供这个位置参照.由于数据被划分成32-128KB的数据块,所以重复数据删除不仅能优化卷中冗余的文件,同样也可以优化文件中冗余部分. 重复数据删除能够与DFS复制部署在一起,用来提供更加高效的存储和复制基础架构. 重复数据删除的工作方法: 一旦在卷中启用了重复数据删除,win

exchange online导出PST时重复数据删除惹的祸

最近遇到1个用户反馈的关于通过Office 365 exchange online导出PST的问题,以下链接是我之前写的如何在Office 365 exchange online中导出PST的文章: http://liujb.blog.51cto.com/269257/1784934 以下是问题的相关信息: 问题描述: exchange online就地电子数据展示搜索结果导出到PST文件时导出到1个PST中了,没有按用户名分别导出PST 处理过程: 客户之前导出PST时是正常的,按用户的名称分