当前位置:首页 > 文章列表 > 文章 > linux > Linux tar 打包时怎么排除日志和缓存目录

Linux tar 打包时怎么排除日志和缓存目录

来源:17golang原创 2026-09-05 23:29:23 0浏览 收藏

Linux 项目打包时,日志和缓存通常会占掉大量空间,却不是部署或备份必须保留的内容。最直接的做法是在 GNU tar 后面重复写 --exclude,并把通配模式放进单引号;排除规则较多时,再单独维护一个文件交给 -X。例如项目目录是 /srv/shop-api,可以这样打包:

tar 的排除匹配是按归档成员名工作的。排除 shop-api/var/log/ 这样的目录前缀后,其下面的日志文件也不会进入归档;命令中的 * 要交给 tar,而不是让当前 shell 先展开。
要点速览
  • 少量目录直接重复使用 --exclude='相对路径'。
  • 规则多或要复用时,用 --exclude-from=exclude.txt,一行写一个模式。
  • 打包后用 tar -tf 查看成员,确认日志、缓存没有混入。

先确定 tar 看到的路径边界

排除规则最容易出错的地方不是参数拼写,而是路径基准。若在 /srv 下执行并把 shop-api 作为归档对象,成员名通常以 shop-api/ 开头;若先切换到项目目录再打包,成员名可能从 var/、public/ 开始。两种写法都可以,但排除模式必须和归档清单中的名字一致。

直接通过 tar 命令的 --exclude 参数,指定要跳过的日志、缓存文件夹路径,就能在打包的时候自动排除对应内容,不需要额外先删除原文件。
tar 归档根目录、保留文件与日志缓存排除边界的静态关系图
图1:先区分归档根目录、需要保留的源码配置和需要排除的日志缓存边界。

推荐先列出目录,再决定规则:

cd /srv
find shop-api -maxdepth 3 -type d \( -name log -o -name logs -o -name cache -o -name caches \) -print

这一步只是确认路径,不会改变文件。不要把生成的归档放在待打包目录内部,否则下一次打包可能把上一次的 .tar.gz 也收入其中。

少量目录直接使用 --exclude

假设要排除项目下的 var/log、var/cache 和所有测试缓存目录,可以写成:

cd /srv
tar -czf /backup/shop-api-$(date +%F).tar.gz \
  --exclude='shop-api/var/log' \
  --exclude='shop-api/var/cache' \
  --exclude='shop-api/**/__pycache__' \
  shop-api

--exclude 可以重复使用。这里的单引号很重要:如果写成未加引号的 --exclude=shop-api/**/__pycache__,shell 可能先尝试展开星号,tar 收到的就不再是原本的模式。目录名中是否带末尾斜杠不必反复试错,关键是模式要覆盖归档成员的前缀,并在最终清单中确认。

规则较多时用 -X 维护排除文件

当多个项目共用一套排除策略,建议创建一个不放进项目目录的清单:

cat > /srv/backup-exclude.txt 

-X 是 --exclude-from 的短选项形式,文件按一行一个模式读取,适合放进备份脚本或版本化的运维配置。注释和空行要按实际 tar 版本的规则处理;不要把这个排除文件放到 shop-api 中并误以为它会自动生效,必须在命令中明确传给 -X。

tar 命令、排除规则文件、归档成员之间的静态关系图
图2:用排除规则文件集中管理目录模式,再把规则作用到归档成员集合。

用归档清单做最后核对

创建完成后,不需要解压就能检查成员:

tar -tzf /backup/shop-api-clean.tar.gz > /tmp/shop-api-members.txt
grep -E '(^|/)(var/log|var/cache|__pycache__|\.pytest_cache)(/|$)' \
  /tmp/shop-api-members.txt

没有输出通常表示这些目录没有进入归档;如果仍有匹配,先看清单中的实际前缀,再调整排除模式。常见问题是把 var/log 写成了 logs,或者从项目父目录打包时漏了 shop-api/ 这一层。

场景建议写法检查重点
一两个固定目录--exclude='shop-api/var/log'归档根目录是否一致
多条可复用规则--exclude-from=/srv/backup-exclude.txt一行一个模式,文件路径可读
不确定是否排除成功tar -tzf archive.tar.gz按实际成员名复查

几个容易踩中的边界

第一,--exclude 使用 shell 风格通配,不是正则表达式;第二,显式写在命令行中的文件,如果它的路径组件命中了排除规则,也可能被排除;第三,排除日志目录不等于排除审计所需的关键配置,建议把轮转后的摘要、配置和数据库备份分别判断。最后,先用一个测试归档验证模式,再把同一组参数放进定时任务,后续只需持续检查 tar -tf 的清单。

相关问题

为什么 --exclude='*.log' 没有按预期工作?

先确认归档成员是否确实以 .log 结尾,并确保星号被引号保护;如果日志集中在固定目录,写完整相对前缀通常比全局通配更容易控制范围。

-X 文件能不能写绝对路径?

排除模式应按 tar 处理的成员名来写,而不是凭源文件系统的绝对路径猜测。先运行 tar -tf 观察成员前缀,再把对应模式放入排除文件。

参考:GNU tar 手册的文件排除说明。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go slog 怎么统一添加请求 ID 和业务字段Go slog 怎么统一添加请求 ID 和业务字段
上一篇
Go slog 怎么统一添加请求 ID 和业务字段
Go rows.Next 返回 false 怎么区分结束和查询出错
下一篇
Go rows.Next 返回 false 怎么区分结束和查询出错
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    575次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    617次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    649次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    609次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    424次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码