前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >玩转服务器—Linux文件压缩与解压一览表

玩转服务器—Linux文件压缩与解压一览表

作者头像
生信菜鸟团
发布2024-12-25 15:11:56
发布2024-12-25 15:11:56
11300
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

滴水穿石非一日之功

想必大家都对 ZIP 文件并不陌生。它因其广泛的兼容性和易用性,成为 Windows 和 macOS 默认的压缩格式。压缩与解压的操作,大家都再熟悉不过,在 Linux 系统中,当然也提供了多种压缩工具。正因如此,不同格式的选择和使用常常让人感到困惑。下面让我们来一起梳理一下。

概览

常见压缩格式及用途

  • gzip (.gz):高效且常用,常与 tar 联合使用。
  • bzip2 (.bz2):压缩率较高,但速度较慢。
  • zip (.zip):跨平台常用格式,支持直接包含多个文件。
  • 7z (.7z):由 7-Zip 提供,支持极高压缩率。
  • xz (.xz):压缩率高,适合对大小敏感的应用。
  • rar (.rar):需要专用工具解压,常见于Windows环境。
  • tar (.tar):用于打包多个文件,但本身不压缩。

文件类型

压缩

解压

默认压缩级

默认压缩是否保留源文件

.gz

gzip file.txt

gzip -d file.txt.gzgunzip file.txt.gz

6

.bz2

bzip2 file.txt

bzip2 -d file.txt.bz2bunzip2 file.txt.bz2

9

.xz

xz file.txt

xz -d file.txt.xzunxz file.txt.xz

6

.zip

zip file.zip file.txt

unzip file.zip

6

.rar

rar a file.rar file.txt

unrar x file.rar

3

.7z

7z a file.7z file.txt

7z x archive.7z

5

.tar.gz

tar -czf archive.tar.gz file1 file2

tar -xzf archive.tar.gz

/

/

.tar.bz

tar -cjf archive.tar.bz2 file1 file2

tar -xjf archive.tar.bz2

/

/

.tar.xz

tar -cJf archive.tar.xz file1 file2

tar -xJf archive.tar.xz

/

/

基础命令及常见用法

.gz 文件

.gz 文件是使用 GNU Zip (gzip) 工具进行压缩的文件格式,通常用于压缩单个文件或文件流。.gz 格式是广泛使用的压缩格式。

gzip压缩

gzip压缩,压缩完成后会默认删除源文件

代码语言:javascript
代码运行次数:0
复制
##将 file.txt 压缩成 file.txt.gz
gzip file.txt

压缩且保留源文件

代码语言:javascript
代码运行次数:0
复制
gzip -k file.txt
gzip -c file.txt > file.txt.gz

同时压缩多个文件

可以分别列出,也可以使用通配符。

代码语言:javascript
代码运行次数:0
复制
# 压缩后会分别生成 file1.txt.gz、file2.txt.gz 和 file3.txt.gz
gzip file1.txt file2.txt file3.txt

gzip file*.txt

指定压缩级别

gzip 提供了压缩级别的选择,范围从 19,其中 1 是最快的压缩速度,但压缩比最低,9 是最慢的压缩速度,但压缩比最高。默认情况下,gzip 使用压缩级别 6

代码语言:javascript
代码运行次数:0
复制
##使用最大压缩比
gzip -9 file.txt

##使用最快压缩速度
gzip -1 file.txt
.gz文件解压

解压 .gz 文件可以使用 gunzip 命令或 gzip -d 命令。

gzip解压,默认会删除源文件

代码语言:javascript
代码运行次数:0
复制
gzip -d file.txt.gz
gunzip file.txt.gz

解压且保留源文件

代码语言:javascript
代码运行次数:0
复制
gzip -dk file.txt.gz
gunzip -k file.txt.gz

同时解压多个gz文件

代码语言:javascript
代码运行次数:0
复制
gzip -d file1.gz file2.gz file3.gz
gunzip file1.gz file2.gz file3.gz

解压到指定目录

本质是重定向了输出。

代码语言:javascript
代码运行次数:0
复制
gzip -dc GRCh38.p14.genome.fa.gz > /path/to/destination/GRCh38.p14.genome.fa
gunzip -c file.txt.gz > /path/to/destination/file.txt

##解压同时重命名
gunzip -c file.txt.gz > /path/to/destination/new_filename.txt

查看gz文件的详细信息

包括原文件大小、压缩后大小、压缩比等

