tar 是 Linux 系统中用于 打包、压缩、解压文件 的核心命令之一。它可以将多个文件或目录合并为一个归档文件(通常称为 .tar 文件),并支持通过不同的压缩算法进一步压缩(如 .tar.gz, .tar.bz2 等)。

基本语法

1
tar [选项] [文件名] [文件/目录...]

常用选项

选项 功能
-c 创建新的归档文件(Create)
-x 解压归档文件(eXtract)
-t 查看归档文件内容列表(Table of contents)
-v 显示操作过程的详细信息(Verbose)
-f 指定归档文件名(File)
-z 使用 gzip 压缩(如 .tar.gz
-j 使用 bzip2 压缩(如 .tar.bz2
-J 使用 xz 压缩(如 .tar.xz
-C 解压到指定目录(Change directory)
--exclude 排除指定文件/目录

常用场景示例

1. 打包文件/目录

1
tar -cvf archive.tar file1.txt dir1/
  • -c: 创建归档文件
  • -v: 显示详细信息
  • -f archive.tar: 指定归档文件名为 archive.tar
  • 最后列出要打包的文件或目录(如 file1.txtdir1/

2. 解压归档文件

1
tar -xvf archive.tar
  • -x: 解压操作
  • -f archive.tar: 指定要解压的文件

3. 压缩为 .tar.gz (gzip)

1
tar -czvf archive.tar.gz file1.txt dir1/
  • -z: 使用 gzip 压缩,适合快速压缩,压缩率中等。

4. 压缩为 .tar.bz2 (bzip2)

1
tar -cjvf archive.tar.bz2 file1.txt dir1/
  • -j: 使用 bzip2 压缩,压缩率高但速度较慢。

5. 压缩为 .tar.xz (xz)

1
tar -cJvf archive.tar.xz file1.txt dir1/
  • -J: 使用 xz 压缩,压缩率极高,但速度最慢。

6. 查看归档内容

1
tar -tvf archive.tar
  • -t: 列出归档中的文件列表。

7. 解压到指定目录

1
tar -xvf archive.tar -C /target/directory/
  • -C: 指定解压的目标目录。

8. 排除特定文件/目录

1
tar -cvf archive.tar --exclude="*.log" dir1/
  • 打包 dir1/ 目录时排除所有 .log 文件。

注意事项

  1. -f 选项必须放在最后
    错误示例:tar -fcv archive.tar
    正确示例:tar -cvf archive.tar

  2. 压缩与解压选项需对应
    例如:用 -z 压缩的文件需用 -z 解压(或直接让 tar 自动检测)。

  3. 保留文件权限
    默认情况下,tar 会保留文件权限和属性。若需保留所有元数据(如 SELinux 上下文),可添加 --selinux--xattrs 选项。

常用命令总结

功能 命令
打包 tar -cvf archive.tar files...
解包 tar -xvf archive.tar
打包并压缩(gzip) tar -czvf archive.tar.gz files...
解压(gzip) tar -xzvf archive.tar.gz
打包并压缩(bzip2) tar -cjvf archive.tar.bz2 files...
解压(bzip2) tar -xjvf archive.tar.bz2