必须加-r参数才能递归压缩整个目录,否则仅创建空目录结构;基础命令为zip -r archive.zip directory_name,支持-q静默、-x排除、-m压缩后删源等组合用法。

要用 zip 递归压缩整个目录,关键就是加 -r 参数——不加它,zip 只会创建一个空目录结构,里面什么文件都没有。
基础用法:必须带 -r
语法很简单:
zip -r archive.zip directory_name
比如要把当前目录下的 project/ 文件夹完整打包,就运行:
zip -r project.zip project/
执行后,project.zip 里会包含 project/ 下所有子目录、文件、隐藏文件(如 .git、.env),结构完全保留。
常用组合技巧
实际使用中常搭配其他参数提升效率或控制行为:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
静默压缩(不刷屏):加
-q,适合脚本或大目录,避免输出干扰 ——zip -rq project.zip project/ -
排除某些内容:用
-x跳过日志、缓存等无需备份的目录 ——zip -r project.zip project/ -x "project/node_modules/*" "project/*.log" -
压缩完删源文件:加
-m,节省空间(慎用!确认无误再加)——zip -rm project.zip project/ -
查看压缩过程:加
-v,能看到每个文件是否被成功加入,适合调试 ——zip -rv project.zip project/
注意几个易错点
新手常踩的坑:
- 路径末尾加不加
/不影响结果,但建议统一写project/,更清晰表达这是目录 - 目标压缩包名不能和要压缩的目录同名且在同一级,否则 zip 会尝试把刚生成的 .zip 文件也塞进去(导致循环或报错)
-
*通配符不能替代-r:像zip archive.zip dir/*只压第一层文件,子目录里的内容全丢
验证是否成功
压缩完可以快速检查:
-
unzip -l project.zip查看内部文件列表 -
du -sh project/ project.zip对比原始目录和压缩包大小
不复杂但容易忽略细节,核心就一条:目录压缩,-r 不可省。










