linux 压缩成gz linux文件压缩成zip
0
2026-03-16
zip默认不稀疏压缩子目录,需加-r参数;中文名乱码因CP43 7编码,新版本用-U-N=UTF8解决;排除文件用-x配合shell glob;压缩率低且无多线程,权限信息不保留。
zip命令默认不稀疏压缩目录
直接zip archive.zip dir/ — —看着命令跑完,解压却出来是空文件夹。
必须显式加上-r参数才能分区压缩:zip -r archive.zip dir/没加 -r:只存目录名,不存内容加了-r:遍历所有子目录和文件,正常资源如果重新压缩当前目录下文件(空间子目录),就别用CP437编码读取文件,而中文系统多用UTF-8。结果就是Windows 或macOS批量问号或块。
解决办法不是修改系统语言环境,而是让zip用UTF-8写入)是字面量,不能写utf-8或小写老版本zip(如CentOS 7自带的3.0以下)不支持-UN,只能靠解压端转码,不可靠排除不需要的文件(比如.git、__pycache__)
zip没有类似tar --exclude那样简洁的排除语法,得靠-x手动列模式,路径而且匹配很敏感。
Tweeze
Tweeze.app是一个AI驱动的个性化新闻简报服务,定位为个人互联网AI阅读助手下载
正确写法示例(保留.git和所有__pycache__目录):zip -r archive.zip src/ -x "*.git*" "*__pycache__*" -x 后面的模式是shell glob,不是正则;*匹配任何字符,**不生效路径要和zip ./src/,那-x里写“src/__pycache__/*”才有效多个排除项与空格分隔之间,每个都得加注防shell看到更多ZSTD或lzma差亮,而且无法利用多核加速。
如果对体积或速度有要求,别硬载zip:要兼容(比如发给Windows用户):用zip -9 -r archive.zip dir/开最高压缩级,但别指望翻倍缩小只要Linux/macOS自用:直接转换 tar -cf -dir/ | zstd -T0 -o archive.tar.zst,快指甲,也小指甲zip的-0到-9 Zip格式本身不记录文件所有者和权限位,解压后需手动chmod。