备份包含许多重复文件的文件

备份包含许多重复文件的文件

我经常需要备份一组文件,其中有许多子文件夹,其中包含几个大的相同文件。

是否存在一种压缩方案(.zip、.7z 等)可以自动检测这种情况并且不会多次存储相同的文件?

答案1

是的,这是可能的:https://superuser.com/questions/479074/why-doesnt-gzip-compression-eliminate-duplicate-chunks-of-data

以下是我想到的一个例子:

[jay test]$ tree .
.
`-- compressme
    |-- a
    |   `-- largefile (10MB)
    `-- b
        `-- largefile (10MB, identical to ../a/largefile)

3 directories, 2 files
[jay test]$ du -sh compressme/
21M compressme/
[jay test]$ tar -cf compressme.tar compressme/
[jay test]$ du -sh compressme.tar 
21M compressme.tar
[jay test]$ lzma -9 compressme.tar
[jay test]$ du -sh compressme.tar.lzma 
11M compressme.tar.lzma

答案2

我也刚刚经历过这个。

如果您将文件压缩到 Tar Ball 中,如果 Tar Ball 中重复文件相隔太远,7z 的 LZMA 压缩可能会或可能无法识别这些重复文件(这是词典大小和其他一些因素的函数)。

7z 具有收集重复项的 WIM 格式,因此您可以在其中使用常规 LZMA 压缩。Windows 命令行示例:

7z a -twim "Example.wim" *
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -mhc=on "Example.7z" "Example.wim"
del "Example.wim"

效果很好,试一试吧。

答案3

我建议使用我已经尝试过的 3 个选项(在 Windows 中):

  1. 7zip LZMA2 压缩,字典大小为 1536Mb
  2. WinRar“固体”文件
  3. 7zip WIM 文件

我有 10 个文件夹,里面有不同版本的网站(包括以下文件:.php.html.js.css.jpeg.sql等),总大小为 1Gb(每个文件夹平均 100Mb)。虽然标准 7zip 或 WinRar 压缩为我提供了一个大约 400/500Mb 的文件,但这些选项为我提供了一个 (1)80Mb、(2)100Mb 和(3)170Mb。

答案4

您可以使用 FastPack 来实现此目的:https://github.com/QuanosSolutions/FastPack

相关内容