繁体   English   中英

如何在不使用tmp目录的情况下重新打包zip文件?

[英]How to repack zip files without using tmp dir?

我有很多zip文件需要重新打包/重新压缩才能解决MediaWiki 0.1.18中的错误。

我可以做到

#!/bin/bash

for f in *zip; do
   cd tmp
   rm -rf *
   unzip ../"$f"
   zip -r ../"$f" *
   cd ..
done

但有没有办法做到这一点,例如管道或拉链选项?

gzip -d -c old.gz | gzip >new.gz

你不能。 如果您将一些位发送到zip,则无法知道一个文件何时结束并且新文件何时开始。

实际上你可以编写自己的程序来完成这项工作,但从你的描述来看,这似乎是一种过度杀伤力。 此外,您不知道您正在修复哪些错误,因此无法建议其他解决方法。

有一个名为AdvanceCOMP的实用程序可以完全满足您的需求。 它会重新压缩ZIP和GZ文件(以及其他一些文件)而无需中间提取到磁盘。 (我确实相信使用的机制是解压缩数据并重新压缩它,但这不需要将文件写入磁盘或重新生成元数据。)

有点晚了,但对于后来的人来说可能会有所帮助:

zipsplit -n 2147483648将重新打包至2GiB,无需提取。 但是由于此命令用于拆分zip文件,因此没有选项可以覆盖原始文件或指定输出文件,只能输出目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM