linux+ubuntu:ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件

本文介绍了Linux系统中常用的压缩格式,包括zip、tar、tar.gz及tar.bz2等,并提供了压缩与解压缩的具体命令示例。

本篇转载自:http://blog.sina.com.cn/s/blog_5da93c8f0101h1uj.html

在Linux下面如何去压缩文件或者目录呢?
在这里我们将学习zip, tar, tar.gz和tar.bz2等压缩格式的基本用法。

首先了解下Linux里面常用的压缩格式。

在 我们探究这些用法之前,我想先跟大家分享一下使用不同压缩格式的经验。当然,我这里讲到的只是其中的一些用法,除我讲到的之外,他们还有更多的地 方值得 我们探讨。我已经意识到我需要了解两到三种压缩格式,才能更好的使用他们。zip格式是第一个需要了解的格式。因为它实际上已成为压缩文件的标准选 择, 而且它在windows上也能使用。我经常用zip格式压缩那些需要共享给windows用户的文件。如果只是共享给linux用户或者Mac用户, 那 我偏向于选择tar.gz格式。

ZIP ——zip可能是目前使用得最多的文档压缩格式。
它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。闲话少说,我们步入正题吧:
我们可以使用下列的命令压缩一个目录:

zip -r archive_name.zip directory_to_compress

下面是如果解压一个zip文档:

unzip archive_name.zip

TAR
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。
下面是如何打包一个目录:

tar -cvf archive_name.tar directory_to_compress

如何解包:

tar -xvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

tar -xvf archive_name.tar -C /tmp/extract_here/

TAR.GZ
这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。
使用下面这种格式去压缩一个目录:

tar -zcvf archive_name.tar.gz directory_to_compress

解压缩:

tar -zxvf archive_name.tar.gz

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

TAR.BZ2
这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。
这个就是你如何使用tar.bz2进行压缩。

tar -jcvf archive_name.tar.bz2 directory_to_compress

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/

数据压缩是非常有用的,尤其是对于备份来说。所以,你现在应该考虑在你的备份脚本中使用你在这里学到的压缩方式备份你基本的规则文件以减小你备份文件的大小。

过段时间之后,你就会意识到,在压缩率与CPU占用时间上会有一个平衡,你也要学会如何去权衡什么时候你需要一个快但是压缩率低,什么时候需要一个压缩率高但是CPU点用高的压缩方式,然后你才能避免无谓的空间与时间。

压缩 tar –cvf jpg.tar .jpg //将目录里所有jpg文件打包成tar.jpg tar –czf jpg.tar.gz .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz tar –cjf jpg.tar.bz2 .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 tar –cZf jpg.tar.Z .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z rar a jpg.rar .jpg //rar格式的压缩,需要先下载rar for linux zip jpg.zip .jpg //zip格式的压缩,需要先下载zip for linux 解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf file.tar.bz2 //解压 tar.bz2 tar –xZvf file.tar.Z //解压tar.Z unrar e file.rar //解压rar unzip file.zip //解压zip

总结:
1、.tar 用 tar –xvf 解压 2、.gz 用 gzip -d或者gunzip 解压 3、.tar.gz和.tgz 用 tar –xzf 解压 4、.bz2 用 bzip2 -d或者用bunzip2 解压 5、.tar.bz2用tar –xjf 解压 6、.Z 用 uncompress 解压 7、.tar.Z 用tar –xZf 解压 8、.rar 用 unrar e解压 9、.zip 用 unzip 解压

