【Linux】tar压缩工具常用参数详解

ops/2025/2/13 6:18:09/

tar 命令是 Unix/Linux 系统中用于文件打包和压缩的核心工具。它的名字来源于“tape archive”,最初设计用于磁带备份,但现在广泛用于文件归档。tar命令可以将多个文件或目录打包成一个单独的文件,通常称为tar包。之后,还可以使用压缩工具如gzip或bzip2进行压缩,生成.tar.gz或.tar.bz2等格式的压缩包。
以下是常用选项的详细介绍及示例:


基本选项

  1. -c(创建归档)
    用于创建新的归档文件。

    tar -cvf archive.tar file1 file2  # 打包 file1 和 file2 到 archive.tar
    
  2. -x(提取归档)
    用于解包归档文件中的内容。

    tar -xvf archive.tar           # 解压 archive.tar 到当前目录
    
  3. -v(详细模式)
    显示处理过程中的文件列表,便于跟踪进度。

    tar -cvf archive.tar dir/      # 打包时显示正在添加的文件
    
  4. -f(指定文件名)
    指定归档文件的名称(必须紧跟文件名)。

    tar -cvf archive.tar dir/      # 指定归档文件名为 archive.tar
    
  5. -t(列出内容)
    查看归档文件中的内容列表,但不解压。

    tar -tvf archive.tar           # 显示归档内的文件详细信息
    
  6. -C(切换目录)
    在执行操作前切换到指定目录,控制文件路径。

    tar -xvf archive.tar -C /target  # 解压到 /target 目录
    tar -cvf archive.tar -C /path/to/dir .  # 打包 /path/to/dir 下的内容(不包含父目录)
    

压缩选项

  1. -z(gzip 压缩)
    使用 gzip 压缩/解压,生成 .tar.gz.tgz 文件。

    tar -czvf archive.tar.gz dir/   # 创建并压缩为 .tar.gz
    tar -xzvf archive.tar.gz        # 解压 .tar.gz 文件
    
  2. -j(bzip2 压缩)
    使用 bzip2 压缩/解压,生成 .tar.bz2.tbz 文件。

    tar -cjvf archive.tar.bz2 dir/  # 创建并压缩为 .tar.bz2
    tar -xjvf archive.tar.bz2       # 解压 .tar.bz2 文件
    

组合使用示例

  • 创建压缩归档

    tar -czvf backup.tar.gz /path/to/data  # 打包并压缩为 .tar.gz
    tar -cjvf backup.tar.bz2 /path/to/data # 打包并压缩为 .tar.bz2
    
  • 解压到指定目录

    tar -xzvf backup.tar.gz -C /restore/path  # 解压 .tar.gz 到 /restore/path
    
  • 查看归档内容

    tar -tzvf backup.tar.gz          # 列出 .tar.gz 内的文件
    

注意事项

  1. 选项顺序

    • -f 必须紧跟文件名(如 tar -cvzf archive.tar.gz 正确,而 tar -czfv 错误)。
    • 组合选项时通常合并书写(如 -cvzf)。
  2. 压缩格式

    • 使用 -z-j 时,确保系统已安装对应工具(如 gzipbzip2)。
    • 较新的 tar 可能支持自动检测压缩类型,但显式指定更可靠。
  3. 路径安全

    • 避免打包绝对路径,防止解压时覆盖系统文件。建议结合 -C 控制路径。

扩展知识

  • 其他压缩格式

    • -J:使用 xz 压缩(生成 .tar.xz)。
    • --auto-compress:根据扩展名自动选择压缩方式(需支持)。
  • 排除文件

    tar -czvf archive.tar.gz --exclude="*.tmp" dir/  # 排除 .tmp 文件
    

http://www.ppmy.cn/ops/157977.html

相关文章

使用Python爬虫获取1688 App原数据API接口

一、引言 在电商领域,数据是企业决策、市场分析和产品优化的关键要素。1688作为国内领先的B2B电商平台,汇聚了海量的商品信息和交易数据。通过获取1688 App的原数据API接口,企业可以精准把握市场动态,了解竞争对手的策略&#xf…

Flink内存配置和优化

在 Apache Flink 1.18 的 Standalone 集群中,内存设置是一个关键配置,它直接影响集群的性能和稳定性。 Flink 的内存配置主要包括 JobManager 和 TaskManager 的内存分配。 以下是如何在 Standalone 模式下配置内存的详细说明。 JobManager 内存配置 Jo…

北斗导航 | 基于多假设解分离(MHSS)模型的双星故障监测算法(MATLAB代码实现——ARAIM)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 双星故障监测算法 一、多星故障MHSS模型流程1、数据预处理2、构建假设模…

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具,包括文本型、图像类的一些AI实践,最近DeepSeek突然爆火,从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF,免费附件链接给出。 1 本地 1 本地部…

ChatGPT怎么回事?

纯属发现,调侃一下~ 这段时间deepseek不是特别火吗,尤其是它的推理功能,突发奇想,想用deepseek回答一些问题,回答一个问题之后就回复服务器繁忙(估计还在被攻击吧~_~) 然后就转向了GPT&#xf…

机器学习随机森林算法——分类问题案例解析(sklearn)

1 集成学习的概念与分类 前面我们讲述的线性回归、K近邻、决策树等算法都是单一的弱学习器,在样本容量有限的条件下,它们实现的算法模型的性能提升空间较为有限。于是,统计学家们想出了一种集成学习(组合学习、模型融合&#xf…

Java学习进阶路线

Java基础 Java Web 前端HTML/css/js,J2EE(Servlet/jsp),数据库(Mysql/oracle) Java开发框架 Spring MVC/Mybatis/Herbernate/maven 《Java编程思想》 深入了解java基础 Java设计模式 《Effective j…

归并排序(C# C++)

目录 1 归并排序的基本概念 2 算法步骤 2-1 分解阶段 2-2 合并阶段 3 代码实现 3-1 C#代码示例(该代码在unity环境下) 3-2 C代码示例 1 归并排序的基本概念 归并排序(Merge Sort)是一种经典的分治算法,由约翰…