Skip to content
Skillv1.0.0

tar-compression

归档与压缩

by chaterm(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from chaterm/terminal-skills (backup/tar-compression/SKILL.md). Install upstream with npx skills add chaterm/terminal-skills --skill tar-compression. Copyright stays with the author.

归档与压缩

概述

tar/gzip/xz 归档压缩、分卷备份技能。

tar 基础

创建归档

# 创建 tar 归档
tar -cvf archive.tar /path/to/dir

# 创建并 gzip 压缩
tar -czvf archive.tar.gz /path/to/dir

# 创建并 bzip2 压缩
tar -cjvf archive.tar.bz2 /path/to/dir

# 创建并 xz 压缩
tar -cJvf archive.tar.xz /path/to/dir

# 多个目录/文件
tar -czvf archive.tar.gz dir1 dir2 file1.txt

解压归档

# 解压 tar
tar -xvf archive.tar

# 解压 gzip
tar -xzvf archive.tar.gz

# 解压 bzip2
tar -xjvf archive.tar.bz2

# 解压 xz
tar -xJvf archive.tar.xz

# 解压到指定目录
tar -xzvf archive.tar.gz -C /target/dir

查看内容

# 列出内容
tar -tvf archive.tar
tar -tzvf archive.tar.gz

# 搜索文件
tar -tzvf archive.tar.gz | grep "filename"

常用选项

# 排除文件/目录
tar -czvf archive.tar.gz --exclude='*.log' --exclude='cache' /path

# 从文件读取排除列表
tar -czvf archive.tar.gz --exclude-from=exclude.txt /path

# 保留权限
tar -czvf archive.tar.gz --preserve-permissions /path

# 增量备份
tar -czvf archive.tar.gz --newer='2024-01-01' /path

压缩工具

gzip

# 压缩
gzip file.txt              # 生成 file.txt.gz,删除原文件
gzip -k file.txt           # 保留原文件
gzip -9 file.txt           # 最高压缩率

# 解压
gunzip file.txt.gz
gzip -d file.txt.gz

# 查看压缩文件
zcat file.txt.gz
zless file.txt.gz
zgrep "pattern" file.txt.gz

bzip2

# 压缩
bzip2 file.txt
bzip2 -k file.txt          # 保留原文件
bzip2 -9 file.txt          # 最高压缩率

# 解压
bunzip2 file.txt.bz2
bzip2 -d file.txt.bz2

# 查看
bzcat file.txt.bz2

xz

# 压缩
xz file.txt
xz -k file.txt             # 保留原文件
xz -9 file.txt             # 最高压缩率
xz -T 4 file.txt           # 多线程

# 解压
unxz file.txt.xz
xz -d file.txt.xz

# 查看
xzcat file.txt.xz

zstd

# 压缩
zstd file.txt
zstd -19 file.txt          # 最高压缩率
zstd -T0 file.txt          # 自动多线程

# 解压
unzstd file.txt.zst
zstd -d file.txt.zst

分卷备份

split 分割

# 按大小分割
split -b 100M archive.tar.gz archive.tar.gz.part_

# 按行分割
split -l 10000 largefile.txt part_

# 合并
cat archive.tar.gz.part_* > archive.tar.gz

tar 分卷

# 创建分卷
tar -czvf - /path/to/dir | split -b 100M - backup.tar.gz.part_

# 解压分卷
cat backup.tar.gz.part_* | tar -xzvf -

常见场景

场景 1:网站备份

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
WEB_DIR="/var/www/html"

# 创建备份
tar -czvf ${BACKUP_DIR}/web_${DATE}.tar.gz \
    --exclude='*.log' \
    --exclude='cache/*' \
    ${WEB_DIR}

# 保留最近 7 天
find ${BACKUP_DIR} -name "web_*.tar.gz" -mtime +7 -delete

场景 2:数据库备份压缩

# MySQL
mysqldump -u root -p database | gzip > db_backup.sql.gz

# 解压恢复
gunzip < db_backup.sql.gz | mysql -u root -p database

# PostgreSQL
pg_dump database | xz > db_backup.sql.xz

场景 3:增量备份

#!/bin/bash
SNAPSHOT="/backup/snapshot.snar"
BACKUP_DIR="/backup"
SOURCE="/data"

# 完整备份(首次)
tar -czvf ${BACKUP_DIR}/full.tar.gz -g ${SNAPSHOT} ${SOURCE}

# 增量备份
tar -czvf ${BACKUP_DIR}/incr_$(date +%Y%m%d).tar.gz -g ${SNAPSHOT} ${SOURCE}

场景 4:远程备份

# 本地压缩后传输
tar -czvf - /path/to/dir | ssh user@remote "cat > /backup/archive.tar.gz"

# 远程压缩
ssh user@remote "tar -czvf - /path/to/dir" > local_backup.tar.gz

压缩对比

格式 压缩率 速度 内存 适用场景
gzip 日常备份
bzip2 归档存储
xz 最高 最慢 长期存储
zstd 现代备份

故障排查

问题 排查方法
解压失败 检查文件完整性、格式
空间不足 使用管道、分卷
权限丢失 使用 --preserve-permissions
文件损坏 使用 gzip -t 测试
# 测试压缩文件
gzip -t file.gz
bzip2 -t file.bz2
xz -t file.xz

# 修复损坏的 gzip
gzrecover file.gz

# 查看压缩信息
gzip -l file.gz

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/chaterm-terminal-skills-tar-compression/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

chaterm-terminal-skills-tar-compression.ocm.jsonjson
{
  "ocm": "1",
  "id": "chaterm-terminal-skills-tar-compression",
  "kind": "skill",
  "name": "tar-compression",
  "description": "归档与压缩",
  "publisher": "chaterm",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "backup",
      "tar",
      "gzip",
      "xz",
      "compression",
      "archive",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "归档与压缩"
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/chaterm/terminal-skills",
      "path": "backup/tar-compression/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/chaterm/terminal-skills/blob/HEAD/backup/tar-compression/SKILL.md",
      "key": "chaterm/terminal-skills/backup/tar-compression/SKILL.md"
    }
  },
  "instructions": "# 归档与压缩\n\n## 概述\ntar/gzip/xz 归档压缩、分卷备份技能。\n\n## tar 基础\n\n### 创建归档\n```bash\n# 创建 tar 归档\ntar -cvf archive.tar /path/to/dir\n\n# 创建并 gzip 压缩\ntar -czvf archive.tar.gz /path/to/dir\n\n# 创建并 bzip2 压缩\ntar -cjvf archive.tar.bz2 /path/to/dir\n\n# 创建并 xz 压缩\ntar -cJvf archive.tar.xz /path/to/dir\n\n# 多个目录/文件\ntar -czvf archive.tar.gz dir1 dir2 file1.txt\n```\n\n### 解压归档\n```bash\n# 解压 tar\ntar -xvf archive.tar\n\n# 解压 gzip\ntar -xzvf archive.tar.gz\n\n# 解压 bzip2\ntar -xjvf archive.tar.bz2\n\n# 解压 xz\ntar -xJvf archive.tar.xz\n\n# 解压到指定目录\ntar -xzvf archive.tar.gz -C /target/dir\n```\n\n### 查看内容\n```bash\n# 列出内容\ntar -tvf archive.tar\ntar -tzvf",
  "cost": {
    "context_tokens": 886
  }
}

Fetch it by URL: GET /api/v1/registry/chaterm-terminal-skills-tar-compression/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.