当前位置:首页 > 文章列表 > 文章 > linux > Linux tar 与 zstd 组合时怎么保留权限和稀疏文件

Linux tar 与 zstd 组合时怎么保留权限和稀疏文件

来源:17golang原创 2026-09-07 19:54:32 0浏览 收藏

用 GNU tar 配合 zstd 归档时,创建命令建议写成 tar --zstd --sparse -cf backup.tar.zst data/。其中 --sparse 让 tar 识别并记录稀疏文件的空洞,--zstd 负责把 tar 归档流交给 zstd;恢复时再用 -p--same-permissions)按归档中的权限位创建文件。不要把 --sparse 当成解包阶段的“开关”,它只对创建或更新归档有意义。

要点速览
  • 创建:tar --zstd --sparse -cf backup.tar.zst data/
  • 恢复:tar --zstd -xpf backup.tar.zst -C restore/-p 用来减少 umask 对权限位的影响。
  • 复查:同时看 statdu --apparent-size 和普通 du,不要只看文件的逻辑大小。

创建阶段:tar 记录空洞,zstd 压缩归档流

tar 和 zstd 解决的是两层问题。tar 保存文件名、权限位、时间以及稀疏区间等归档信息,zstd 只负责压缩这份归档流。因此,权限恢复是否完整不能靠 zstd 判断,稀疏文件是否膨胀也不能只看压缩文件名。

Linux tar 与 zstd 创建归档时,权限字段和稀疏区间进入 tar,再由 zstd 形成 backup.tar.zst 的静态关系图
图1:创建阶段把文件属性和稀疏区间交给 tar 记录,再把归档流交给 zstd 压缩。

先确认源目录里确实有需要保留的属性:

# 查看工具实现,并记录逻辑大小与实际占用
tar --version
zstd --version
ls -ls data/sparse.img
stat -c '%A %a %b %s %n' data/sparse.img

stat 中的 %s 是逻辑字节数,%b 是实际分配块数;稀疏文件常见的特征就是前者很大、后者相对小。创建归档时使用:

# --sparse 记录空洞,--zstd 选择 zstd 压缩归档流
tar --zstd --sparse -cf backup.tar.zst data/

如果使用的不是 GNU tar,先检查它是否支持 --zstd--sparse;不要因为命令能创建文件,就默认它保留了相同的稀疏布局。

恢复阶段:权限由 -p 决定,空洞由 tar 元数据重建

在一个空的恢复目录中执行:

# -x 解包,-p 按归档权限位恢复,-C 把结果放入隔离目录
mkdir -p restore
tar --zstd -xpf backup.tar.zst -C restore

GNU tar 在普通用户解包时通常会让当前 umask 限制新文件权限;-p--same-permissions 表示按归档记录的模式设置权限。它不等于无条件恢复所有身份属性:文件所有者能否恢复还受执行用户权限和系统策略影响。稀疏布局则由 tar 读取归档中的空洞描述来重建,不需要在解包命令后再补一个“稀疏开关”。

Linux tar 与 zstd 恢复归档时,-p、umask、权限字段和稀疏区间共同影响恢复文件的静态关系图
图2:恢复阶段由 tar 读取权限和稀疏元数据;-p 决定权限位是否绕过 umask 的限制。

用三组检查确认没有悄悄膨胀

检查对象命令看什么
归档目录tar --zstd -tvf backup.tar.zst成员名、模式和归档内容是否齐全
权限位stat -c '%A %a %n' restore/data/file数字权限是否符合源文件
稀疏占用du -h restore/data/sparse.img; du -h --apparent-size restore/data/sparse.img实际块占用与逻辑大小是否被混淆

复查时要把恢复前后的 %s%b 和权限模式放在一起比较。逻辑大小相同而实际块数明显增加,通常说明空洞没有按预期保留;模式比源文件少了写权限或执行权限,则优先检查是否漏了 -p,以及目标目录是否确实由本次解包生成。

值班时的回滚边界

生产恢复不要直接覆盖业务目录。先解包到新的临时目录,完成成员列表、权限位和稀疏占用检查,再通过目录切换或受控同步替换目标。若目标环境有意限制权限,去掉 -p,让 umask 参与收紧模式;若要求尽量复原源目录,则保留 -p,但把所有者、ACL 和 SELinux context 作为另外的检查项处理。这样即使归档内容不符合预期,也只需删除隔离目录,不会破坏正在运行的文件。

常见问题

只加 --zstd,不加 --sparse,会怎样?

普通文件仍能归档,但稀疏文件可能按展开后的零数据读取,归档中间层会变大;有稀疏文件的备份应在创建命令中显式加上 --sparse

解包时必须同时写 --sparse 吗?

不必。GNU tar 的 --sparse 是创建或更新归档时的选项,恢复稀疏布局依靠归档里已经保存的稀疏元数据。

-p 能恢复文件所有者吗?

不能把两者混为一谈。-p主要控制权限模式;所有者恢复还要看执行身份、目标系统策略以及 tar 的其他所有权行为。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go 命令行 flag 怎么把重复参数收集成切片Go 命令行 flag 怎么把重复参数收集成切片
上一篇
Go 命令行 flag 怎么把重复参数收集成切片
Go race 检测到测试数据竞争但单线程运行正常为什么
下一篇
Go race 检测到测试数据竞争但单线程运行正常为什么
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之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项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    173次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    104次使用
  • AI Prompt Library:免费AI提示词库,助力ChatGPT高效创作与营销
    AI Prompt Library
    探索AI Prompt Library免费资源库,涵盖营销、写作及多场景AI提示词。兼容ChatGPT、Claude等工具,一键复制优化输出,提升工作效率。
    31次使用
  • LangGPT提示词框架:结构化Prompt设计方法与开源工具指南
    LangGPT
    LangGPT是一种受编程语言启发的结构化提示词设计工具,提供双层框架、模块化模板及变量功能,帮助用户高效编写高质量Prompt。该项目已在GitHub免费开源,适用于内容创作、编程辅助等多场景。
    41次使用
  • ClickPrompt:AI提示词生成与优化工具,支持Stable Diffusion、ChatGPT及代码辅助
    ClickPrompt
    ClickPrompt是一款专为AI提示词编写者设计的开源在线工具,支持Stable Diffusion绘图、ChatGPT对话及GitHub Copilot代码辅助。提供Prompt自动生成、一键运行、社区分享及可视化优化功能,帮助用户高效获取精准AI输出。
    77次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码