|
这里的直接合并的意思是用 cat 名把两个文件并成一个文件,即,
cat file1.gz file2.gz > merged.gz
答案是这样做是可行的。原因是 gzipped 文件是内部其实是一系列相互独立的数据块,每一个数据块并不依赖其前一个或后一个数据块。
那么这样合并的 .gz 文件和直接生成的文件一致吗?
答案是几乎一致。合并后的文件和直接压缩的文件在数据的 metadata 上会略有差异,但解压后的内容是无差异的。
为了证明这一点,我做了一个测试,3.txt.gz 是直接合并两个 gzip 文件,4.txt.gz 是直接生成的 gzip 文件。两者解压后的内容都是一样的。
MD5 (3.txt.gz) = c002dc32c89a7c9c36b5da6b56e5b3a9
MD5 (4.txt.gz) = 221ef9d7871526c2c5e8e9afa2ffb380
那么是不是以后遇到这样的情况都采取直接合并的策略呢?
答案是未必。原因是直接合并后的 .gz 文件比 直接生成的 .gz 文件要大。这也很容易理解,直接生成的 .gz 文件会压缩得更厉害一点。而之所选择 压缩成 .gz 文件主要原因是要节省硬盘空间的。所以,最终如何做出选择,还是要看时间和空间哪个更重要——“时空关系”。
参考资料:
https://stackoverflow.com/questions/8005114/fast-concatenation-of-multiple-gzip-files
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-3 06:23
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社