当前位置:首页 > 文章列表 > 文章 > 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/logvar/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推荐
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    152次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    85次使用
  • ClickPrompt:AI提示词生成与优化工具,支持Stable Diffusion、ChatGPT及代码辅助
    ClickPrompt
    ClickPrompt是一款专为AI提示词编写者设计的开源在线工具,支持Stable Diffusion绘图、ChatGPT对话及GitHub Copilot代码辅助。提供Prompt自动生成、一键运行、社区分享及可视化优化功能,帮助用户高效获取精准AI输出。
    45次使用
  • PromptHero官网:AI提示词搜索、优化与学习平台,支持Midjourney/Stable Diffusion
    PromptHero
    PromptHero是专业的AI提示词搜索引擎与优化平台,支持Stable Diffusion、Midjourney等主流模型。提供海量提示词库、分类搜索、在线课程及社区互动,助力用户高效生成高质量AI图像与文本。
    25次使用
  • OpenArt免费开源指南:Stable Diffusion Prompt Book提示词手册详解
    Stable Diffusion Prompt Book
    深入解析OpenArt推出的Stable Diffusion Prompt Book,这本免费的开源提示词指南涵盖从基础语法到高级技巧,提供风格化词库与参数建议,助您优化AI绘画生成效果。
    28次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码