做什么
zip 是Windows / Mac / Linux 三大平台都认的压缩格式——发给非 Linux 用户首选。
装
sudo apt install zip unzip
zip:打包
zip archive.zip file.txt # 单文件
zip archive.zip file1.txt file2.txt # 多文件
zip -r archive.zip folder/ # ★ 目录必须 -r
zip -r archive.zip folder/ -x "*.log" # 排除某模式
zip -j archive.zip path/to/file.txt # 不保留路径(仅文件名)
zip -P "password" -r secret.zip folder/ # 加密(弱安全,仅图防瞎看)
zip -9 archive.zip * # 最高压缩
zip -0 archive.zip * # 不压缩(仅打包)
unzip:解压
unzip archive.zip # 解压到当前目录
unzip archive.zip -d /tmp/ # 解压到指定目录
unzip -l archive.zip # 仅列出内容(不解压)
unzip -v archive.zip # 详细列表
unzip -p archive.zip file.txt # 解压某文件到 stdout
unzip -o archive.zip # 覆盖已存在文件(不问)
unzip -n archive.zip # 不覆盖
实战
给 Windows 同事打包代码
zip -r project.zip src/ docs/ -x "*.git/*" -x "node_modules/*"
解压一组 zip
for f in *.zip; do
unzip "$f" -d "${f%.zip}/"
done
加密压缩(一定程度的保密)
zip -e archive.zip files/ # 提示输密码
zip -P 'mypass' archive.zip files/ # 命令行传密码(不推荐——会进 shell history)
⚠ zip 加密安全性弱——只能挡住普通好奇心,专业破解快。敏感数据用 gpg:
tar czf - data/ | gpg -c > data.tar.gz.gpg
gpg -d data.tar.gz.gpg | tar xzf -
中文文件名乱码
Windows 创建的 zip 在 Linux 解压常乱码——加 -O CP936:
unzip -O CP936 windows-made.zip
坑
- 默认
zip -r保留路径结构——如果要扁平打包用-j - macOS 默认的 zip 会包含
.DS_Store和__MACOSX/——清理:zip -r ... -x "__MACOSX" "*.DS_Store" - 大文件 zip 慢于 tar+gzip——但 zip 是跨平台兼容的代价