tar解压参数多记混?关键命令怎么用?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 参数 正文

tar 命令的模式

要明白 tar 命令通过一个选项来指定其操作模式,这个选项通常是单字符的,对于解压,最核心的模式是 -x

linux tar 解压 参数
(图片来源网络,侵删)
  • -x: extract,表示“解压”或“提取”。
  • 它的“对立面”是 -c (create,创建归档)。
  • 另一个常用模式是 -t (table,列出归档内容)。

最常用的解压参数组合

在实际使用中,我们很少只使用 -x,通常会结合其他选项来指定解压到哪里、是否显示过程、是否覆盖文件等。

基本解压到当前目录

这是最简单的用法,将归档文件中的所有内容解压到当前工作目录。

tar -xvf filename.tar

参数分解:

  • -x: extract,解压模式。
  • -v: verbose,详细模式,在解压时,会显示正在解压的文件名,如果不加 -v,命令会静默执行,适合在脚本中使用。
  • -f: file,指定归档文件名。这个选项后面必须紧跟归档文件的名称,这是 tar 命令的一个约定。-f 和文件名之间可以有空格,也可以没有,但通常习惯有空格。

示例:

# 解压名为 my_project.tar 的文件到当前目录,并显示解压过程
tar -xvf my_project.tar

按归档类型选择正确的解压方式

tar 本身只负责将多个文件“拼接”成一个文件(归档),并不负责压缩,压缩是通过其他工具(如 gzip, bzip2, xz)实现的,这些工具通常会修改归档文件的后缀名。

你需要根据文件后缀名来选择正确的参数组合。

解压 .tar.gz.tgz 文件 (gzip 压缩)

这是目前最常见的一种压缩归档格式。

# 方法一:分别指定参数
tar -xzvf filename.tar.gz
# 方法二:使用组合参数 (更推荐)
tar -xzf filename.tar.gz

参数分解:

  • -z: 这个参数告诉 tar 命令,归档文件是经过 gzip 压缩的。tar 会自动调用 gzip 进行解压。

示例:

# 解压一个名为 backup.tar.gz 的文件
tar -xzf backup.tar.gz
# 解压一个名为 logs.tgz 的文件
tar -xzf logs.tgz

解压 .tar.bz2 文件 (bzip2 压缩)

这种格式比 gzip 压缩率更高,但速度稍慢。

tar -xjvf filename.tar.bz2
# 更常见的写法
tar -xjf filename.tar.bz2

参数分解:

  • -j: 告诉 tar 命令,归档文件是经过 bzip2 压缩的。

解压 .tar.xz 文件 (xz 压缩)

这是目前压缩率最高的格式之一,但解压和压缩速度也最慢。

tar -xJvf filename.tar.xz
# 更常见的写法
tar -xJf filename.tar.xz

参数分解:

  • -J: (注意是大写的 J) 告诉 tar 命令,归档文件是经过 xz 压缩的,这是一个比较新的选项,在较新的 tar 版本中可用。

解压 .tar.Z 文件 (old Unix compress)

这是一种比较古老的压缩格式,现在很少见。

tar -xZvf filename.tar.Z

参数分解:

  • -Z: 告诉 tar 命令,归档文件是经过旧的 compress 工具压缩的。

其他常用且重要的解压参数

除了上述核心参数,还有一些非常实用的选项。

指定解压目录 (-C)

默认情况下,tar 会将文件解压到当前目录,如果你想把文件解压到指定的其他目录,可以使用 -C (大写) 选项。

tar -xzf filename.tar.gz -C /path/to/destination

参数分解:

  • -C: Change directory,指定解压的目标目录。

示例:

# 将一个软件包解压到 /opt 目录下
tar -xzf software-1.0.tar.gz -C /opt
# 将备份文件解压到 /var/backups 目录下
sudo tar -xzf system_backup_20251027.tar.gz -C /var/backups

只查看不解压 (-t)

有时候你只是想看看归档文件里有什么,而不是真的解压它,这时可以使用 -t (table) 模式。

# 查看 .tar.gz 文件的内容
tar -tzvf filename.tar.gz
# 查看 .tar.bz2 文件的内容
tar -tjvf filename.tar.bz2

参数分解:

  • -t: 列出归档文件中的内容。

覆盖已存在的文件 (--overwrite)

默认情况下,如果解压时目标目录已经存在同名文件,tar 会提示你并跳过该文件,不会覆盖,如果你想强制覆盖,需要使用 --overwrite 选项。

# 强制覆盖已存在的文件
tar --overwrite -xzf filename.tar.gz

注意: 这个选项在某些非常旧的 tar 版本中可能不支持,对于旧版本,可以先删除目标文件再解压。

不保留文件原有权限 (--no-same-permissions)

默认情况下,tar 会尝试保留归档文件中文件的原始权限(所有者、组、读/写/执行权限),如果你不希望这样做(以普通用户身份解压一个由 root 创建的归档文件,不想保留 root 的权限),可以使用 --no-same-permissions

# 解压时不保留原始权限
tar --no-same-permissions -xzf filename.tar.gz

注意: 这样解压出来的文件,其所有者会是当前执行命令的用户,权限也可能被修改。

忽略零字节文件 (--ignore-zeros)

这个选项用于处理损坏的归档文件,它告诉 tar 在遇到文件末尾的零字节块时不要停止,而是继续读取,有时可以恢复部分损坏的归档。

# 尝试解压一个可能损坏的归档文件
tar --ignore-zeros -xvf broken_archive.tar

完整参数列表速查表

组合命令 功能描述 示例
tar -xvf file.tar 解压 .tar 文件到当前目录 tar -xvf documents.tar
tar -xzvf file.tar.gz 解压 .tar.gz 文件 tar -xzvf project.tar.gz
tar -xjvf file.tar.bz2 解压 .tar.bz2 文件 tar -xjvf source.tar.bz2
tar -xJvf file.tar.xz 解压 .tar.xz 文件 tar -xJvf logs.tar.xz
tar -xvf file.tar -C /path 解压到指定目录 tar -xvf app.tar -C /opt
tar -tvf file.tar 查看 .tar 文件内容 tar -tvf data.tar
tar -tzvf file.tar.gz 查看 .tar.gz 文件内容 tar -tzvf backup.tar.gz
tar --overwrite -xzf file 强制覆盖已存在的文件 tar --overwrite -xzf config.tar.gz

tar 命解压的核心公式:

tar -[x/t] -[z/j/J/Z] -v -f filename.tar.[gz/bz2/xz] -C /path/to/dir

  • 第一个选项 -x-t 决定是解压还是查看。
  • 第二个选项 -z, -j, -J, 或 -Z 决定了解压哪种压缩格式,根据文件后缀来选择。
  • -v 可选,用于显示过程。
  • -f 必选,后面跟文件名。
  • -C 可选,用于指定解压路径。

对于初学者来说,tar -xzf (用于 .tar.gz) 和 tar -xjf (用于 .tar.bz2) 以及 -C 的用法,就能解决绝大多数问题了。

-- 展开阅读全文 --
头像
2025xps15 9560拆机
« 上一篇 今天
Seko智能电热茶盘壶,智能在哪?好用吗?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]