Linux tar 命令
1.分卷压缩与解压
Linux 下最通用的分卷压缩方式是结合tar(打包/压缩)与split(切割)命令使用管道流处理。
1.1 分卷压缩
将目录打包并分割成指定大小的多个文件。
# 语法tar-czvf -<要打包的目录>|split-b<分卷大小>-d -<输出文件前缀># 示例:将 logs 目录压缩,每卷 500MB,命名为 logs.tar.gz.00, logs.tar.gz.01...tar-czvf - logs/|split-b 500M -d - logs.tar.gz.参数解析:
tar -czvf -: 最后面的-代表输出到标准输出(Stdout),不写入磁盘文件。split -b 500M: 设置切割大小(单位:k,M,G)。split -d: 使用数字后缀(00, 01…)而非默认的字母(aa, ab…)。split -: 最后面的-代表从标准输入(Stdin)读取数据。
1.2 分卷解压
将多个分卷文件合并还原。
# 语法cat<分卷前缀>*|tar-xzvf -# 示例:解压上述 logs.tar.gz.00 等文件catlogs.tar.gz.*|tar-xzvf -原理:cat利用通配符读取所有分卷流,通过管道传回给tar进行解压。
2. 常用基础命令速查
2.1 压缩 (打包)
根据需求选择不同的压缩算法(压缩率:xz > bzip2 > gzip;速度则反之)。
.tar.gz(最常用,速度快)tar-czvf archive.tar.gz /path/to/folder.tar.bz2(压缩率较高)tar-cjvf archive.tar.bz2 /path/to/folder.tar.xz(压缩率最高,耗时久)tar-cJvf archive.tar.xz /path/to/folder
2.2 解压 (解包)
现代tar通常能自动识别压缩格式,只需记住-xvf即可,但显式指定算法更保险。
- 解压到当前目录
tar-xzvf archive.tar.gz - 解压到指定目录 (
-C参数)# 目标目录必须先存在mkdir-p /opt/backuptar-xzvf archive.tar.gz -C /opt/backup
2.3 查看内容 (不解压)
在解压大文件前,先查看里面有什么。
tar-tvf archive.tar.gz3. 参数详解表
| 参数 | 含义 | 备注 |
|---|---|---|
| -c | Create(创建) | 建立新的归档文件 |
| -x | Extract(提取) | 从归档文件中提取文件 |
| -t | List(列表) | 查看归档文件内容 |
| -v | Verbose(详细) | 显示处理过程(推荐使用) |
| -f | File(文件) | 指定归档文件名(必须是最后一个参数,后接文件名) |
| -C | Change Directory | 切换到指定目录进行解压 |
| -z | Gzip | 处理.tar.gz格式 |
| -j | Bzip2 | 处理.tar.bz2格式 |
| -J | Xz | 处理.tar.xz格式 |
4. 进阶技巧
4.1 排除特定文件/文件夹 (--exclude)
打包项目源码时,通常需要排除.git目录或编译生成文件。
# 注意:--exclude pattern 最好放在命令靠前位置,且不加前导斜杠tar--exclude='.git'--exclude='*.o'-czvf project.tar.gz ./project_src4.2 仅打包,不压缩
如果你只是想把一堆文件变成一个包(方便传输),但不消耗 CPU 压缩:
tar-cvf bundle.tar /path/to/files4.3 相对路径 vs 绝对路径
警告:尽量不要使用绝对路径(如/home/user/data)打包。
- 坏处:解压时会强制覆盖绝对路径下的文件,可能导致系统文件损坏或权限问题。
- 做法:先
cd到父目录,使用相对路径打包。
# 推荐做法cd/home/user/tar-czvf data.tar.gz ./data