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 -d 或 gunzip |
解压 gzip 文件 |
*.bz2 (仅压缩,非 tar) |
bzip2 -d 或 bunzip2 |
解压 bzip2 文件 |
最佳实践与注意事项
- 使用绝对路径与相对路径:打包时使用相对路径(如
./dir)可以避免在解压时覆盖系统关键目录。使用-P参数才会保留绝对路径。 - 参数顺序:主命令(如
-c)通常在前,-f参数及其文件名应在最后。 - 现代压缩选择:对于需要更高压缩率的场景,推荐使用
.tar.xz格式(-J参数),它比.tar.gz和.tar.bz2压缩率更高,但压缩时间稍长。 - 验证归档:创建重要归档后,可使用
tar -tf archive.tar.gz验证内容列表。
掌握 tar 命令是 Linux 系统管理的基础技能之一。通过组合不同的参数,你可以灵活地完成文件的备份、迁移和分发任务。