前提:缺少工具先安装
# Debian / Ubuntu
apt update && apt install zip unzip
# CentOS / RHEL
yum install zip unzip
# Fedora
dnf install zip unzip
一、压缩 zip(zip 命令)
1. 递归压缩文件夹(最常用)
# 格式:zip -r 输出包.zip 目标目录/文件
zip -r test.zip test_dir
-r递归子目录,打包文件夹必须带
2. 指定压缩等级 0~9(9最高压缩)
zip -r -9 test.zip test_dir
3. 压缩多个文件/文件夹
zip -r out.zip file1.txt file2.cpp folderA folderB
4. 压缩时排除指定目录/文件
# 排除 build、.git 目录
zip -r code.zip rmdb -x "rmdb/build/*" -x "rmdb/.git/*"
# 排除后缀 .o
zip -r code.zip rmdb -x "*.o"
5. 设置密码加密压缩
zip -r -e code.zip rmdb
# 执行后交互式输入密码
6. 只更新新增/改动文件到已有压缩包
zip -ru code.zip rmdb
二、解压 zip(unzip 命令)
1. 直接解压到当前目录
unzip test.zip
2. 解压到指定目录 -d(重点)
unzip test.zip -d ./output_dir
目录不存在会自动创建
3. 只查看压缩包内容,不解压
unzip -l test.zip
# 简洁列表
unzip -v test.zip
4. 解压时覆盖已有文件(不询问)
unzip -o test.zip
5. 解压时跳过已有文件,不覆盖
unzip -n test.zip
6. 只解压包内指定一类文件(示例:只提取.h .cpp)
unzip test.zip "*.h" "*.cpp" -d ./src
7. 解压加密zip(运行后提示输入密码)
unzip test.zip
# 非交互式直接传入密码(不安全,日志可见)
unzip -P 你的密码 test.zip
三、实用高频组合示例(适合你的数据库竞赛项目)
# 打包 rmdb 源码,剔除构建目录和git文件
zip -r rmdb.zip rmdb -x "rmdb/build/*" -x "rmdb/.git/*" -x "rmdb/CMakeCache.txt"
# 解压到 ./work 文件夹
unzip rmdb.zip -d ./work
四、容易踩坑提醒
- zip 不加
-r打包文件夹只会生成空目录,不会包含内部文件 - Windows生成的中文zip在Linux解压乱码解决方案:
unzip -O GBK xxx.zip
zip格式不支持Linux文件权限完整保留;如需保留权限优先用 `tar.gz