代码语言:javascript
代码运行次数:0
复制
gzip -l GRCh38.p14.genome.fa.gz

检查gz文件是否完整

没有报错输出即代表文件完整

代码语言:javascript
代码运行次数:0
复制
gzip -t GRCh38.p14.genome.fa.gz

.bz2 文件

.bz2 文件是使用 bzip2 工具进行压缩的文件格式,因其默认提供比 gzip 更高的压缩比,广泛用于压缩大文件,尽管压缩和解压速度相对较慢。

bzip2压缩

bzip2压缩

压缩完成后也是默认删除源文件

代码语言:javascript
代码运行次数:0
复制
##file.txt 将被压缩成 file.txt.bz2
bzip2 file.txt

压缩且保留源文件

代码语言:javascript
代码运行次数:0
复制
bzip2 -k file.txt

指定压缩级别压缩

bzip2 同样允许指定压缩级别,范围从 19,其中 1 是最快的压缩速度,但压缩比最低,9 是最慢的压缩速度,但压缩比最高。默认压缩级别是 9(最高压缩比)。

代码语言:javascript
代码运行次数:0
复制
bzip2 -1 file.txt

bzip2 -9 file.txt

同时压缩多个文件

代码语言:javascript
代码运行次数:0
复制
bzip2 file1.txt file2.txt file3.txt

bzip2 file*.txt
.bz文件解压

类似 .gz 文件,解压 .bz2 文件可以使用 bunzip2 命令或者 bzip2 -d 命令。

解压

默认删除源文件

代码语言:javascript
代码运行次数:0
复制
#file.txt.bz2 会被解压为 file.txt
bunzip2 file.txt.bz2
##或者
bzip2 -d file.txt.bz2

解压时保留源文件

代码语言:javascript
代码运行次数:0
复制
bunzip2 -k file.txt.bz2
##或者
bzip2 -dk file.txt.bz2

同时解压多个文件

代码语言:javascript
代码运行次数:0
复制
bunzip2 file1.bz2 file2.bz2 file3.bz2
bzip2 -d file1.bz2 file2.bz2 file3.bz2

bunzip file*.bz2
bzip2 -d file*.bz2

解压到指定目录

代码语言:javascript
代码运行次数:0
复制
bunzip2 -c file.txt.bz2 > /path/to/destination/file.txt
bzip2 -dc file.txt.bz2 > /path/to/destination/file.txt

##解压并重命名
bunzip2 -c file.txt.bz2 > /path/to/destination/new_filename.txt
bzip2 -dc file.txt.bz2 > /path/to/destination/new_filename.txt

查看压缩文件详细信息

代码语言:javascript
代码运行次数:0
复制
bzip2 -l file.txt.bz2

检查压缩文件完整性

代码语言:javascript
代码运行次数:0
复制
bzip2 -t file.txt.bz2

.xz 文件

.xz 文件格式是基于 LZMA2算法(Lempel-Ziv-Markov chain algorithm)的压缩文件格式,提供了非常高的压缩比,通常比 .gz.bz2 格式更高效,尤其适用于压缩大文件。它在 Linux 和类 Unix 系统中非常流行,并且常用于软件包的分发和备份。

xz压缩

压缩

默认删除源文件

代码语言:javascript
代码运行次数:0
复制
## 压缩 file.txt,并生成一个名为 file.txt.xz 的压缩文件
xz file.txt

压缩并保留源文件

代码语言:javascript
代码运行次数:0
复制
##将 file.txt 压缩为 file.txt.xz,并保留原文件 file.txt
xz -k file.txt

指定压缩级别

xz 默认的压缩级别是 6,且支持多个压缩级别,压缩级别的范围是从 19,其中 1 是最快的压缩,但压缩比最低,9 是最慢的压缩,但压缩比最高。

代码语言:javascript
代码运行次数:0
复制
##使用最大压缩比
xz -9 file.txt

##使用最快压缩速度
xz -1 file.txt

同时压缩多个文件

代码语言:javascript
代码运行次数:0
复制
xz file1.txt file2.txt file3.txt

##使用通配符
xz file*
.xz文件解压
代码语言:javascript
代码运行次数:0
复制
xz -d file.txt.xz
##或者
unxz file.txt.xz

解压到指定目录

代码语言:javascript
代码运行次数:0
复制
xz -dc file.txt.xz > /path/to/destination/file.txt
unxz -c file.txt.xz > /path/to/destination/file.txt

