我有一个非常大的文件夹(~10GB),其中包含许多重复文件的目录树。其中许多文件重复了10次。重复的文件并不是并排存在,而是存在于不同的子目录中。
如何将文件夹压缩到足够小?
我尝试在#34; Best"中使用Winrar。模式,但它根本没有压缩它。 (很奇怪)
zip \ tar \ cab \ 7z \任何其他压缩工具会做得更好吗?
我不介意让这个工具工作几个小时 - 但不能更多。
我宁愿不自己编程
答案 0 :(得分:4)
7-zip支持“WIM”文件格式,该格式将检测并“压缩”重复项。如果您使用的是7-zip GUI,则只需选择“wim”文件格式。
仅当您使用命令行7-zip时,请参阅此答案。 https://serverfault.com/questions/483586/backup-files-with-many-duplicated-files
答案 1 :(得分:3)
WinRAR 默认压缩每个文件。因此,默认情况下压缩具有许多相似甚至相同文件的文件夹结构并没有真正的好处。
但也可以选择创建固态存档。打开 WinRAR 的帮助,在内容标签上打开项目存档类型和参数,然后点击固态存档。此帮助页面说明了可靠的归档文件以及此归档文件格式的优缺点。
具有较大字典大小和最佳压缩的实体存档可以使具有类似文件列表的存档文件非常小。例如,我有一个327个二进制文件的列表,文件大小从22 KB到453 KB,总共47 MB不包括分区的簇大小。我可以将这327个相似但不相同的文件压缩到RAR存档中,字典大小为4 MB,只有193 KB。这当然会大大减小尺寸。
在阅读有关固态存档的帮助页后,请点击指向 rarfiles.lst 的帮助页面链接。它描述了如何控制将文件放入实体存档的顺序。此文件位于 WinRAR 的程序文件文件夹中,当然可以根据您的需要进行自定义。
如果使用 WinRAR 的GUI版本,您还必须注意文件无需压缩即可存储。单击选项卡文件上的符号/命令添加后,可以找到此选项。有一些指定的文件类型只是存储在存档中而没有任何压缩,如* .png,* .jpg,* .zip,* .rar,...这些文件通常已包含压缩格式的数据,因此它不会再次压缩它们很有意义。但是,如果文件夹结构中存在重复的* .jpg并且创建了一个可靠的存档,则从该选项中删除所有文件扩展名是有意义的。
顺便说一下:有一些应用程序,如 Total Commander , UltraFinder 或 UltraCompare 以及其他支持各种用户搜索重复文件的应用程序可选标准,例如查找具有相同名称和相同大小的文件,或者最安全,查找具有相同大小和相同内容的文件,以及提供删除重复项的功能。
答案 2 :(得分:2)
重复的文件是否具有相同的名称?它们通常小于64 MB吗?然后你应该按文件名排序(没有路径),使用tar
将该顺序中的所有文件存档到.tar
文件中,然后使用xz
压缩创建一个.tar.xz
压缩存档。在.tar
文件中相邻且小于正在使用的xz
压缩级别的窗口大小的重复文件应该压缩到几乎为零。你可以看到字典大小," DictSize"对于this xz
man page中的压缩级别。它们的范围从256 KB到64 MB。
答案 3 :(得分:2)
我建议我尝试过三种选择(在Windows中):
我有10个不同版本的网站文件夹(包含 .php , .html , .js 等文件,< em> .css , .jpeg , .sql 等),总大小为1Gb(每个文件夹平均 100Mb )。虽然标准的7zip或WinRar压缩给了我一个大约400 / 500Mb的文件,但这些选项给了我一个文件(1) 80Mb ,(2)100Mb&amp; (3)分别为170Mb。
答案 4 :(得分:1)
从www.exdupe.com尝试eXdupe,它使用重复数据删除技术,速度非常快,实际上是磁盘I / O绑定
答案 5 :(得分:1)
您的情况下最好的选择是7-zip。 这是选项:
7za a -r -t7z -m0=lzma2 -mx=9 -mfb=273 -md=28 -ms=8g -mmt=on -mqs=on -bt -bb3 archife_file_name.7z /path/to/files
a
-将文件添加到存档
-r
-递归子目录
-t7z
-设置存档类型(您的情况下为7z)
-m0=lzma2
-将压缩方法设置为 LZMA2 。 LZMA是默认设置,是7z格式的常规压缩方法。 LZMA方法的主要特点:
-mx=9
-设置压缩级别。 x = 0表示复印模式(无压缩)。 x = 9-超
-mfb=273
-设置LZMA的快速字节数。它的范围可以是5到273。正常模式的默认值为32,最大模式和超级模式的默认值为64。通常,数字越大,压缩率越好,压缩过程也较慢。
-md=29
-设置LZMA的字典大小。您必须以字节,千字节或兆字节为单位指定大小。字典大小的最大值为1536 MB,但是32位版本的7-Zip最多可以指定128 MB字典。 LZMA的默认值在正常模式下为24(16 MB),在最大模式(-mx = 7)下为25(32 MB),在超级模式(-mx = 9)下为26(64 MB)。如果未从集合[b | k | m | g]中指定任何符号,则字典大小将计算为DictionarySize = 2 ^ Size字节。要解压缩通过字典大小N的LZMA方法压缩的文件,需要大约N个字节的可用内存(RAM)。
我使用md=29
是因为在我的服务器上只有16Gb的可用RAM。使用此设置,在任何目录大小的归档中,7-zip仅占用5Gb。如果我使用更大的字典大小-系统将进行交换。
-ms=8g
-启用或禁用固态模式。默认模式为s=on
。在固定模式下,文件被分组在一起。通常,以固态模式压缩会提高压缩率。对于您而言,这对于使实心块大小尽可能大非常重要。
-mmt=off
-将多线程模式设置为OFF 。您需要将其关闭,因为我们需要在一个单一块中由相同的7-zip线程处理相似或相同的文件。缺点是存档缓慢。不管您的系统有多少个CPU或内核。
-mmtf=off
-将过滤器的多线程模式设置为OFF 。
-myx=9
-将文件分析级别设置为最高,以分析所有文件(增量和可执行过滤器)。
-mqs=on
-在固态档案中按类型对文件进行排序。要将相同的文件存储在一起。
-bt
-显示执行时间统计信息
-bb3
-设置输出日志级别