是否有适用于 Windows 的压缩或归档程序也可以进行重复数据删除?

是否有适用于 Windows 的压缩或归档程序也可以进行重复数据删除?

我正在寻找一款可以对存档文件执行重复数据删除 (Dedupe) 的存档程序。解压存档后,该软件会将其在压缩过程中删除的所有文件放回原处。

到目前为止我发现:

还有谁知道其他的吗?

这可能对 7-zip 来说是一个很棒的补充。

答案1

几乎所有现代存档器都这样做,唯一的区别是它们将此称为“固体”存档,因为所有文件在输入压缩算法之前都串联成单个流。这与标准 zip 压缩不同,后者逐个压缩每个文件并将每个压缩文件添加到存档中。

7-zip 本质上可以有效地实现重复数据删除。例如,7-Zip 将搜索文件,并按相似的文件类型和文件名对它们进行排序,因此两个相同类型和数据的文件将并排放置在流中,并进入压缩算法。然后,压缩器将看到它最近看到的大量数据,与逐个压缩文件相比,这两个文件的压缩效率将大大提高。

Linux 长期以来一直存在类似的行为,因为它的“.tgz”格式(或“.tar.gz”的完整形式)非常流行,因为 tar 只是将所有文件合并为一个流(尽管没有对文件进行排序和分组),然后使用 gzip 进行压缩。这忽略了 7-zip 所做的排序,这可能会稍微降低效率,但仍然比简单地将大量文件合并在一起要好得多单独压缩像 zip 那样将文件放在一起。

答案2

7-Zip、zip、gzip 和所有其他归档程序都无法检测彼此相距较远的相同区域(例如,同一文件内只有几兆字节或更大),或者位于不同文件内的不同位置。

所以,在某些情况下,普通归档器的性能不如 exdupe 和其他归档器。如果你压缩一些虚拟机或其他东西,你就会看到这一点。

答案3

在压缩过程中使用重复数据删除毫无意义。大多数压缩算法都会创建所谓的“字典”,用于查找最常见或重复的数据位。从那里,它只会引用字典条目,而不是重新写入整个“单词”。通过这种方式,大多数压缩过程已经从所有文件中删除了冗余或重复的数据。

例如,如果您将一个 1 MB 的文件复制 100 次,每次使用不同的名称(总共占用 100 MB 的磁盘空间),然后将其压缩到 7zip 或 zip 文件中,则 zip 文件总共将占用 1 MB。这是因为您的所有数据都放入一个字典条目中并引用了 100 次,占用的空间非常小。

这是对所发生事情的一个非常简单的解释,但是仍然很好地传达了要点。

相关内容