AIGC

centos zip 相关命令

1. 准备工作:安装 zip 工具

如果系统提示 -bash: zip: command not found,说明尚未安装,可以运行以下命令安装

sudo yum install zip -y

2. 压缩当前文件夹

如果想将当前所在目录的所有内容压缩,可以使用点号 . 或 * 通配符来表示当前目录

zip -r 你的文件名.zip ./*

例如:将当前目录所有文件压缩为 myarchive.zip

zip -r myarchive.zip ./*

3. 压缩指定的文件夹

这是最常见的需求,只需在命令中指定要压缩的文件夹路径即可

zip -r 你的文件名.zip /path/to/指定文件夹

例如:将 /home/user/documents 目录压缩为 documents.zip

zip -r documents.zip /home/user/documents

例如:压缩当前目录下名为 mydir 的文件夹

zip -r mydir.zip mydir/

4. 常用附加选项

zip 命令还支持一些实用的选项来满足不同需求

  • 排除特定文件 (-x):在压缩时不想包含某些文件或目录,可以使用 -x 参数
# 压缩当前目录,但排除所有 .log 文件和 temp 目录
zip -r project.zip ./ -x "*.log" -x "*/temp/*"

设置压缩级别 (-#)zip 支持从 0(不压缩)到 9(最大压缩)的压缩级别,默认为

# 使用最高压缩级别
zip -9 -r archive.zip myfolder/

静默压缩:如果不想看到压缩过程的输出,可以加上 -q 选项。

5. 补充说明

  • -r 参数的作用:压缩文件夹时必须使用 -r 选项,它代表递归(recursive),能将目录及其下所有子目录和文件都包含进压缩包。如果没有 -rzip 只会创建一个包含目录名本身的空压缩包。
  • 路径问题:当指定的文件夹路径包含空格时,需要用引号将整个路径括起来。

总结一下,最常用的命令格式就是:

zip -r 你想要的名字.zip 要压缩的文件夹

分卷压缩

核心命令:使用 zip -s 进行分卷压缩

这个命令会直接将目标文件夹压缩并分割成多个指定大小的分卷文件

zip -r -s 1g <输出文件>.zip <要压缩的文件>
  • -r:必需参数,代表递归,用于压缩文件夹及其所有子内容。
  • -s 1g:核心参数,指定每个分卷的大小为1GB。你也可以使用 m (兆字节) 或 k (千字节) 等单位。
  • <输出文件名>.zip:你指定的主压缩包名称。
  • <要压缩的文件夹>:你想要压缩的目录

示例:将当前目录下的 my_folder 文件夹压缩并分割成1GB大小的分卷,主文件名为 archive.zip

zip -r -s 1g archive.zip my_folder/

执行后,你会得到类似这样的分卷文件

  • archive.z01 (第一个分卷)
  • archive.z02 (第二个分卷)
  • ...
  • archive.zip (最后一个分卷)

如何解压分卷文件

解压时非常简单,只需确保所有分卷文件(.z01.z02, ..., .zip)都在同一个目录下,然后直接解压最后一个 .zip 文件即可

unzip archive.zip

unzip 命令会自动识别并合并同目录下的其他分卷,完成解压

其他可选方法

除了 zip -s,还有另外两种方法可以实现类似效果:

  1. 先压缩,后分割 (split)
    先用 zip 压缩成一个大的 .zip 文件,再用 split 命令将其按大小分割
# 1. 先正常压缩
zip -r large_archive.zip my_folder/
# 2. 再用 split 分割成 1GB 的文件
split -b 1G large_archive.zip "split_part_"

注意:这种方法生成的文件(如 split_part_aa)不是标准的zip分卷,解压前需要先用 cat 命令合并

cat split_part_* > combined.zip
unzip combined.zip

2.使用 zipsplit 命令
zipsplit 是专门用来分割已有zip文件的工具

zipsplit -n 1g existing_archive.zip

注意zipsplit 不支持大于2GB的文件

总结与建议

  • 首选方案:对于你的需求,直接使用 zip -r -s 1g 是最简洁、最高效的方法,一步到位,无需后续合并。
  • 注意事项:在传输或存储分卷文件时,请确保所有分卷完整无缺,否则解压会失败