查看.xz 文件的内容

代码语言:javascript
代码运行次数:0
复制
##会显示压缩文件的大小、压缩率等信息,但不会解压文件
xz -l file.txt.xz

.tar 文件

gzip、bzip2和xz 都不能压缩整个目录,如果要用压缩整个目录为 .gz.bz.xz 格式,这个时候就需要和 tar 命令联用。

tar(Tape Archive)是 Unix 和类 Unix 系统中的一个常用命令,用于创建、管理和解压归档文件(通常称为 tarball)。tar 不仅能将多个文件和目录归档为一个文件(.tar 格式),还支持多种压缩算法,如 .gz.bz2.xz 等,生成 .tar.gz.tar.bz2.tar.xz 等压缩文件。

创建归档文件

使用 -c 选项创建一个归档文件,-f 选项指定归档文件的名称。

代码语言:javascript
代码运行次数:0
复制
## 把 file1、file2 和 directory/ 压缩为 archive.tar
tar -cf archive.tar file1 file2 directory/

查看归档内容而不解压

代码语言:javascript
代码运行次数:0
复制
##列出 archive.tar 中包含的所有文件和目录
tar -tf archive.tar

解开归档文件

代码语言:javascript
代码运行次数:0
复制
##解压 archive.tar 中的所有文件到当前目录
tar -xf archive.tar

##解压归档文件到指定目录
tar -xf archive.tar -C /path/to/destination/

归档和压缩联用

代码语言:javascript
代码运行次数:0
复制
##归档,并调用gzip压缩打包后的文件
tar -czf archive.tar.gz file1 file2
##归档,并调用bzip2压缩打包后的文件
tar -cjf archive.tar.bz2 file1 file2
##归档,并使用xz压缩打包后的文件
tar -cJf archive.tar.xz file1 file2

解压使用压缩格式的归档文件

代码语言:javascript
代码运行次数:0
复制
##解压 .tar.gz 或 .tgz文件:
tar -xzf archive.tar.gz

##解压 .tar.bz2 文件
tar -xjf archive.tar.bz2

##解压 .tar.xz 文件
tar -xJf archive.tar.xz

##自动识别后缀解压
tar -xf archive.tar.gz
tar -xf archive.tar.bz2
tar -xf archive.tar.xz

注:如果记不住解压gz、bz2、xz压缩文件的具体参数,只需要记住tar -xf 即可,会自带识别文件后缀,使用对应的工具来解压

.zip 文件

在 Linux 系统中, .zip 文件格式并不是本地支持的(如 .gz.bz2),但是可以通过安装 zipunzip 工具来处理 .zip 文件。

zip压缩

压缩文件

zip默认会保留源文件

代码语言:javascript
代码运行次数:0
复制
##将 file.txt 压缩成 file.zip 文件
zip file.zip file.txt

压缩多个文件

代码语言:javascript
代码运行次数:0
复制
zip archive.zip file1.txt file2.txt file3.txt

##使用通配符
zip archive.zip *.txt

压缩整个目录

代码语言:javascript
代码运行次数:0
复制
## 将 directory/` 目录及其所有子文件和子目录压缩成 archive.zip 文件
zip -r archive.zip directory/

指定压缩级别压缩

zip 命令也可以自定义设置压缩级别,从 09,其中 0 为不压缩,9 为最大压缩。默认的压缩级别是 6

代码语言:javascript
代码运行次数:0
复制
zip -0 archive.zip file.txt

zip -9 archive.zip file.txt

更新压缩文件

添加文件到已存在的 .zip 文件/更新 .zip 文件中的文件

-u 参数,可以向已经存在的 .zip 文件添加新的文件。

代码语言:javascript
代码运行次数:0
复制
#将 `file4.txt` 添加到已存在的 `archive.zip` 文件中
zip -u archive.zip file4.txt

#将更新后的 `file1.txt` 添加到 `archive.zip` 文件中(如果文件内容有变化)。
zip -u archive.zip file1.txt
.zip文件解压

解压 .zip

代码语言:javascript
代码运行次数:0
复制
## 解压 file.zip 到当前目录,并且会自动提取文件及目录结构
unzip file.zip

解压到指定目录

代码语言:javascript
代码运行次数:0
复制
##将 file.zip 解压到 /path/to/destination/ 目录,且保持原有的目录结构
unzip file.zip -d /path/to/destination/

列出 .zip 文件内容

