主题
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系统中用于文件归档和压缩的核心命令,支持多种压缩算法。
常用选项
| 选项 | 含义 | 适用模式 |
|---|---|---|
-c | create,创建压缩文件 | 压缩模式 |
-v | verbose,显示压缩/解压过程 | 压缩/解压模式 |
-x | extract,解压文件 | 解压模式 |
-f | file,指定文件名 | 压缩/解压模式 |
-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.txt2. 创建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.gz3. 使用tar命令解压文件
1. 解压普通tar包
bash
tar -xvf 归档文件名.tar示例:
bash
tar -xvf test.tar2. 解压gzip压缩包
bash
tar -zxvf 压缩文件名.tar.gz示例:
bash
tar -zxvf test.tar.gz3. 解压到指定目录
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 unzip1. 使用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.txt2. 使用unzip命令解压文件
解压到当前目录
bash
unzip 压缩文件名.zip示例:
bash
unzip test.zip解压到指定目录
bash
unzip 压缩文件名.zip -d 目标目录示例:
bash
unzip test2.zip -d /home/user/test/5. 实践操作:综合练习
实践1:使用tar命令
创建普通tar包:
bashmkdir -p test_dir touch test_dir/file1.txt test_dir/file2.txt test_dir/file3.txt tar -cvf files.tar test_dir/创建gzip压缩包:
bashtar -zcvf files.tar.gz test_dir/验证压缩效果:
bashls -lh files.tar files.tar.gz解压到当前目录:
bashrm -rf test_dir/ tar -zxvf files.tar.gz解压到指定目录:
bashmkdir -p new_dir tar -zxvf files.tar.gz -C new_dir/
实践2:使用zip/unzip命令
压缩文件:
bashzip test.zip file1.txt file2.txt file3.txt压缩包含文件夹:
bashzip -r test2.zip test_dir/ file1.txt解压到当前目录:
bashunzip test.zip解压到指定目录:
bashunzip test2.zip -d /home/user/new_dir/
6. 不同压缩格式对比
| 特性 | .tar | .tar.gz | .zip |
|---|---|---|---|
| 压缩率 | 无 | 高 | 中 |
| 创建速度 | 快 | 中 | 快 |
| 解压速度 | 快 | 中 | 快 |
| 跨平台 | 差 | 差 | 好 |
| 保留文件属性 | 是 | 是 | 部分 |
| 支持文件夹 | 是 | 是 | 是 |
| 命令支持 | tar | tar | zip/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 包名.tar | tar -xvf test.tar |
| 解压tar.gz包 | tar -zxvf 包名.tar.gz | tar -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 包名.zip | unzip 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目录
- 综合题:比较三种压缩格式对同一组文件的压缩率和压缩时间