-u参数作用是增量更新zip文件:仅替换修改时间更新的文件、新增zip中不存在的文件,跳过未变化项;-r用于递归处理目录;二者可组合使用(如zip -ur archive.zip dir/)实现智能备份。

用 zip -u 就能只把变动过的文件更新进已有 ZIP 包,不重复打包未修改的内容。
什么是 -u 参数的作用
-u(update)不是重新压缩整个目录,而是智能比对:如果源文件比 ZIP 包里同名文件更新(修改时间更晚),就替换进去;如果文件没变,就跳过;如果 ZIP 里没有这个文件,就新增进去。它天然适合增量备份或日常同步。
基本用法和常见组合
假设你已有 backup.zip,现在想把 docs/ 目录中改动过的文件同步进去:
- 最简命令:
zip -u backup.zip docs/ - 含子目录时必须加
-r:zip -ur backup.zip docs/ - 排除临时文件:
zip -ur backup.zip docs/ -x "*.tmp" "__pycache__/*" - 静默执行(不显示过程):
zip -urq backup.zip docs/
注意:-u 会自动创建 ZIP 文件(如果不存在),所以首次运行也安全。
实际效果示例
比如 backup.zip 里已有 report.pdf 和 notes.txt。
你改了 notes.txt,又新建了 summary.md,但没动 report.pdf。
运行 zip -ur backup.zip docs/ 后:
→ notes.txt 被替换为新版本
→ summary.md 被新增进去
→ report.pdf 完全不动,也不重读、不重压
注意事项
确保源路径有读取权限,否则会跳过或报错。-u 只看文件修改时间(mtime),不校验内容哈希,所以请保持系统时间准确。
不要和 -f(freshen)混淆:-f 只更新已存在文件,不会加入新文件;而 -u 两者都做。











