我有一个脚本,从文件夹压缩文件。 我想确保压缩文件不超过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 -