Linux文件打包与压缩

Linux文件打包与压缩全指南

适用系统说明

  • RPM系(CentOS/RHEL/Fedora):原生支持tar/gzip/bzip2/xz,需额外安装zip/unzip/7z
  • Debian系 (Debian/Ubuntu):默认支持tar/gzip/bzip2/xz/zip,需apt install p7zip-full安装7z
  • Arch系(Arch/Manjaro):通过pacman安装所有压缩工具

一、核心工具详解

1. ZIP跨平台压缩

安装部署

RedHat系

sudo yum install zip unzip

Debian系

复制代码
sudo apt install zip unzip
压缩操作
bash 复制代码
zip -r -9 -e secure.zip /path/to/dir  # 递归压缩+最高压缩率+加密
  • 关键参数
    • -r:递归子目录(必须用于目录压缩)
    • -s 100m:分卷压缩(生成secure.z01, secure.z02等)
    • -e:设置密码(交互式输入)
    • -T:压缩后验证文件完整性
解压操作
bash 复制代码
unzip -P 密码 -O gbk windows.zip  # 处理中文编码文件
  • 高级技巧
    • 修复损坏压缩包:zip -F broken.zip --out fixed.zip
    • 查看压缩内容:unzip -l archive.zip | grep keyword

2. TAR归档工具

多格式压缩支持
压缩类型 命令参数 文件后缀 适用场景
Gzip tar -zcvf .tar.gz 快速压缩(默认)1
Bzip2 tar -jcvf .tar.bz2 高压缩率需求
XZ tar -Jcvf .tar.xz 极致压缩率
无压缩 tar -cvf .tar 临时归档
高级操作示例
bash 复制代码
# 增量备份(仅打包24小时内修改的文件)
tar -cvf backup_$(date +%F).tar --newer-mtime="1 day ago" /data

# 排除指定文件类型
tar -zcvf project.tar.gz --exclude="*.tmp" --exclude=".git" ./project

3. 高效压缩工具

单文件压缩对比
工具 压缩命令 解压命令 压缩率 速度 适用场景
gzip gzip -9 file gunzip file.gz 日志文件快速压缩
bzip2 bzip2 -k file bunzip2 file.bz2 长期存储文件
xz xz -eT4 file unxz file.xz 最高 最慢 发行版镜像文件

注:-k参数保留源文件,-T4启用4线程加速


二、企业级场景解决方案

1. 加密压缩传输

bash 复制代码
# GPG加密+压缩组合方案
tar zcvf - /sensitive_data | gpg --symmetric --cipher-algo AES256 -o backup.tar.gz.gpg
  • 解密解压:gpg -d backup.tar.gz.gpg | tar zxvf -

2. 分卷压缩大文件

bash 复制代码
# 拆分10GB文件为多个1GB分卷(支持续传)
7z a -v1g -mx=9 bigfile.7z bigfile.iso
  • 解压时只需操作第一个分卷:7z x bigfile.7z.001

3. 自动化备份脚本

bash 复制代码
#!/bin/bash
BACKUP_NAME="dbbackup_$(date +%Y%m%d)"
tar -cpvzf ${BACKUP_NAME}.tar.gz \
    --exclude="*.sock" \
    --warning=no-file-changed \
    /var/lib/mysql

使用--warning=no-file-changed忽略运行中数据库文件变化警告


三、性能优化指南

1. 压缩参数调优

工具 最佳参数组合 效果
gzip gzip -6 平衡速度与压缩率(默认级别)
xz xz -T0 -6 多线程压缩(T0=自动检测核心数)
7z 7z a -mmt=on -mx=9 启用多线程+最大压缩率

2. 压缩格式选择矩阵

文件类型 推荐格式 理由
文本日志 gzip 快速压缩/高频访问
数据库备份 xz 节省存储空间
Windows共享文件 zip 跨平台兼容性
长期归档数据 bzip2 平衡压缩率与解压速度

四、故障排查手册

1. 常见错误处理

  • 解压CRC校验错误

    bash 复制代码
    unzip -t corrupted.zip  # 检测损坏文件
    zip -FF corrupted.zip --out repaired.zip  # 尝试修复
  • tar文件头损坏

    bash 复制代码
    dd if=broken.tar bs=1M skip=1000 | tar zxvf -  # 跳过损坏部分提取
  • 内存不足导致压缩失败

    bash 复制代码
    7z a -m0=PPMd:d256m -mmem=2G hugefile.7z /bigdata  # 限制内存使用

五、扩展工具推荐

1. 图形化工具

  • Ark(KDE):支持18种压缩格式,集成文件预览
  • File Roller(GNOME):原生支持7z/rar密码管理器集成

2. 高级压缩工具

工具 安装命令 特色功能
zstd sudo apt install zstd Facebook研发,高速压缩
lrzip yum install lrzip 基于LZMA的长期归档优化
pigz brew install pigz 多线程gzip替代方案
相关推荐
生命不息战斗不止(王子晗)6 分钟前
mybatis中${}和#{}的区别
java·服务器·tomcat
.生产的驴7 分钟前
Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
java·运维·数据库·spring·docker·容器·maven
cwywsx16 分钟前
Linux:进程控制2
linux·运维·算法
熙曦Sakura17 分钟前
【Linux网络】 HTTP cookie与session
linux·网络·http
南棱笑笑生20 分钟前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统下重新编译boot.img
linux·运维·ubuntu
Ha-gd34 分钟前
Linux基础开发工具一(yum/apt ,vim)
linux·服务器
charlie1145141911 小时前
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
linux·学习·架构·内存管理
Caron_xcb2 小时前
大数据——解决Matplotlib 字体不足问题(Linux\mac\windows)
大数据·linux·matplotlib
水水沝淼㵘2 小时前
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
linux·服务器·c语言·数据结构·学习·算法·排序算法
愚润求学2 小时前
【Linux】基础 IO(一)
linux·运维·服务器·开发语言·c++·笔记