Ubuntu 22.04打包Zip时如何不保留文件权限?
解决Ubuntu 22.04打包Zip时不保留文件权限的问题
问题核心
Ubuntu默认的zip命令会存储Unix文件权限信息,导致跨系统解压时出现权限问题,而Windows工具/7zip打包的Zip不会包含这些权限。仅用zip -X无法彻底去除权限(该参数仅排除扩展属性,不处理基础权限字段)。
有效解决方法
1. 调整zip命令参数,彻底清除权限信息
使用--no-extra参数去除包含权限的额外字段,配合-X确保扩展属性也不被保存:
# 打包单个文件 zip --no-extra -X testZip.zip ./index.html # 递归打包目录 zip --no-extra -X -r testZip.zip ./target_folder
2. 使用7zip打包(和Windows端行为完全一致)
Ubuntu下安装7zip工具:
sudo apt install p7zip-full
用7zip打包,默认不会存储Unix权限,和Windows操作结果一致:
# 打包单个文件 7z a testZip.zip ./index.html # 递归打包目录 7z a testZip.zip ./target_folder
3. 统一权限后再打包(适合标准化场景)
如果需要确保解压后权限为通用值(如文件644、目录755),可先批量修改权限再打包:
# 批量设置目录权限为755 chmod -R 755 ./target_folder # 批量设置文件权限为644 find ./target_folder -type f -exec chmod 644 {} \; # 打包(可选加-X排除扩展属性) zip -X -r testZip.zip ./target_folder
内容的提问来源于stack exchange,提问作者Dima Vosk
相关产品推荐
相关产品推荐

