tar 是什么?
tar 是 'Tape Archive' 的缩写,最初是为了将数据备份到磁带而创建的。现在,它被用作 Linux 标准工具,用于将多个文件和目录打包成一个文件,以便于管理和传输。tar 本身只负责打包文件,压缩功能通过单独的选项(-z, -j, -J)指定。
核心操作模式
tar 一次只执行一种主要模式(创建、提取、列出)。
- -c (Create): 创建新的归档文件。
- -x (Extract): 从归档文件中提取文件。
- -t (List): 查看归档文件的内容(列表),无需解压。
- -f (File): 指定要操作的归档“文件”。几乎所有操作都必需此选项。
主要选项 (Shell)
tar 通过组合选项来使用。最重要的是选择 `-c`, `-x`, `-t` 中的一个。
1. 操作模式 (选择其一)
2. 文件和压缩指定
3. 目标和附加功能
生成的命令:
请尝试组合命令。
描述:
`tar` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用场景示例 (Shell)
最常用的组合示例。(选项前的 `-` 可以省略,但建议明确指定。)
使用 gzip 创建压缩文件 (.tar.gz)
tar -cvzf backup.tar.gz /home/user/data
c(创建), v(过程), z(gzip), f(文件) + [结果文件] + [目标]
解压 gzip 压缩文件 (.tar.gz)
tar -xvzf backup.tar.gz
x(提取), v(过程), z(gzip), f(文件) + [目标文件]
查看压缩文件内容列表 (.tar.gz)
tar -tvf backup.tar.gz
t(列表), v(过程), f(文件) (最新版 tar 会自动检测 -z)
解压到指定目录
tar -xvzf backup.tar.gz -C /opt/restore
使用 -C 选项指定路径。
使用 bzip2 创建压缩文件 (.tar.bz2)
tar -cvjf archive.tar.bz2 ./docs
使用 j(bzip2) 选项代替 z。
解压 bzip2 压缩文件 (.tar.bz2)
tar -xvjf archive.tar.bz2
排除特定文件/目录进行压缩
tar -cvzf app.tar.gz ./app --exclude="*.log" --exclude="node_modules"
使用 --exclude 选项。(可多次使用)
安装
tar 几乎预装在所有 Linux 发行版(和 macOS)中。(通常是 GNU tar)。如果因某种原因需要安装,可以使用 'tar' 包名进行安装。
已默认安装
几乎不需要单独安装。尝试输入 `tar --version` 查看版本。
Debian/Ubuntu (如有需要)
sudo apt update && sudo apt install -y tar
RHEL/CentOS/Fedora (如有需要)
sudo dnf install -y tar
提示与注意事项
实用技巧
- 省略连字符(-): 根据旧习惯,可以在第一个选项组中省略连字符,例如 `tar cvf ...`。(例如:`tar cvf` = `tar -cvf`)但为了清晰起见,建议加上 `-`。
- 自动检测压缩格式: 最新版 `tar` 在提取 (-x) 时,即使没有 `-z`、`-j`、`-J` 选项,也能根据文件扩展名自动检测压缩格式。(例如,只需输入 `tar -xf archive.tar.gz` 即可。)
- 保留权限 (-p): 系统备份后恢复时,使用 `-p` 选项保留文件权限和所有权非常重要。
- 路径问题 (-C): 如果想将文件解压到当前位置以外的其他地方,使用 `-C /路径` 选项比移动文件效率更高。
- 绝对路径注意事项: 创建 (-c) 时,如果使用 `/home/user` 这样的绝对路径打包文件,那么在提取 (-x) 时,文件也会解压到相同的绝对路径。(最新版 tar 出于安全考虑可能会去除开头的 `/`)尽可能使用相对路径打包更安全,例如 `cd /home && tar -cvf user.tar ./user`。