如何压缩大小限制的文件?

我有一个脚本,从文件夹压缩文件。 我想确保压缩文件不超过10 MB。 如果大小超过10MB,则应该创build另一个ZIP文件。

有没有可用于此的命令(或其他方法)?

您可以使用“ –split-size ”选项使用“ zip ”本身的“ 拆分归档 ”function。

从“zip”manpage(“ man zip ”):

(……)

分割档案的一个用途是将多个档案存储在多个移除档案中,
能够媒体。 对于具有20个拆分文件的拆分归档文件,
(命名为ARCHIVE)(replace为您档案的名称)AR-
CHIVE.z01,ARCHIVE.z02,…,ARCHIVE.z19,ARCHIVE.zip。 请注意
最后一个文件是.zip文件。

(……)

-s分裂
– 分裂大小分裂

拆分大小是一个可选的数字后跟一个乘数。
目前这个数字必须是一个整数。 乘数可以
目前是k(千字节),m(兆字节),g(千兆字节),
或t(兆兆字节)。 由于64k是最小的拆分大小,数字
没有乘数默认兆字节。 例如,对于cre-
用吧台的内容吃了一个名为foo的拆分档案
目录与分裂670 MB可能是有用的燃烧
在CD上,命令:

  zip -s 670m -r foo bar 

可用于。

因此, 要创build一个拆分zip归档文件 ,可以执行下列操作(“ -r ”是“recursive”开关以包含目录的子目录):

$ zip -r -s 10m archive.zip directory/

要解压缩该文件 ,“ zip ”手册页解释了您应该使用“-s 0”开关:

(……)

  zip -s 0 split.zip --out unsplit.zip 

会将分割档案转换为单个档案档案。

(……)

所以,你首先使用“-s 0”开关“解压缩”ZIP文件

$ zip -s 0 archive.zip --out unsplit.zip

…然后你解压缩unsplit文件:

$ unzip unsplit.zip

 tar -czvf - /path/to/files | split -b 10M - archive.tar.gz 

会给你一些文件:

 archive.tar.gzaa archive.tar.gzab ... 

然后可以解压缩到:

 cat archive.tar.* | tar -xzvf -