平时开发会有部分场景都是需要压缩,但是每次有新增时就要重新进行压缩,所以就想着是不是能够向一个压缩包中追加文件来节约性能。目前网上的文章都搜不到,特来此寻求帮助(花花)
1
matrix67 2022-01-18 17:57:32 +08:00 1
tar archive
tar extension, you can use the -r (or –append) option of the tar command to add/append a new file to the end of the archive. You can use the -v option to have a verbose output to verify the operation. The other option that can be used with the tar command is -u (or –update).Jun 8, 2013 |
2
wangxn 2022-01-18 17:58:52 +08:00 1
ZIP/RAR 这些格式默认就支持往里边添加或者删除文件吧。
像 LZMA 或者 RAR 的固实压缩就不行,算法差异。 |
5
kokutou 2022-01-18 19:54:01 +08:00 via Android
就一直压到新的压缩包里吧,然后给个功能,手动重压缩打包。
|
7
yfugibr 2022-01-18 19:57:30 +08:00 via Android 1
.zip.tar
对每个部分独立压缩,再拼起来 |
8
jim9606 2022-01-18 20:57:02 +08:00 1
zip 就可以,很多 zip 读写库都支持在线修改,追加和修改都可以(但删除就不一定支持了)
另外友情提醒,zip 的压缩算法除了 store(不压缩)和 deflate 外还能用 lzma ,甚至可以用牛逼的 zstd (好像已经被 PKWARE 标准化,至少 7-zip 可以创建这种 zip 档案) |
9
aloxaf 2022-01-18 21:18:31 +08:00
本来还是为是往已压缩文件中追加数据,没想到是往压缩包内追加完整文件
——只要你没在用 tar ,那么只要关闭「固实压缩」,就能避免在追加内容时重新压缩 |
10
Izual_Yang 2022-01-18 23:49:58 +08:00
差量备份?
或者就干脆新增 /修改部分另压新包? |
11
zhangenming 2022-01-19 00:31:15 +08:00
增量压缩 结果肯定没有 重新做一次完整压缩 的压缩效率高吧
增量的时候字典应该也是增量的 |
12
mingl0280 2022-01-19 00:35:24 +08:00
固实压缩不可追加,除此之外都可以追加。
|
13
Trim21 2022-01-19 00:36:40 +08:00 via Android
zip 文件就可以,每次追加文件只需要重写文件尾很小的一部分内容,写完了所有要添加的文件再写一个新的文件尾。
|
14
DiamondYuan 2022-01-19 01:32:12 +08:00 via iPhone
这个我熟。之前读了 tar 和 gzip 的 rfc 。
1. gzip 文件可以任意合并 可以把一个大文件拆分成两个文件,分别压缩后拼起来,解压后就是原来的大文件 2. 任意的两个 tar 文件可以直接连接起来。a.tar 和 b.tar (需要删除 a.tar 末尾的空白即可) 利用上面的原理,每次只需要 1. tar 打包文件 2. 去掉末尾空白 3. gzip 以后,就可以追加到之前的压缩包了 |
15
iqoo 2022-01-19 10:36:54 +08:00
任何流压缩都支持。比如网站 gzip/br 就是边压缩边返回的。
想同时满足压缩率的话,设置一个较大的窗口,缓冲区写满才压缩追加。 |