tar
- tar命令功能速查表
- 基础格式与选项
- 常用命令示例表
- 高级功能表
- 压缩算法对比表
- ⚡ 实用技巧表
- 故障排除表
- 日常记忆口诀
- 1. 性能对比分析
- 2. 实际场景建议
- 3. 常用快速解压命令
- 4. 额外性能技巧
tar命令功能速查表
基础格式与选项
| 分类 | 选项 | 说明 | 常用组合 |
|---|---|---|---|
| 操作模式 | -c | 创建新归档 | tar -cf archive.tar files/ |
-x | 提取归档文件 | tar -xf archive.tar | |
-t | 列出归档内容 | tar -tf archive.tar | |
-r | 追加文件到归档 | tar -rf archive.tar newfile | |
-u | 更新(仅添加较新文件) | tar -uf archive.tar updated/ | |
| 压缩类型 | -z | 使用gzip压缩/解压 | .tar.gz或.tgz |
-j | 使用bzip2压缩/解压 | .tar.bz2 | |
-J | 使用xz压缩/解压 | .tar.xz | |
--lzma | 使用lzma压缩/解压 | .tar.lzma | |
-Z | 使用compress压缩/解压 | .tar.Z | |
| 常用参数 | -f | 指定归档文件名(必须) | 总是需要 |
-v | 显示详细过程(verbose) | 调试时使用 | |
-C | 改变到指定目录 | tar -xf file.tar -C /path/ | |
-p | 保留文件权限和属性 | 备份系统文件时重要 | |
--exclude | 排除文件/模式 | --exclude="*.tmp" |
常用命令示例表
| 场景 | 命令 | 说明 |
|---|---|---|
| 压缩 | tar -czf backup.tar.gz folder/ | 创建gzip压缩的tar包 |
tar -cjf backup.tar.bz2 folder/ | 创建bzip2压缩的tar包 | |
tar -cJf backup.tar.xz folder/ | 创建xz压缩的tar包(压缩率高) | |
| 解压 | tar -xzf backup.tar.gz | 解压gzip压缩包 |
tar -xjf backup.tar.bz2 | 解压bzip2压缩包 | |
tar -xJf backup.tar.xz | 解压xz压缩包 | |
tar -xf archive.tar | 解压普通tar包 | |
| 查看 | tar -tzf backup.tar.gz | 查看压缩包内容列表 |
tar -tvzf backup.tar.gz | 查看详细信息(权限、大小等) | |
| 部分操作 | tar -xzf backup.tar.gz file.txt | 只解压特定文件 |
tar -xzf backup.tar.gz dir/*.txt | 只解压匹配模式的文件 | |
tar --delete -f archive.tar file.txt | 从tar包删除文件 |
高级功能表
| 功能 | 命令 | 说明 |
|---|---|---|
| 保留权限 | tar -cpzf backup.tar.gz /etc/ | 备份系统文件保留所有属性 |
| 排除文件 | tar -czf backup.tar.gz --exclude="*.log" dir/ | 排除所有.log文件 |
| 多文件排除 | tar -czf backup.tar.gz --exclude="*.tmp" --exclude="cache/" dir/ | 排除多个模式 |
| 增量备份 | tar -g snapshot.snar -czf inc_backup.tar.gz dir/ | 基于时间戳的增量备份 |
| 跨卷分割 | tar -czf - bigdir/ | split -b 2G - big.tar.gz. | 分割成2GB一卷 |
| 恢复分割包 | cat big.tar.gz.* | tar -xzf - | 合并分割的压缩包 |
| 远程操作 | tar -czf - /data | ssh user@host "tar -xzf - -C /backup" | 直接备份到远程服务器 |
压缩算法对比表
| 算法 | 选项 | 扩展名 | 压缩率 | 速度 | 内存使用 | 适用场景 |
|---|---|---|---|---|---|---|
| gzip | -z | .tar.gz | 中等 | 快 | 低 | 日常使用、网页传输 |
| bzip2 | -j | .tar.bz2 | 较高 | 慢 | 中等 | 需要较高压缩率 |
| xz | -J | .tar.xz | 最高 | 很慢 | 高 | 长期归档、节省空间 |
| lzma | --lzma | .tar.lzma | 很高 | 很慢 | 高 | 类似xz |
| zstd | --zstd | .tar.zst | 高 | 很快 | 中等 | 现代推荐(需安装) |
注:zstd不是默认支持,需安装
zstd包:sudo apt install zstd
⚡ 实用技巧表
| 技巧 | 命令 | 解释 |
|---|---|---|
| 最快解压 | tar -xf archive.tar --no-same-owner | 跳过所有权检查(非系统文件) |
| 最快压缩 | tar -cf archive.tar dir/ | 不压缩,仅打包(最快) |
| 查看进度 | tar -xzf big.tar.gz | pv | tar -x | 使用pv显示进度(需安装pv) |
| 仅验证 | tar -tzf archive.tar >/dev/null && echo "OK" | 检查压缩包是否完整 |
| 创建时间戳 | tar -czf backup-$(date +%Y%m%d).tar.gz dir/ | 自动添加日期到文件名 |
| 并行压缩 | tar -cf - dir/ | pigz -9 > backup.tar.gz | 使用pigz多线程压缩 |
| 最小尺寸 | tar -c dir/ | xz -9e > backup.tar.xz | 最大压缩率(最慢) |
故障排除表
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| “Cannot open: No such file” | 文件不存在或路径错误 | 检查路径,使用绝对路径 |
| “file changed as we read it” | 文件在打包时被修改 | 忽略或重试,使用--warning=no-file-changed |
| 权限被拒绝 | 无读取/写入权限 | 使用sudo或检查权限 |
| 空间不足 | 磁盘空间不够 | df -h检查空间,清理或换位置 |
| “Not found in archive” | 文件名错误 | tar -tf archive.tar查看正确文件名 |
日常记忆口诀
c 创建 x 提取 t 查看 z gzip j bzip J xz f 文件 v 详情 C 目录 日常使用记心间!对于大多数用户,记住这些就足够了:
# 压缩:tar -czf 输出文件.tar.gz 要压缩的目录# 解压:tar -xzf 要解压的文件.tar.gz# 查看:tar -tzf 文件.tar.gz通常来说,在终端使用tar命令解压会比在图形界面(右键提取)更快,尤其是在处理大型压缩包时。
1. 性能对比分析
| 对比项 | 终端tar命令 | 图形界面(右键提取) |
|---|---|---|
| 速度 | 通常更快 | 通常稍慢 |
| 原因 | 1. 直接调用底层工具,无图形开销 2. 通常使用更高效的默认参数 | 1. 有图形界面进程开销 2. 通常需要先索引文件列表用于进度显示 3. 可能包含额外的文件校验或交互准备 |
| 资源占用 | 较低(纯命令行) | 较高(需加载文件管理器、进度窗口等) |
| 功能控制 | 丰富(可指定路径、排除文件、保留权限等) | 有限(通常只有基本选项) |
2. 实际场景建议
使用tar命令更优的情况:
- 大型压缩包(超过1GB):速度差异最明显,可能快10%-30%
- 批量解压多个文件:可以写循环脚本一键处理
- 远程/服务器环境:无图形界面时唯一选择
- 需要特定解压选项时:如只解压部分文件、保留特殊权限等
图形界面也可用的情况:
- 小型压缩包(几十MB):差异不明显,哪个方便用哪个
- 需要直观查看进度:图形进度条更友好
- 不熟悉命令行:避免输入错误路径
3. 常用快速解压命令
# .tar.gz 或 .tgztar-xzf filename.tar.gz# .tar.bz2tar-xjf filename.tar.bz2# .tar.xztar-xJf filename.tar.xz# .zip(需要安装unzip)unzipfilename.zip# 解压到指定目录tar-xzf filename.tar.gz -C /目标/路径4. 额外性能技巧
如果追求极致速度,还可以:
- 使用
pigz替代gzip(多线程压缩/解压):sudoaptinstallpigztar-I pigz -xf archive.tar.gz - 解压时跳过时间戳同步(对于大量小文件有优化):
tar--no-same-owner -xzf file.tar.gz