我有很多文件需要传输,大部分是 png 和 pdf,一些是 svg,还有一些其他文件。这些文件大小有好几 TB,每个文件的大小从几 kb 到几 mb 不等。问题是我必须从上传速度很差的站点远程传输它们(200kb 0 700kb/秒)。
尽快备份这些文件很重要,但目前唯一的办法就是通过网络。这将需要数周时间,时间太长了。不幸的是,我当地没有可以信任的人来手动传输并寄给我硬盘。所以我只能尽可能地将文件压缩成小文件。
我使用 7-Zip 的超级压缩 (LZMA2) 来存档文件,并将其分成 10mb 的块(针对不同类别的文件分成不同的组)。效果很好。
如果我对所有文件都执行相同的操作,将所有文件组(按文件夹分隔)压缩为单个 7-Zip Ultra LZMA2 10mb 分割存档,这会有帮助吗,还是会浪费时间?它是否能够合并数据以进行更高程度的压缩,从而减少 10mb 文件的总体大小?
注意:我将其分成几块的原因是,无论怎样,传输都需要很长时间,因此小的块可以防止网络故障、计算机重启或任何其他问题搞砸整个过程。
答案1
抱歉,但这很大程度上会浪费时间。
数据压缩的工作方式是识别模式/假设,并以更有效的方式表示它们。然而,最终结果往往不会产生可压缩的模式。
可以将一些压缩程度相当差的数据进行更积极的压缩,从而获得一些收益。通常收益不到 3%,在极少数情况下会达到 10%。但是,这会产生一些开销。因此,其他结果(这很常见)大约是 0% 的节省,但会产生一些成本,因此您实际上可能会增加文件大小。
如果你愿意,可以随意尝试,但这种努力的常见结果是改善微不足道或根本不改善,甚至使情况变得更糟。
事实上,并非所有数据都可以压缩。“计数”论证(也称为“鸽巢”原理)解释了其中的原因。(见:压缩常见问题解答第 8 部分.) 基本上,如果压缩数据相等或更小(使用更少的位),则可能的压缩文件比未压缩的文件少,这证明并非每个可能的唯一未压缩文件都可以用更少的位来表示。
事实上,大多数数据都是不可压缩的。幸运的是,大多数有趣的数据都是可压缩的。例如,大多数图像看起来不像随机的黑白图片(例如,旧电视机上的“雪花”显示随机强度的随机单色像素)。大多数电子表格实际上没有完全随机的数字(包括负万亿的数字、有四十三位小数的 1 的分数以及除号前的加号)。
甚至文本也有模式,例如大量使用元音,偶尔使用标点符号后跟空格,然后是大写字母。
然而,压缩数据倾向于采用有用的模式,并以高效的方式表示它们。因此,数据压缩过程消除了低效率。结果是,我们通常可以更高效地识别和存储低效率。