当前位置: 首页 > news >正文

Linux系统压缩解压指令详解与实例

📦 基础压缩工具

1. gzip / gunzip

最常用的单文件压缩工具

# 基本压缩 - 原文件会被替换
$ echo "This is a test file" > file.txt
$ ls -lh file.txt
-rw-r--r-- 1 user user 20B Jan 1 10:00 file.txt$ gzip file.txt
$ ls -lh file.txt.gz
-rw-r--r-- 1 user user 48B Jan 1 10:00 file.txt.gz
# 原file.txt被替换为file.txt.gz# 保留原文件压缩
$ gzip -c file2.txt > file2.txt.gz
$ ls
file2.txt file2.txt.gz# 最大压缩率
$ gzip -9 large_file.log# 解压文件
$ gunzip file.txt.gz
# 或
$ gzip -d file.txt.gz# 查看压缩文件信息
$ gzip -l file.txt.gz
compressed uncompressed ratio uncompressed_name
48 20 80.0% file.txt# 不解压查看内容
$ zcat file.txt.gz
This is a test file

2. bzip2 / bunzip2

高压缩率的单文件压缩工具

# 基本压缩
$ bzip2 file.txt
$ ls
file.txt.bz2# 保留原文件压缩
$ bzip2 -k file.txt
$ ls
file.txt file.txt.bz2# 最大压缩
$ bzip2 -9 large_file.dat# 解压文件
$ bunzip2 file.txt.bz2
# 或
$ bzip2 -d file.txt.bz2# 显示详细信息
$ bzip2 -v file.txt
file.txt: 0.119:1, 67.200 bits/byte, 740.00% saved, 20 in, 168 out.# 不解压查看内容
$ bzcat file.txt.bz2
This is a test file

3. xz / unxz

最高压缩率的单文件压缩工具

# 基本压缩
$ xz file.txt
$ ls
file.txt.xz# 保留原文件压缩
$ xz -k file.txt
$ ls
file.txt file.txt.xz# 极限压缩
$ xz -9e large_file.iso# 解压文件
$ unxz file.txt.xz
# 或
$ xz -d file.txt.xz# 查看压缩文件信息
$ xz -l file.txt.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 68 B 20 B 0.125 CRC64 file.txt.xz# 多线程压缩(如果支持)
$ xz -T4 large_file.img# 不解压查看内容
$ xzcat file.txt.xz
This is a test file

🗂️ 归档与压缩组合工具

4. tar - 最强大的归档工具

通常与压缩工具结合使用

# 创建tar归档
$ tar -cvf archive.tar file1.txt file2.txt dir1/
file1.txt
file2.txt
dir1/
dir1/subfile.txt# 查看tar归档内容
$ tar -tf archive.tar
file1.txt
file2.txt
dir1/
dir1/subfile.txt# 解压tar归档
$ tar -xvf archive.tar
file1.txt
file2.txt
dir1/
dir1/subfile.txt# 创建并gzip压缩
$ tar -czvf archive.tar.gz dir1/
dir1/
dir1/file1.txt
dir1/file2.txt# 创建并bzip2压缩
$ tar -cjvf archive.tar.bz2 dir1/# 创建并xz压缩
$ tar -cJvf archive.tar.xz dir1/# 解压gzip压缩的tar包
$ tar -xzvf archive.tar.gz# 解压bzip2压缩的tar包
$ tar -xjvf archive.tar.bz2# 解压xz压缩的tar包
$ tar -xJvf archive.tar.xz# 解压到指定目录
$ tar -xzvf archive.tar.gz -C /target/directory/# 创建归档时排除文件
$ tar -czvf backup.tar.gz --exclude="*.tmp" --exclude="cache" /home/user/# 增量备份(只备份新文件)
$ tar -czvf incremental.tar.gz --newer-mtime="2024-01-01" /data/

5. zip / unzip

跨平台兼容的压缩工具

# 压缩单个文件
$ zip archive.zip file.txt
adding: file.txt (stored 0%)# 压缩多个文件
$ zip archive.zip file1.txt file2.txt file3.txt# 递归压缩目录
$ zip -r project.zip my_project/
adding: my_project/ (stored 0%)
adding: my_project/main.py (deflated 15%)
adding: my_project/config.json (stored 0%)# 最大压缩率
$ zip -9 backup.zip large_file.dat# 加密压缩(设置密码)
$ zip -e secret.zip confidential.txt
Enter password: 
Verify password: # 分卷压缩(每卷100MB)
$ zip -s 100m -r split_archive.zip large_directory/# 查看压缩包内容
$ zip -sf archive.zip
Archive contains:
file1.txt
file2.txt
dir1/
Total 3 entries (103 bytes)# 详细列表
$ unzip -l archive.zip
Archive: archive.zip
Length Date Time Name
20 01-01-2024 10:00 file1.txt
35 01-01-2024 10:01 file2.txt
0 01-01-2024 10:02 dir1/
55 3 files# 解压文件
$ unzip archive.zip
Archive: archive.zip
extracting: file1.txt
extracting: file2.txt
creating: dir1/# 解压到指定目录
$ unzip archive.zip -d /target/directory/# 安静模式解压
$ unzip -q archive.zip# 覆盖解压(不提示)
$ unzip -o archive.zip# 测试压缩包完整性
$ unzip -t archive.zip
Archive: archive.zip
testing: file1.txt OK
testing: file2.txt OK
No errors detected in archive.zip

