当前位置: 首页 > news >正文

Linux基本命令篇 —— tar命令

    tar命令是Linux系统中用于归档文件的常用工具,名称来源于"Tape ARchive"(磁带归档)。它可以将多个文件或目录打包成一个归档文件(通常称为tarball),并支持压缩功能,可以高效地管理和备份Linux系统中的文件。下面详细介绍tar命令的用法。

目录

前言:

1、归档文件(Archive File)简介

2、关键特点

3、常见归档格式

4、与压缩的区别(重点)

5、总结

一、基本语法

二、常用选项

1、主要操作选项(必须选择其中一个)

补充说明:

2、压缩选项 

补充说明:

3、其他常用选项

三、常用示例

1、创建归档文件

创建普通tar归档(不压缩)

创建gzip压缩的归档(.tar.gz或.tgz)

创建bzip2压缩的归档(.tar.bz2)

创建xz压缩的归档(.tar.xz)

2、查看归档内容但不解压(选项-t)

列出归档内容

列出gzip压缩归档内容

3、提取归档文件(-x:用于解包文件)

补充:默认行为为覆盖(无特殊选项)

提取普通tar归档

提取gzip压缩归档

提取到指定目录

提取特定文件(选项-C 解压到指定目录)

4、高级用法

追加文件到现有归档

更新归档中已更改的文件

创建归档时排除特定文件

使用通配符提取多个文件

四、注意事项

详解第4点:

1. 默认行为:保留相对路径

2. 绝对路径的特殊处理

3. -P选项:保留绝对路径

4. 路径处理对比表

五、压缩效率比较


前言:

1、归档文件(Archive File)简介

归档文件(Archive File)是一种将多个文件和目录打包成一个单独文件的存储方式,主要用于:

  • 整理和备份(将分散的文件合并为一个文件)

  • 方便传输(只需发送/接收一个文件而非多个零散文件)

  • 保留文件结构(包括目录层级、权限等元数据)

2、关键特点