<think>我们之前讨论了如何将文件压缩成不同的格式,现在用户想要解压缩这些文件。用户提供了四个文件:snow.zip、rain.gz、flower.bz2、grass.tar.bz2,需要分别解压缩。 根据不同的压缩格式,解压缩的方法也不同: 1. snow.zip -> 使用unzip命令 2. rain.gz -> 使用gunzipgzip -d命令 3. flower.bz2 -> 使用bunzip2bzip2 -d命令 4. grass.tar.bz2 -> 这是一个先用tar打包再用bzip2压缩文件,所以我们需要使用tar命令同时进行解包解压。 另外,我们需要注意: - 有些命令默认会删除压缩文件(如gzipbzip2压缩时如果不加-k则删除原文件),但解压时默认行为如何? 实际上,解压gzipbzip2默认会删除压缩文件,但我们通常希望保留压缩文件。因此,我们可以使用相应的参数来保留压缩文件,或者使用其他方法。 具体步骤: 1. 解压snow.zip: 命令:`unzip snow.zip` 这会解压出snow文件,并保留snow.zip2. 解压rain.gz: 命令:`gzip -d rain.gz` 或者 `gunzip rain.gz` 默认情况下,解压后会删除rain.gz,如果我们想保留压缩文件,可以这样做: `gunzip -c rain.gz > rain` 或者 `gzip -dc rain.gz > rain` 但是,更简单的方法是在解压后保留压缩文件,我们可以使用`-k`选项(在较新版本的gzip中支持保留): `gzip -dk rain.gz` 或者 `gunzip -k rain.gz` 注意:有些系统上的gzip版本可能不支持`-k`选项(如macOS默认的gzip不支持-k,但Linuxgzip通常支持)。如果不支持,我们可以先复制一份再解压,或者使用重定向方法。 考虑到兼容性,如果系统不支持`-k`,我们可以这样: `gunzip -c rain.gz > rain` # 这样rain.gz会保留 3. 解压flower.bz2: 命令:`bzip2 -d flower.bz2` 或者 `bunzip2 flower.bz2` 同样,默认会删除压缩文件。为了保留压缩文件,我们可以使用`-k`选项(bzip2-k选项在大多数系统都支持): `bzip2 -dk flower.bz2` 或者使用重定向(如果不想删除原压缩文件): `bzip2 -dc flower.bz2 > flower` 4. 解压grass.tar.bz2: 这是一个tar包再用bzip2压缩的,所以我们使用tar命令的-j选项来解压: `tar -xjf grass.tar.bz2` 这里参数说明: -x: 解压 -j: 使用bzip2解压 -f: 指定文件 默认情况下,解压后保留压缩文件。 总结命令: 假设我们想要保留压缩文件,并且系统支持相应的选项(特别是gzipbzip2-k选项),那么: 1. `unzip snow.zip` --> 解压后得到snow,保留snow.zip 2. `gunzip -k rain.gz` --> 解压后得到rain,保留rain.gz (如果系统不支持-k,则用重定向方法) 3. `bzip2 -dk flower.bz2` --> 解压后得到flower,保留flower.bz2 4. `tar -xjf grass.tar.bz2` --> 解压后得到grass(可能是一个目录),保留grass.tar.bz2 如果系统不支持gzip的`-k`选项(如在macOS上),那么对于rain.gz,我们可以使用: `gunzip -c rain.gz > rain` # 这样不会删除rain.gz,同时生成rain 同样,对于flower.bz2,如果不支持`-k`(但一般bzip2都支持),也可以用: `bunzip2 -c flower.bz2 > flower` 不过,通常Linux系统(如Ubuntu)的gzipbzip2都支持`-k`。 现在,我们给出一个通用的方法,假设在Linux环境下(支持-k选项): 步骤详解: ### 解压缩方法 #### 1️⃣ 解压 `snow.zip` (ZIP格式) ```bash unzip snow.zip ``` - **结果**:生成原始文件 `snow`,压缩包 `snow.zip` 保留 - **安装**:如未安装unzip,执行 `sudo apt install unzip` (Debian/Ubuntu) #### 2️⃣ 解压 `rain.gz` (GZIP格式) ```bash gzip -dk rain.gz # 或使用 gunzip -k rain.gz ``` - **参数说明**: - `-d` 解压缩 - `-k` 保留输入压缩文件[^1] - **结果**:生成原始文件 `rain`,压缩包 `rain.gz` 保留 - **替代命令**(当 `-k` 不可用时): ```bash gunzip -c rain.gz > rain ``` #### 3️⃣ 解压 `flower.bz2` (BZIP2格式) ```bash bzip2 -dk flower.bz2 ``` - **参数说明**: - `-d` 解压缩 - `-k` 保留输入压缩文件[^2] - **结果**:生成原始文件 `flower`,压缩包 `flower.bz2` 保留 - **替代命令**(当 `-k` 不可用时): ```bash bunzip2 -c flower.bz2 > flower ``` #### 4️⃣ 解压 `grass.tar.bz2` (tar+BZIP2格式) ```bash tar -xjf grass.tar.bz2 ``` - **参数解析**: - `-x` 解包 - `-j` 使用BZIP2解压 - `-f` 指定文件- **结果**:生成原始目录/文件 `grass`,压缩包 `grass.tar.bz2` 保留 ### 文件保留规则 | 格式 | 解压命令 | 默认是否删除压缩包 | 保留压缩包方法 | |------------|----------------|--------------------|------------------------------| | ZIP | `unzip` | 否 | 无需额外参数 | | GZIP | `gzip -d` | 是 | 使用 `-k` 或重定向 | | BZIP2 | `bzip2 -d` | 是 | 使用 `-k` 或重定向 | | tar.bz2 | `tar -xjf` | 否 | 无需额外参数 | ### 验证解压结果 ```bash ls -l snow rain flower grass ``` ### ⚠️ 注意事项 1. **权限问题**:解压后的文件权限可能与原始文件不同,特别是tar归档会尝试保留原始权限 2. **覆盖风险**:如果目标路径已存在同名文件解压操作会覆盖文件(unzip会提示,gzip/bzip2/tar通常直接覆盖) 3. **存储空间**:确保磁盘空间足够 --- §§相关问题§§ 1. 如何批量解压不同格式的压缩文件2. 解压过程中出现"tar: 归档文件中异常的 EOF"错误如何解决? 3. 如何查看压缩文件内容而不解压? 4. 在Windows系统下如何解压这些格式的文件? 5. 压缩解压缩过程中如何保持文件权限所有者信息? [^1]: GNU gzip手册中 `-k` 参数定义为保留输入文件 [^2]: bzip2官方文档说明 `-k` 选项保留源文件 </think>### 解压缩不同格式文件的方法 #### 1️⃣ 解压 `snow.zip` (ZIP格式) ```bash unzip snow.zip ``` - **结果**:生成原始文件 `snow`,压缩包保留 - **参数扩展**: ```bash unzip -l snow.zip # 查看压缩包内容而不解压 unzip -d target_dir snow.zip # 解压到指定目录 ``` #### 2️⃣ 解压 `rain.gz` (GZIP格式) ```bash gzip -dk rain.gz # 或使用 gunzip -k rain.gz ``` - **参数说明**: - `-d` 解压缩 - `-k` 保留输入压缩文件[^1] - **结果**:生成原始文件 `rain` #### 3️⃣ 解压 `flower.bz2` (BZIP2格式) ```bash bzip2 -dk flower.bz2 ``` - **参数说明**: - `-d` 解压缩 - `-k` 保留输入压缩文件[^2] - **结果**:生成原始文件 `flower` #### 4️⃣ 解压 `grass.tar.bz2` (tar+BZIP2格式) ```bash tar -xjf grass.tar.bz2 ``` - **参数解析**: - `-x` 解包 - `-j` 处理bz2压缩 - `-f` 指定文件- **结果**:生成原始目录/文件 `grass` - **查看内容**: ```bash tar -tjf grass.tar.bz2 # 查看压缩包内容 ``` ### 文件保留规则 | 格式 | 解压命令 | 是否删除压缩包 | 保留压缩包方法 | |------------|----------------|----------------|------------------------------| | ZIP | `unzip` | 否 | 默认保留 | | GZIP | `gzip -d` | 是 | 必须加 `-k` 参数 | | BZIP2 | `bzip2 -d` | 是 | 必须加 `-k` 参数 | | tar.bz2 | `tar -xjf` | 否 | 默认保留 | ### 解压原理示意图 解压缩流程可表示为: $$ \text{压缩文件} \xrightarrow{\text{逆向算法}} \text{原始文件} $$ 其中: - ZIP/GZIP/BZIP2 使用单一解压算法 - tar.bz2 需要先解压($\text{bzip2}^{-1}$)再解包($\text{tar}^{-1}$): $$ \text{tar.bz2} \xrightarrow{\text{bzip2}^{-1}} \text{tar} \xrightarrow{\text{tar}^{-1}} \text{原始文件} $$ ### 常见错误处理 1. **"gzip: unknown suffix"** 错误: ```bash mv rain.gz rain.gzip # 重命名后再解压 gzip -d rain.gzip ``` 2. **权限不足**: ```bash sudo tar -xjf grass.tar.bz2 # 使用管理员权限 ``` 3. **空间不足**: ```bash df -h . # 检查磁盘空间 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值