6. 7z / 7za

高压缩率的多格式工具

# 安装7z(如果未安装)
$ sudo apt install p7zip-full  # Debian/Ubuntu
$ sudo yum install p7zip      # CentOS/RHEL# 压缩文件/目录
$ 7z a archive.7z file1.txt dir1/
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
Scanning the drive:
2 files, 103 bytes (1 KiB)
Creating archive: archive.7z
Items to compress: 2
Files read from disk: 2
Archive size: 200 bytes (1 KiB)
Everything is Ok# 最大压缩率
$ 7z a -mx=9 backup.7z large_file.iso# 分卷压缩(每卷50MB)
$ 7z a -v50m split.7z large_file.dat# 加密压缩
$ 7z a -p password.7z secret_files/
Enter password (will not be echoed):
Reenter password:# 查看压缩包内容
$ 7z l archive.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
Listing archive: archive.7z
Path = archive.7z
Type = 7z
Physical Size = 200
Headers Size = 138
Method = LZMA2:12
Solid = -
Blocks = 1
Date Time Attr Size Compressed Name
2024-01-01 10:00:00 ....A 20 20 file1.txt
2024-01-01 10:01:00 ....A 35 35 file2.txt
2024-01-01 10:02:00 D.... 0 0 dir1
2 55 55 2 files, 1 folders# 解压文件
$ 7z x archive.7z
Everything is Ok
Files: 2
Size: 55
Compressed: 200# 解压到指定目录
$ 7z x archive.7z -o/target/directory/# 测试压缩包完整性
$ 7z t archive.7z
Everything is Ok

🔄 特殊压缩工具

7. rar / unrar

商业压缩工具(需要安装)

# 安装(Debian/Ubuntu)
$ sudo apt install rar unrar# 压缩文件
$ rar a archive.rar file1.txt file2.txt# 压缩目录
$ rar a -r project.rar my_project/# 分卷压缩(每卷10MB)
$ rar a -v10m split.rar large_file.iso# 设置密码
$ rar a -p secret.rar confidential/# 解压文件
$ unrar x archive.rar# 查看压缩包内容
$ unrar l archive.rar# 测试压缩包
$ unrar t archive.rar

8. zstd

现代高性能压缩工具

# 安装
$ sudo apt install zstd# 压缩文件
$ zstd file.txt
file.txt -> file.txt.zst# 保留原文件压缩
$ zstd -k file.txt# 最大压缩率
$ zstd -19 large_file.dat# 解压文件
$ unzstd file.txt.zst
# 或
$ zstd -d file.txt.zst# 快速压缩(低压缩率,高速度)
$ zstd -1 file.txt# 查看压缩文件信息
$ zstd -l file.txt.zst

🛠️ 实用脚本与高级用法

9. 自动备份脚本示例

#!/bin/bash
# backup_script.shBACKUP_DIR="/backups"
SOURCE_DIRS=("/home/user" "/etc" "/var/www")
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/full_backup_$DATE.tar.gz"echo "开始备份: $(date)"# 创建备份目录
mkdir -p $BACKUP_DIR# 执行备份
tar -czf $BACKUP_FILE \--exclude="*.tmp" \--exclude="cache/*" \--exclude="*.log" \"${SOURCE_DIRS[@]}"# 检查备份是否成功
if [ $? -eq 0 ]; thenecho "备份成功: $BACKUP_FILE"echo "备份大小: $(du -h $BACKUP_FILE | cut -f1)"
elseecho "备份失败!"exit 1
fi# 清理7天前的备份
find $BACKUP_DIR -name "full_backup_*.tar.gz" -mtime +7 -deleteecho "备份完成: $(date)"

10. 压缩性能测试脚本

