tar 将多个文件或目录打包成一个单独的归档文件
一、基本概念
- 核心功能:将多个文件 / 目录合并为一个归档文件(.tar),或从归档文件中提取内容。
- 压缩结合:通过添加特定选项,可在打包时自动调用压缩工具(如 gzip),生成压缩包(如 .tar.gz)。
- 常见扩展名:.tar:未压缩的纯归档文件。
- .tar.gz 或 .tgz:经 gzip 压缩的 tar 包(最常用)。
- .tar.bz2 或 .tbz2:经 bzip2 压缩的 tar 包。
- .tar.xz:经 xz 压缩的 tar 包(压缩率更高,速度较慢)。
二、基本语法
tar [选项] 归档文件名.tar [要打包的文件/目录...] # 打包/压缩
tar [选项] 归档文件名.tar [目标目录] # 解压/提取
三、常用示例
1. 打包(不压缩,生成 .tar 文件)
# 将 file1.txt、dir1 目录打包为 archive.tar
tar -cvf archive.tar file1.txt dir1/
- -c:创建归档;-v:显示过程;-f:指定文件名(archive.tar)。
2. 打包并压缩(常用格式)
(1)gzip 压缩(.tar.gz 或 .tgz,最常用)
# 打包并以 gzip 压缩(.tar.gz)
tar -zcvf archive.tar.gz file1.txt dir1/
# 简写为 .tgz(效果相同)
tar -zcvf archive.tgz file1.txt dir1/
- -z:启用 gzip 压缩,压缩率中等,速度较快。
(2)bzip2 压缩(.tar.bz2)
tar -jcvf archive.tar.bz2 file1.txt dir1/
- j:启用 bzip2 压缩,压缩率略高于 gzip,速度稍慢。
(3)xz 压缩(.tar.xz,高压缩率)
tar -Jcvf archive.tar.xz file1.txt dir1/
- -J:启用 xz 压缩,压缩率最高,速度最慢(适合大文件归档)。
3. 解压(提取内容)
(1)解压到当前目录
# 解压 .tar 文件tar -xvf archive.tar# 解压 .tar.gz 或 .tgztar -zxvf archive.tar.gz# 或简化(tar 可自动识别压缩格式,部分版本支持):tar -xvf archive.tar.gz# 解压 .tar.bz2tar -jxvf archive.tar.bz2# 或简化:tar -xvf archive.tar.bz2# 解压 .tar.xztar -Jxvf archive.tar.xz# 或简化:tar -xvf archive.tar.xz注意:现代 tar 版本(如 GNU tar 1.23+)支持自动识别压缩格式,解压时可省略 -z/-j/-J,直接用 -xvf。
(2)解压到指定目录
使用 -C 选项指定目标目录(目录需提前存在):
# 将 archive.tar.gz 解压到 /tmp 目录tar -zxvf archive.tar.gz -C /tmp/
4. 查看归档文件内容(不解压)
# 查看 .tar 文件内容tar -tvf archive.tar# 查看 .tar.gz 文件内容tar -ztvf archive.tar.gz# 或简化(自动识别格式):tar -tvf archive.tar.gz
5. 打包时排除指定文件 / 目录
使用 --exclude 选项:
# 打包 dir1,但排除 dir1/logs 目录和所有 .tmp 文件tar -zcvf archive.tar.gz dir1/ --exclude "dir1/logs" --exclude "*.tmp"
6. 向已有 tar 包添加文件(仅支持未压缩的 .tar 文件)
# 向 archive.tar 中添加 new_file.txttar -rvf archive.tar new_file.txt
- 注意:压缩格式(.tar.gz 等)不支持添加文件,需解压后重新打包。
四、注意事项
- 选项顺序:-f 必须紧跟文件名,且通常放在选项最后(如 tar -zcvf 文件名 正确,tar -zcfv 文件名 错误)。
- 目录打包:打包目录时,目录名后是否带 / 不影响结果(dir1 和 dir1/ 效果相同)。
- 权限保留:默认情况下,tar 会保留文件的权限、所有者等信息(解压时需对应权限才能恢复)。
- 大文件处理:对于超大文件(如几十 GB),推荐用 xz 压缩(-J)以节省空间,但耗时较长。