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。