特性说明
多文件合并将多个文件或目录打包成单个文件(如 archive.tar
保留结构保持原始目录层级、文件权限、时间戳等属性
可选压缩可搭配压缩算法(如 gzip、bzip2)进一步减小体积(如 .tar.gz
不修改内容归档本身不改变文件内容,仅封装(压缩是额外操作)

3、常见归档格式

格式命令示例说明
.tartar -cvf file.tar dir/纯归档,未压缩
.tar.gztar -czvf file.tgz dir/用 gzip 压缩(速度快,通用)
.tar.bz2tar -cjvf file.tbz2 dir/用 bzip2 压缩(压缩率更高)
.tar.xztar -cJvf file.tar.xz dir/用 xz 压缩(压缩率最高,但慢)
.zipzip -r file.zip dir/跨平台格式(Windows/Linux 通用)

4、与压缩的区别(重点)

  • 归档(Archiving)
    仅将文件合并为一个包(如 .tar),体积不变
    示例:把 10 个 1MB 文件打包成一个 10MB 的 .tar 文件。

  • 压缩(Compression)
    通过算法减小文件体积(如 .tar.gz),体积变小(观察文件后缀,我们可以联想到意思是在归档的前提上可以再压缩)
    示例:将 10MB 的 .tar 压缩成 3MB 的 .tar.gz

5、总结

归档文件相当于一个“文件容器”用于高效管理大量零散文件。

  • 需要整理/备份? → 用 .tar

  • 需要减小体积? → 用 .tar.gz 或 .tar.xz

  • 跨平台分享? → 用 .zip


一、基本语法

        tar指令可以用来打包压缩和解压文件,并且还可以实现不解开压缩包,直接查看里面内容的操作,以及只打包不压缩等操作。

tar [选项] [归档文件名] [要归档的文件或目录...]

功能: 打包/解包,不解开压缩包,直接查看里面内容。 


二、常用选项

1、主要操作选项(必须选择其中一个)

短选项长选项功能描述
-c--create创建新的归档文件
-x--extract从归档文件中提取文件
-t--list列出归档文件中的内容
-r--append向归档文件末尾追加文件
-u--update仅添加比归档中更新的文件

补充说明:

  • -c:用于打包文件(通常结合 -f 指定文件名,如 tar -cvf archive.tar files...)。

  • -x:用于解包文件(如 tar -xvf archive.tar)。

  • -t:查看归档内容而不解压(如 tar -tvf archive.tar)。

  • -r:向已存在的 .tar 文件追加文件(注意:不能用于压缩归档如 .tar.gz)。

  • -u:仅添加比归档内文件更新的文件(类似 -r,但会检查文件时间戳)。

2、压缩选项 

短选项长选项压缩算法典型文件扩展名说明
-z--gzipgzip.tar.gz .tgz使用 gzip 压缩(速度较快,压缩率中等)
-j--bzip2bzip2.tar.bz2 .tbz2使用 bzip2 压缩(压缩率较高,但较慢)
-J--xzxz.tar.xz .txz使用 xz 压缩(最高压缩率,但最慢)
--lzma--lzmalzma.tar.lzma使用 LZMA 压缩(类似 xz,但较旧)
-Z--compresscompress.tar.Z使用 compress 压缩(较老算法,较少使用)

补充说明:

  1. -z / --gzip

    • 最常用,压缩速度较快,适合一般用途(如日志打包)。

    • 示例:tar -czvf archive.tar.gz files/

  2. -j / --bzip2

    • 压缩率比 gzip 高,但速度较慢,适用于需要更高压缩率的场景。

    • 示例:tar -cjvf archive.tar.bz2 files/

  3. -J / --xz

    • 压缩率最高(比 bzip2 更好),但速度最慢,适用于长期存储或大文件。

    • 示例:tar -cJvf archive.tar.xz files/

  4. --lzma:类似 xz,但较旧,现代系统推荐使用 -J(xz)代替。

  5. -Z / --compress:较老的 Unix 压缩算法,现在很少使用(gzip 和 xz 更常见)。

3、其他常用选项

短选项长选项功能描述
-v--verbose显示详细处理过程(列出正在处理的文件)
-f--file=ARCHIVE指定归档文件名(必须选项,后接 .tar.tar.gz 等文件名)
-C--directory=DIR解压到指定目录(如 tar -xvf file.tar -C /target/
-p--preserve-permissions保留文件权限(解压时保持原文件的权限和属性)
--exclude=PATTERN--exclude=PATTERN排除匹配 PATTERN 的文件(如 --exclude='*.log' 排除 .log 文件)
-h--dereference归档符号链接指向的实际文件(而非链接本身)
--wildcards--wildcards在提取时使用通配符匹配文件名(如 --wildcards '*.txt'

三、常用示例

1、创建归档文件

  1. 创建普通tar归档(不压缩)

    tar -cvf archive.tar file1.txt file2.txt dir1

  2. 创建gzip压缩的归档(.tar.gz或.tgz)

    tar -czvf archive.tar.gz file1.txt file2.txt dir1

  3. 创建bzip2压缩的归档(.tar.bz2)

    tar -cjvf archive.tar.bz2 file1.txt file2.txt dir1

  4. 创建xz压缩的归档(.tar.xz)

    tar -cJvf archive.tar.xz file1.txt file2.txt dir1

2、查看归档内容但不解压(选项-t)

  1. 列出归档内容

    tar -tvf archive.tar

  2. 列出gzip压缩归档内容

    tar -tzvf archive.tar.gz

3、提取归档文件(-x:用于解包文件)

补充:默认行为为覆盖(无特殊选项)

  • 覆盖现有文件:解包时会直接覆盖同名文件(内容替换)。

  • 不保留原文件属性

    • 文件内容 → 被归档中的版本覆盖

    • 文件权限 → 继承归档中的权限(除非用 -p 保留原权限)

    • 时间戳 → 更新为解压时的时间(不会保留归档中的时间戳!

更多的详细知识,可以到网上搜索相关的内容学习,毕竟博主也学不了这么多知识的!

  1. 提取普通tar归档

    tar -xvf archive.tar

  2. 提取gzip压缩归档

    tar -xzvf archive.tar.gz

  3. 提取到指定目录

    tar -xzvf archive.tar.gz -C ~/path

  4. 提取特定文件(选项-C 解压到指定目录)

    tar -xzvf archive.tar.gz -C ~/path/to

4、高级用法

  1. 追加文件到现有归档

    tar -rvf archive.tar newfile.txt

  2. 更新归档中已更改的文件

    tar -uvf archive.tar file1.txt
  3. 创建归档时排除特定文件

    tar -czvf archive.tar.gz --exclude='*.tmp' dir1
  4. 使用通配符提取多个文件

    tar -xzvf archive.tar.gz --wildcards '*.txt'

四、注意事项

  1. -f选项后面必须紧跟归档文件名,不能与其他选项合并(重点)

  2. 现代GNU tar通常可以自动检测压缩类型,因此有时可以省略-z-j等选项

  3. 使用-v选项可以查看详细过程,但在脚本中通常省略以避免输出干扰

  4. 在创建归档时,相对路径会被保留。如果需要绝对路径,可以使用-P选项(重点)

详解第4点:

1. 默认行为:保留相对路径

当使用tar创建归档时:

  • 相对路径(如./file.txtdir/file.txt)会被完整保留在归档中

  • 解压时会在当前目录还原相同的目录结构

示例:当前目录结构:./dir/file.txt

tar -cvf archive.tar dir/file.txt  # 归档
tar -xvf archive.tar              # 解压后会得到 ./dir/file.txt

2. 绝对路径的特殊处理

默认情况下:

  • 绝对路径(如/home/user/file.txt)会被tar自动去掉开头的/,变成相对路径

  • 这是安全机制,防止解压时覆盖系统重要文件

示例

tar -cvf archive.tar /etc/hosts  # 归档
tar -xvf archive.tar            # 解压后得到 ./etc/hosts 而非 /etc/hosts

3. -P选项:保留绝对路径

如果需要真正保留绝对路径:

  • 使用-P--absolute-names选项

  • 危险操作:可能导致系统文件被覆盖!

示例

tar -cvPf archive.tar /etc/hosts  # 保留绝对路径
tar -xPf archive.tar             # 解压到原始绝对路径

4. 路径处理对比表

情况-P选项使用-P选项
相对路径dir/file.txt → 保留同左
绝对路径/etc/hosts → 变成etc/hosts/etc/hosts → 保留原路径
安全提示安全(不会覆盖系统文件)危险(可能覆盖系统文件)

五、压缩效率比较

不同压缩方法的压缩效率和速度有所不同:

  • gzip (-z):速度较快,压缩率中等

  • bzip2 (-j):速度较慢,压缩率较高

  • xz (-J):速度最慢,压缩率最高

选择哪种压缩方式取决于你对速度和压缩率的需求。

http://www.dtcms.com/a/266086.html

相关文章:

  • 修改阿里云vps为自定义用户登录
  • 使用Feapder中的Dedup过滤数据
  • 【python】json.loads()函数处理字符串时不需要指定编码
  • Windows系统编程(Win32 API)
  • pytorch、torchvision与python版本对应关系
  • 什么是软中断
  • 使用Visual Studio 2022创建CUDA编程项目
  • Python爬虫 XPath 三方库lxml
  • Unity Android与iOS自动重启
  • Java综合练习04
  • js代码中的作用域
  • 深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
  • Mausezahn - 网络流量生成与测试工具(支持从链路层到应用层的协议模拟)
  • C++ 解决类相互引用导致的编译错误
  • 状态码301和302的区别
  • 智能设备远程管理:基于OpenAI风格API的自动化实践
  • 渗透靶机 Doctor 复盘
  • 粘包问题介绍
  • JS模块导出导入笔记 —— 默认导出 具名导出
  • 【嵌入式电机控制#8】编码器测速实战
  • C++讲解—类(2)
  • MCP+Cursor入门
  • AI 日报:阿里、字节等企业密集发布新技术,覆盖语音、图像与药物研发等领域
  • 前缀和与差分算法详解
  • 线程池相关介绍
  • SpringSecurity01
  • 【libm】 7 双精度正弦函数 (k_sin.rs)
  • 从混沌到澄明,AI如何重构我们的决策地图与未来图景
  • 把大象塞进冰箱总共分几步:讲讲dockerfile里conda的移植
  • IOC容器讲解以及Spring依赖注入最佳实践全解析