跳转到内容

Linux文件压缩和解压详解

课程介绍

接下来我们学习文件压缩和解压。tar命令是Linux常用的归档工具,用于打包多个文件。常用选项有-c(创建)、-x(解压)、-z(gzip压缩)。比如tar -zcvf backup.tar.gz files/创建压缩包,tar -zxvf backup.tar.gz解压到当前目录。除了tar,还经常用zip和unzip命令处理.zip格式文件。压缩可以节省磁盘空间,方便文件传输。

1. tar命令详解

tar命令概述

tar命令是Linux系统中用于文件归档和压缩的核心命令,支持多种压缩算法。

常用选项

选项含义适用模式
-ccreate,创建压缩文件压缩模式
-vverbose,显示压缩/解压过程压缩/解压模式
-xextract,解压文件解压模式
-ffile,指定文件名压缩/解压模式
-z使用gzip压缩算法压缩/解压模式
-C指定解压目的地解压模式

重要规则:

  • -f选项必须放在所有选项的最后
  • -z选项建议放在选项开头
  • -c(压缩)和-x(解压)不能同时使用

2. 使用tar命令压缩文件

1. 创建普通tar包(无压缩)

bash
tar -cvf 归档文件名.tar 源文件1 源文件2

示例:

bash
tar -cvf test.tar file1.txt file2.txt file3.txt

2. 创建gzip压缩包(.tar.gz)

bash
tar -zcvf 压缩文件名.tar.gz 源文件1 源文件2

示例:

bash
tar -zcvf test.tar.gz file1.txt file2.txt file3.txt

验证压缩效果:

bash
ls -lh test.tar test.tar.gz

3. 使用tar命令解压文件

1. 解压普通tar包

bash
tar -xvf 归档文件名.tar

示例:

bash
tar -xvf test.tar

2. 解压gzip压缩包

bash
tar -zxvf 压缩文件名.tar.gz

示例:

bash
tar -zxvf test.tar.gz

3. 解压到指定目录

bash
tar -xvf 归档文件名.tar -C 目标目录
tar -zxvf 压缩文件名.tar.gz -C 目标目录

示例:

bash
tar -zxvf test.tar.gz -C /home/user/test/

4. zip和unzip命令详解

安装zip和unzip

bash
sudo dnf -y install zip unzip

1. 使用zip命令压缩文件

压缩单个或多个文件

bash
zip 压缩文件名.zip 文件1 文件2

示例:

bash
zip test.zip file1.txt file2.txt file3.txt

压缩包含文件夹的内容

bash
zip -r 压缩文件名.zip 文件夹1 文件2

示例:

bash
zip -r test2.zip folder/ file1.txt file2.txt

2. 使用unzip命令解压文件

解压到当前目录

bash
unzip 压缩文件名.zip

示例:

bash
unzip test.zip

解压到指定目录

bash
unzip 压缩文件名.zip -d 目标目录

示例:

bash
unzip test2.zip -d /home/user/test/

5. 实践操作:综合练习

实践1:使用tar命令

  • 创建普通tar包:

    bash
    mkdir -p test_dir
    touch test_dir/file1.txt test_dir/file2.txt test_dir/file3.txt
    tar -cvf files.tar test_dir/
  • 创建gzip压缩包:

    bash
    tar -zcvf files.tar.gz test_dir/
  • 验证压缩效果:

    bash
    ls -lh files.tar files.tar.gz
  • 解压到当前目录:

    bash
    rm -rf test_dir/
    tar -zxvf files.tar.gz
  • 解压到指定目录:

    bash
    mkdir -p new_dir
    tar -zxvf files.tar.gz -C new_dir/

实践2:使用zip/unzip命令

  • 压缩文件:

    bash
    zip test.zip file1.txt file2.txt file3.txt
  • 压缩包含文件夹:

    bash
    zip -r test2.zip test_dir/ file1.txt
  • 解压到当前目录:

    bash
    unzip test.zip
  • 解压到指定目录:

    bash
    unzip test2.zip -d /home/user/new_dir/

6. 不同压缩格式对比

特性.tar.tar.gz.zip
压缩率
创建速度
解压速度
跨平台
保留文件属性部分
支持文件夹
命令支持tartarzip/unzip

7. 常见问题与解决方案

问题解决方案
tar命令找不到确认系统已安装tar:which tar
zip/unzip命令找不到安装zip/unzip:sudo dnf install zip unzip
解压时文件被覆盖解压前备份同名文件,或使用-k选项保留原有文件
压缩包损坏检查压缩命令是否正确,重新创建压缩包
权限错误使用root权限或确保当前用户有足够权限

8. 命令速查

操作命令示例
创建tar包tar -cvf 包名.tar 文件tar -cvf test.tar file1.txt
创建tar.gz包tar -zcvf 包名.tar.gz 文件tar -zcvf test.tar.gz file1.txt
解压tar包tar -xvf 包名.tartar -xvf test.tar
解压tar.gz包tar -zxvf 包名.tar.gztar -zxvf test.tar.gz
解压到指定目录tar -xvf 包名.tar -C 目录tar -xvf test.tar -C /home/user/
创建zip包zip 包名.zip 文件zip test.zip file1.txt
创建带文件夹的zip包zip -r 包名.zip 文件夹 文件zip -r test.zip folder/ file1.txt
解压zip包unzip 包名.zipunzip test.zip
解压zip到指定目录unzip 包名.zip -d 目录unzip test.zip -d /home/user/

课程总结

这节课我们学了文件压缩和解压。

tar命令 - 常用压缩格式: tar -cvf 文件.tar 目录 - 打包成tar tar -czvf 文件.tar.gz 目录 - 压缩成tar.gz tar -xvf 文件.tar - 解压tar tar -xzvf 文件.tar.gz - 解压tar.gz

zip命令 - 跨平台兼容: zip -r 文件.zip 目录 - 压缩成zip unzip 文件.zip - 解压zip

常用参数:

  • c - 创建(create)
  • x - 解压(extract)
  • v - 显示详细过程(verbose)
  • f - 指定文件名(file)
  • z - 用gzip压缩

课后练习

  • 基础题:将当前目录下所有.txt文件压缩成tar.gz格式
  • 进阶题:将/home/user目录下的documents文件夹压缩成zip格式,并解压到/tmp目录
  • 综合题:比较三种压缩格式对同一组文件的压缩率和压缩时间

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径