#!/bin/bash
# compression_test.shTEST_FILE="test_data.txt"
SIZE="100M"# 生成测试文件
echo "生成测试文件..."
dd if=/dev/urandom of=$TEST_FILE bs=1M count=100 status=progressecho -e "\n压缩测试结果:"
echo "文件类型 | 压缩时间 | 压缩后大小 | 压缩率"# gzip测试
echo -n "gzip -1 | "
time gzip -1 -c $TEST_FILE > test.gz 2>&1
GZ_SIZE=$(stat -c%s test.gz)
echo -n "$(echo "scale=2; ($GZ_SIZE/1024/1024)" | bc) MB | "
echo "$(echo "scale=1; (100-$GZ_SIZE*100/104857600)" | bc)%"# bzip2测试
echo -n "bzip2 -1 | "
time bzip2 -1 -c $TEST_FILE > test.bz2 2>&1
BZ_SIZE=$(stat -c%s test.bz2)
echo -n "$(echo "scale=2; ($BZ_SIZE/1024/1024)" | bc) MB | "
echo "$(echo "scale=1; (100-$BZ_SIZE*100/104857600)" | bc)%"# xz测试
echo -n "xz -1 | "
time xz -1 -c $TEST_FILE > test.xz 2>&1
XZ_SIZE=$(stat -c%s test.xz)
echo -n "$(echo "scale=2; ($XZ_SIZE/1024/1024)" | bc) MB | "
echo "$(echo "scale=1; (100-$XZ_SIZE*100/104857600)" | bc)%"# 清理
rm -f test.gz test.bz2 test.xz $TEST_FILE

11. 网络传输压缩示例

# 压缩并传输到远程服务器
$ tar -czf - /large/directory/ | ssh user@remote-server "cd /backup && tar -xzf -"# 从远程服务器下载并解压
$ ssh user@remote-server "tar -czf - /data/" | tar -xzf - -C /local/backup/# 使用rsync压缩传输
$ rsync -avz -e ssh /local/dir/ user@remote:/backup/dir/

📋 快速参考表

命令压缩解压查看内容特点
gzip filegunzip file.gzzcat file.gz速度快,通用
bzip2 filebunzip2 file.bz2bzcat file.bz2压缩率高
xz fileunxz file.xzxzcat file.xz最高压缩率
zip archive.zip fileunzip archive.zipunzip -l archive.zip跨平台
tar -czf archive.tar.gz dirtar -xzf archive.tar.gztar -tzf archive.tar.gz目录归档
7z a archive.7z file7z x archive.7z7z l archive.7z多格式支持

💡 最佳实践建议

  1. 日常使用: gziptar + gzip
  2. 高压缩率: xz7z
  3. 跨平台分享: zip
  4. 目录备份: tar + gzip/xz
  5. 大文件: 考虑分卷压缩
  6. 敏感数据: 使用加密压缩

掌握这些压缩解压指令将大大提高您在Linux环境下的工作效率。根据具体需求选择合适的工具,可以在压缩率、速度和兼容性之间找到最佳平衡。

http://www.dtcms.com/a/574752.html

相关文章:

  • 温州网站 公司甘肃建设厅官方网站项目负责人
  • 广州网站优化方式我要浏览国外网站怎么做
  • 建设银行长清网站python 网站建设 拖拽式
  • 绘画篇(2)
  • Python 内置函数原理解析:map, filter, zip, enumerate
  • wordpress 删除用户安卓优化大师老版本下载
  • 外贸网站建站案例网站建设5000费用
  • 【城市热岛效应识别】二维高斯模型拟合 UHI
  • 网站优化试卷网站备案核
  • 万网网站备份公共货运平台
  • Linux开发-->驱动开发-->字符设备驱动框架
  • 广州网站建设哪家公司承德网站制作公司优选网十科技
  • 一小时做网站做下载类网站前景
  • 【28】OpenCV C++实战篇——统计每个通道像素值的数量,统计R/G/B通道内像素值在某范围内的 总数
  • 江门市网站建设公司emlog to wordpress
  • 网站建设及优化方案苏州宿迁工业园区
  • 一键将指定文件夹内所有文件设置为只读/取消只读
  • linux: centos 软件包管理 yum源
  • 图像显示框架五——SurfaceFlinger的启动流程(基于Android 15源码分析)
  • 多线程之线程本地存储(Thread-Local Storage)
  • 基础数据结构之哈希表:两数之和(LeetCode 1 简单题)
  • 大公司网站建设建网站网站关键词书写步骤
  • 临沂网站建设优化网站开发业务规划
  • “移动政务”业务门户安全解决方案
  • 视频号网页版怎么发布视频优化网络的软件
  • 网站建设销售技巧和话术百度号码认证
  • 用什么软件快速做网站wordpress文章链接插件
  • 游戏网站建设杭州网站开发运营成本
  • 数字沙盘鹰眼导航电子沙盘:主副地图实时协同交互
  • 操作系统原理--进程线程