源本科技 | 码上会

Linux 中的 tar 命令

2026/01/20
88
0

学习目标

  • 理解 tar 命令的基本用途与工作原理

  • 掌握创建、查看、提取和更新 tar 归档文件的方法

  • 学会结合 gzip、bzip2 和 xz 实现压缩归档

  • 能够在实际开发和运维场景中灵活运用 tar 命令


什么是 tar

tar(全称 tape archive)是 Linux 和 Unix 系统中用于归档文件的经典命令。它最初设计用于将多个文件打包到磁带设备上,如今广泛用于将多个文件或目录合并为一个 .tar 文件(称为“tarball”)。

需要注意的是:tar 本身不进行压缩,它只是把多个文件“打包”在一起。但 tar 可以与压缩工具(如 gzip、bzip2、xz)结合使用,生成 .tar.gz.tar.bz2..tar.xz 等压缩归档文件。


基本语法

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

常用选项说明:

选项

含义

-c

创建新的归档文件(create)

-x

从归档中提取文件(extract)

-t

列出归档内容(list)

-f

指定归档文件名(必须紧跟文件名)

-v

显示详细过程(verbose)

-z

使用 gzip 压缩或解压(.gz)

-j

使用 bzip2 压缩或解压(.bz2)

-J

使用 xz 压缩或解压(.xz)

-r

向已有归档追加文件

-u

更新归档中已更改的文件

注意:-f 选项必须放在选项串的最后,并紧随其后指定文件名。


常见用法

1. 创建归档文件(不压缩)

tar -cvf backup.tar file1.txt dir1/
  • -c:创建新归档

  • -v:显示处理过程

  • -f backup.tar:指定输出文件名为 backup.tar

2. 查看归档内容

tar -tvf backup.tar

列出 backup.tar 中所有文件及其权限、大小、修改时间等信息。

3. 提取归档文件

tar -xvf backup.tar

backup.tar 中的所有内容解压到当前目录。

若只想提取特定文件:

tar -xvf backup.tar file1.txt

4. 创建 gzip 压缩归档

.tar.gz

tar -czvf project.tar.gz src/ docs/ README.md
  • -z 表示使用 gzip 压缩

  • 生成的文件通常命名为 .tar.gz.tgz

5. 解压 .tar.gz 文件

tar -xzvf project.tar.gz

6. 使用 bzip2 压缩

更高压缩率

tar -cjvf data.tar.bz2 dataset/

解压:

tar -xjvf data.tar.bz2

7. 使用 xz 压缩

最高压缩率,较慢

tar -cJvf logs.tar.xz /var/log/

解压:

tar -xJvf logs.tar.xz

重点总结

  • tar 是归档工具,不是压缩工具;压缩需配合 -z-j-J

  • 常用组合:

    • 打包压缩:tar -czvf name.tar.gz dir/

    • 解压:tar -xzvf name.tar.gz

  • -f 必须紧接归档文件名,且通常放在选项末尾

  • 压缩格式选择建议:

    • 通用性高 → .tar.gz(gzip)

    • 压缩率高 → .tar.bz2(bzip2)或 .tar.xz(xz)

  • 无法直接修改压缩后的 tar 归档,需完整解压后操作


思考题

  1. 为什么 tar -czf archive.tar.gz file.txt 不能使用 -r 选项追加文件?如何实现类似效果?

  2. 在备份大型项目时,如何使用 tar 排除临时文件(如 .git__pycache__)以减小归档体积?

  3. 假设你收到一个未知格式的归档文件 data.tar.xxx,如何判断其压缩类型并正确解压?