博客 / Linux/ Linux tar 命令详解:打包、压缩与解压完整指南

Linux tar 命令详解:打包、压缩与解压完整指南

Linux tar 命令详解:打包、压缩与解压完整指南

tar 命令简介

tar 是 Linux 和 Unix 系统中用于文件打包和归档的经典工具。其名称源于 "Tape ARchive"(磁带归档)。它可以将多个文件或目录打包成一个单一的归档文件(通常称为 tarball),并可结合压缩工具(如 gzip、bzip2)进一步减小文件体积。

基本命令格式

tar 命令的基本语法如下:

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

选项通常由一系列字母组成,其中主操作命令(如 -c, -x, -t)必须且只能选择一个。

常用操作命令与参数

主操作命令(必须选一个)

  • -c--create:创建新的归档文件。
  • -x--extract:从归档文件中提取文件(解压)。
  • -t--list:列出归档文件的内容。
  • -r--append:向归档文件末尾追加文件。
  • -u--update:仅追加比归档内文件更新的文件。

常用辅助参数

  • -f--file=ARCHIVE:指定归档文件名。此参数通常是必需的,且应放在参数列表的最后
  • -v--verbose:详细列出处理的文件。
  • -z--gzip:通过 gzip 过滤归档(用于 .tar.gz 或 .tgz 文件)。
  • -j--bzip2:通过 bzip2 过滤归档(用于 .tar.bz2 文件)。
  • -J--xz:通过 xz 过滤归档(用于 .tar.xz 文件,现代常用)。
  • -C--directory=DIR:解压或执行操作前,先切换到指定目录。
  • --exclude=PATTERN:排除匹配模式的文件或目录。

实战示例

1. 打包与压缩

仅打包,不压缩:将 /usr/local/test 目录打包为 test.tar

tar -cvf /usr/local/auto_bak/test.tar /usr/local/test

打包并用 gzip 压缩:生成 .tar.gz 文件。

tar -zcvf /usr/local/auto_bak/test.tar.gz /usr/local/test

打包并用 bzip2 压缩:生成 .tar.bz2 文件。

tar -jcvf /usr/local/auto_bak/test.tar.bz2 /usr/local/test

打包时排除特定文件/目录

tar -zcvf backup.tar.gz /path/to/dir --exclude=*.log --exclude=./cache

2. 查看归档内容

tar -tf archive.tar.gz

3. 解压操作

解压到当前目录

tar -zxvf test.tar.gz

解压到指定目录(使用 -C 参数):

tar -zxvf test.tar.gz -C /home

注意:原文中 tar -zxvf test.tar.gz /home 的写法是错误的,/home 会被当作需要从归档中提取的成员名,而非目标目录。正确用法是 -C /home

4. 其他格式压缩与解压示例

压缩

tar -czf photos.tar.gz *.jpg        # 创建 .tar.gz
tar -cjf photos.tar.bz2 *.jpg       # 创建 .tar.bz2
tar -cJf photos.tar.xz *.jpg        # 创建 .tar.xz (推荐,压缩率高)
zip -r photos.zip *.jpg             # 创建 .zip 文件

解压

tar -xvf file.tar                   # 解压 .tar
tar -xzvf file.tar.gz               # 解压 .tar.gz
tar -xjvf file.tar.bz2              # 解压 .tar.bz2
tar -xJvf file.tar.xz               # 解压 .tar.xz
unzip file.zip                      # 解压 .zip
unrar x file.rar                    # 解压 .rar (需安装 unrar)

常见压缩格式解压命令速查

文件扩展名 解压命令 说明
*.tar tar -xvf 解包 tar 归档
*.tar.gz*.tgz tar -xzvf 解压 gzip 压缩的 tar
*.tar.bz2 tar -xjvf 解压 bzip2 压缩的 tar
*.tar.xz tar -xJvf 解压 xz 压缩的 tar
*.zip unzip 解压 ZIP 归档
*.rar unrar x 解压 RAR 归档
*.gz (仅压缩,非 tar) gzip -dgunzip 解压 gzip 文件
*.bz2 (仅压缩,非 tar) bzip2 -dbunzip2 解压 bzip2 文件

最佳实践与注意事项

  1. 使用绝对路径与相对路径:打包时使用相对路径(如 ./dir)可以避免在解压时覆盖系统关键目录。使用 -P 参数才会保留绝对路径。
  2. 参数顺序:主命令(如 -c)通常在前,-f 参数及其文件名应在最后。
  3. 现代压缩选择:对于需要更高压缩率的场景,推荐使用 .tar.xz 格式(-J 参数),它比 .tar.gz.tar.bz2 压缩率更高,但压缩时间稍长。
  4. 验证归档:创建重要归档后,可使用 tar -tf archive.tar.gz 验证内容列表。

掌握 tar 命令是 Linux 系统管理的基础技能之一。通过组合不同的参数,你可以灵活地完成文件的备份、迁移和分发任务。

发表评论

您的邮箱不会公开。必填项已用 * 标注。