代码语言:javascript
代码运行次数:0
复制
##列出 file.zip 文件中的所有内容(文件名、大小等信息)
unzip -l file.zip

仅解压指定文件

代码语言:javascript
代码运行次数:0
复制
#仅解压read2.txt 和 readme6.txt 到 tmp3目录下
unzip tmp.zip tmp/read2.txt readme6.txt -d ./tmp3/

.rar 文件

.rar 文件是由 RAR 压缩工具生成的文件格式,通常提供较高的压缩比,尤其适用于大文件和多文件集合。RAR 文件格式在 Linux 中通常也不是内建支持的,但可以通过安装unrarrar来处理 .rar 文件。安装可以系统管理员安装也可以自己安装。

代码语言:javascript
代码运行次数:0
复制
##管理员安装
sudo apt install unrar

##普通用户安装
mamba install unrar
rar压缩

压缩

默认也是保留源文件

代码语言:javascript
代码运行次数:0
复制
rar a file.rar file.txt

压缩多个文件

代码语言:javascript
代码运行次数:0
复制
rar a archive.rar file1.txt file2.txt file3.txt

##使用通配符
rar a readme.rar readme*.txt

压缩整个目录

代码语言:javascript
代码运行次数:0
复制
#将 `directory/` 目录及其所有文件和子目录压缩成 `archive.rar` 文件
rar a -r archive.rar directory/

指定压缩级别

rar 命令默认的压缩级别是 3,同时也支持多种压缩级别,从 05,其中 0 是最快的压缩,但压缩比最低,5 是最慢的压缩,但压缩比最高。

代码语言:javascript
代码运行次数:0
复制
rar a -m5 archive.rar file.txt
.rar文件解压

解压

代码语言:javascript
代码运行次数:0
复制
##解压文件到当前工作目录
unrar x file.rar

unrar x paper19_cancerCell.rar

解压到指定目录

代码语言:javascript
代码运行次数:0
复制
unrar x file.rar -d /path/to/destination/

查看 .rar 文件内容

代码语言:javascript
代码运行次数:0
复制
unrar l file.rar

.7z 文件

.7z 文件是 7-Zip 格式的压缩文件,通常提供比 .zip.rar 更高的压缩比。7z 格式支持多种压缩算法、加密、分卷压缩等高级功能,广泛用于高效的文件压缩和存储。同样,7z格式也不是内建支持的,需要安装 7zp7zip 工具

代码语言:javascript
代码运行次数:0
复制
##管理员安装
sudo apt install p7zip-full

##普通用户安装
mamba install p7zip
7z压缩

压缩

7z压缩默认会保留源文件

代码语言:javascript
代码运行次数:0
复制
# 将 `file.txt` 压缩为 `file.7z`
7z a file.7z file.txt

压缩多个文件

代码语言:javascript
代码运行次数:0
复制
7z a archive.7z file1.txt file2.txt file3.txt

##使用通配符
7z a readme2.7z file*.txt

image.png

压缩整个目录

代码语言:javascript
代码运行次数:0
复制
7z a -r archive.7z directory/

指定压缩级别

默认的压缩级别是 5 ,同样提供了多种压缩级别,范围从 09,其中 0 是最快的压缩速度,但压缩比最低,9 是最慢的压缩速度,但压缩比最高。

代码语言:javascript
代码运行次数:0
复制
7z a -mx=9 archive.7z file.txt

.7z文件解压

解压,默认解压到当前目录,并保留文件的目录结构。

代码语言:javascript
代码运行次数:0
复制
7z x archive.7z

解压到指定目录

代码语言:javascript
代码运行次数:0
复制
7z x archive.7z -o/path/to/destination/

注意, -o 参数和路径之间没有空格

查看.7z文件内容

代码语言:javascript
代码运行次数:0
复制
## 列出 .7z 文件中的所有内容,包括文件名、大小等信息
7z l archive.7z
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概览
    • 常见压缩格式及用途
  • 基础命令及常见用法
    • .gz 文件
      • gzip压缩
      • .gz文件解压
    • .bz2 文件
      • bzip2压缩
      • .bz文件解压
    • .xz 文件
      • xz压缩
      • .xz文件解压
    • .tar 文件
    • .zip 文件
      • zip压缩
      • .zip文件解压
    • .rar 文件
      • rar压缩
      • .rar文件解压
    • .7z 文件
      • 7z压缩
      • .7z文件解压
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档