SuperAPI AI 工具集

tar-compression

部署与运维

查看项目

更新于 10-15 07:49

技能介绍

tar-compression 详细介绍

这是一个面向命令行的归档与压缩技能参考,主题为 tar 及各类压缩工具。资料未提供作者、许可、版本或安装方式等信息。

用途

用于在命令行中完成目录打包、文件压缩、归档检查、备份、跨主机传输等任务。当用户提到 tar、gzip、zip、unzip、compress 等关键词时适用。

主要能力

tar 基础操作

  • 创建:tar -cvf archive.tar dir/(不压缩)、tar -czvf archive.tar.gz dir/(gzip)、tar -cjvf archive.tar.bz2 dir/(bzip2)、tar -cJvf archive.tar.xz dir/(xz)、tar --zstd -cvf archive.tar.zst dir/(zstd)。
  • 解压:现代 tar 解压时自动识别压缩格式,tar -xvf 适用于所有格式;也可显式指定 -xzvf、-xjvf、-xJvf。
  • 标志位:-c 创建、-x 解压、-t 列表、-r 追加(仅未压缩 .tar)、-u 更新、-v 详细输出、-f 指定文件名(必须放在文件名前最后一位)、-z/-j/-J/--zstd 选择压缩算法、-C 切换目录、-p 保留权限、-h 跟随符号链接。
  • 追加、更新与排除:tar -rvf 追加、tar -uvf 仅更新较新文件;--exclude='*.log'、--exclude-vcs、--exclude-vcs-ignores、-X exclude.txt。

归档检查与部分解压

  • 查看:tar -tzvf archive.tar.gz,可配合 grep 或 --wildcards 匹配文件。
  • 部分解压:可提取单个文件、子目录、按模式提取、指定目标目录 -C、--strip-components=1 去除顶层目录。

权限、属主与符号链接

  • 完整保留(系统备份,需 root):tar -cpzvf ... --same-owner。
  • 跟随符号链接:-h。
  • 恢复属主:tar -xpzvf ... --same-owner -C /restore/。
  • 对比归档与文件系统:tar -dvf。
  • macOS 上 root 默认启用 --same-owner,GNU/Linux 需显式指定。

压缩算法对比

  • gzip(-z,.tar.gz):快,压缩率好,并行工具 pigz。
  • bzip2(-j,.tar.bz2):慢,压缩率更好,并行工具 pbzip2。
  • xz(-J,.tar.xz):很慢,压缩率最好,并行工具 pxz / pixz。
  • zstd(--zstd,.tar.zst):很快,压缩率更好,内置 -T 并行。
  • lz4:最快,压缩率较低,内置并行。
  • 资料给出 1 GB 混合数据单核的大致基准:lz4 约 2s 压缩、0.5s 解压、约 55% 大小;zstd -1 约 3s/1s/42%;gzip -6 约 12s/3s/36%;zstd -19 约 90s/1s/30%;xz -6 约 120s/8s/28%。经验法则:快速备份用 gzip/zstd,源码分发用 xz,通用场景用 zstd,实时场景用 lz4,bzip2 属旧格式可跳过。

各工具命令要点

  • gzip/gunzip:压缩默认删除原文件,-k 保留,-9 最大压缩,-l 显示压缩率,zcat 输出到 stdout。
  • zstd:默认级别 3,-19 最大标准级别,--ultra -22 超强模式,--fast 偏速度,-T0 使用全部 CPU 核心,--long 更大窗口。支持字典训练与使用(--train、-D),对小而结构相似的文件(日志、JSON、配置)可提升压缩率 2-5 倍;支持流式管道。
  • 并行压缩:pigz(gzip)、pbzip2(bzip2)、pxz(xz),也可通过 --use-compress-program 集成到 tar。
  • zip/unzip:创建、递归、排除、指定目录解压、提取单文件、-o 覆盖、-l 列表、zipinfo、-u 更新;-e 加密(ZipCrypto,较弱),资料建议需要安全时改用 7z 的 AES-256;-s 可拆分 zip。
  • 7z:创建、-mx=9 极限压缩、-ms=on 固实模式、-p 密码加 -mhe=on 加密内容与文件名、-v 分卷;解压 x 保留结构、e 扁平解压、-o 指定目录、l 列表、t 完整性测试;可读写 .7z、.zip、.tar、.gz、.bz2、.xz,可解压 .rar。

传输、备份与拆分

  • 通过 SSH 管道传输 tar,可从本地到远程、远程到本地,也可结合 zstd、pv(含限速)。
  • 增量备份:使用 --listed-incremental,先生成全量,再生成增量,恢复时按顺序应用,恢复阶段用 --listed-incremental=/dev/null 表示提取全部,仅 GNU tar 支持。
  • 拆分大归档:tar ... | split -b 100m - archive.tar.gz.part-,恢复时 cat archive.tar.gz.part-* | tar -xzvf -。

平台差异

  • macOS(BSD tar)对通配符是默认行为,不支持 --exclude-vcs-ignores 和 --listed-incremental,zstd 需通过 --use-compress-program;可用 brew install gnu-tar 安装 GNU tar(命令名 gtar);用 COPYFILE_DISABLE=1 避免生成 ._* 资源分叉文件。

使用方式

以命令行直接执行上述命令。资料未提供安装步骤,命令所依赖工具的获取方式暂未提供。

适用场景

日志与数据库转储压缩、源码分发、磁盘镜像、定期备份、跨主机传输、大文件拆分与合并、归档内容检查等。

限制与注意事项

  • -f 必须是归档名前最后一个标志,否则会出错。
  • -r 追加仅适用于未压缩的 .tar。
  • zip 的 ZipCrypto 加密较弱;需要强加密时使用 7z 的 AES-256。
  • 恢复属主需要 root 权限。
  • 增量备份与部分通配符、排除选项在 GNU tar 和 BSD tar 上行为不同。
  • 资料中的性能数字为大致基准,实际结果依赖数据与硬件。