如何在Python中压缩目录并高效排除隐藏文件?
压缩静态站点目录时排除隐藏文件的高效方法
使用 tar 命令(Linux/macOS 通用)
tar 是类 Unix 系统下最常用的压缩工具,通过参数就能轻松排除不需要的隐藏文件/目录:
排除所有隐藏内容
如果要一次性排除所有以 . 开头的文件和目录,用 --exclude='.*' 参数:
tar -czf site.tar.gz --exclude='.*' /path/to/your/site
要是有需要保留的隐藏文件(比如 .htaccess),可以追加 --include 参数单独指定:
tar -czf site.tar.gz --exclude='.*' --include='.htaccess' /path/to/your/site
精准排除指定隐藏项
如果只需要排除 .git、.github 这类体积大的特定目录,直接列出排除项即可:
tar -czf site.tar.gz --exclude='.git' --exclude='.github' --exclude='.gitignore' /path/to/your/site
使用 zip 命令(跨平台)
zip 命令通过 -x 参数实现排除,适合 Windows、macOS 等多平台场景:
排除所有隐藏内容
zip -r site.zip /path/to/your/site -x '.*'
精准排除指定隐藏项
注意 zip 需要给目录加上 /* 来匹配内部所有内容,避免只排除目录本身但漏掉文件:
zip -r site.zip /path/to/your/site -x '.git/*' '.github/*' '.gitignore'
利用 .gitignore 批量排除(推荐)
如果你的项目已经有 .gitignore 文件,直接复用里面的规则能省不少事:
针对 tar
--exclude-vcs 参数会自动排除所有版本控制目录(比如 .git、.svn),再结合 --exclude-from 读取 .gitignore 规则:
tar -czf site.tar.gz --exclude-vcs --exclude-from=.gitignore /path/to/your/site
针对 zip
先过滤掉 .gitignore 里的注释行,再把规则转为 zip 能识别的格式:
zip -r site.zip /path/to/your/site -x $(cat .gitignore | grep -v '^#' | tr '\n' ' ')
内容的提问来源于stack exchange,提问作者conner.xyz
相关产品推荐
相关产品推荐

