专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物制品圈  ·  冷冻干燥热敏性药物:含有机共溶剂 + 水的配方 ·  3 天前  
生物学霸  ·  王露课题组招聘科研助理/助研/副研 ·  3 天前  
生物制品圈  ·  我问DeepSeek:2025年生物药领域人 ... ·  6 天前  
生物学霸  ·  论文图片处理,哪些能做?哪些算造假? ·  4 天前  
51好读  ›  专栏  ›  生信菜鸟团

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

生信菜鸟团  · 公众号  · 生物  · 2024-12-24 22:37

正文

滴水穿石非一日之功


想必大家都对 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.gz

gunzip file.txt.gz
6
.bz2 bzip2 file.txt bzip2 -d file.txt.bz2

bunzip2 file.txt.bz2
9
.xz xz file.txt xz -d file.txt.xz

unxz 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压缩 ,压缩完成后会默认删除源文件

##将 file.txt 压缩成 file.txt.gz
gzip file.txt

压缩且保留源文件

gzip -k file.txt
gzip -c file.txt > file.txt.gz

同时压缩多个文件

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

# 压缩后会分别生成 file1.txt.gz、file2.txt.gz 和 file3.txt.gz
gzip file1.txt file2.txt file3.txt

gzip file*.txt

指定压缩级别

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

##使用最大压缩比
gzip -9 file.txt

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

.gz文件解压

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

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

gzip -d file.txt.gz
gunzip file.txt.gz

解压且保留源文件

gzip -dk file.txt.gz
gunzip -k file.txt.gz

同时解压多个gz文件

gzip -d file1.gz file2.gz file3.gz
gunzip file1.gz file2.gz file3.gz

解压到指定目录

本质是重定向了输出。

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文件的详细信息

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

gzip -l GRCh38.p14.genome.fa.gz

检查gz文件是否完整

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

gzip -t GRCh38.p14.genome.fa.gz

.bz2 文件

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

bzip2压缩

bzip2压缩

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

##file.txt 将被压缩成 file.txt.bz2
bzip2 file.txt

压缩且保留源文件

bzip2 -k file.txt

指定压缩级别压缩

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

bzip2 -1 file.txt

bzip2 -9 file.txt

同时压缩多个文件

bzip2 file1.txt file2.txt file3.txt

bzip2 file*.txt

.bz文件解压

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

解压

默认删除源文件

#file.txt.bz2 会被解压为 file.txt
bunzip2 file.txt.bz2
##或者
bzip2 -d file.txt.bz2

解压时保留源文件

bunzip2 -k file.txt.bz2
##或者
bzip2 -dk file.txt.bz2

同时解压多个文件

bunzip2 file1.bz2 file2.bz2 file3.bz2
bzip2 -d file1.bz2 file2.bz2 file3.bz2

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

解压到指定目录

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

查看压缩文件详细信息

bzip2 -l file.txt.bz2

检查压缩文件完整性

bzip2 -t file.txt.bz2

.xz 文件

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

xz压缩

压缩

默认删除源文件

## 压缩 file.txt,并生成一个名为 file.txt.xz 的压缩文件
xz file.txt

压缩并保留源文件






    
##将 file.txt 压缩为 file.txt.xz,并保留原文件 file.txt
xz -k file.txt

指定压缩级别

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

##使用最大压缩比
xz -9 file.txt

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

同时压缩多个文件

xz file1.txt file2.txt file3.txt

#
#使用通配符
xz file*

.xz文件解压

xz -d file.txt.xz
##或者
unxz file.txt.xz

解压到指定目录

xz -dc file.txt.xz > /path/to/destination/file.txt
unxz -c file.txt.xz > /path/to/destination/file.txt

查看 .xz 文件的内容

##会显示压缩文件的大小、压缩率等信息,但不会解压文件
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 选项指定归档文件的名称。

## 把 file1、file2 和 directory/ 压缩为 archive.tar
tar -cf archive.tar file1 file2 directory/

查看归档内容而不解压

##列出 archive.tar 中包含的所有文件和目录
tar -tf archive.tar

解开归档文件

##解压 archive.tar 中的所有文件到当前目录
tar -xf archive.tar

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

归档和压缩联用

##归档,并调用gzip压缩打包后的文件
tar -czf archive.tar.gz file1 file2
##归档,并调用bzip2压缩打包后的文件
tar -cjf archive.tar.bz2 file1 file2
##归档,并使用xz压缩打包后的文件
tar -cJf archive.tar.xz file1 file2

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

##解压 .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 ),但是可以通过安装 zip unzip 工具来处理 .zip 文件。

zip压缩

压缩文件

zip默认会保留源文件

##将 file.txt 压缩成 file.zip 文件
zip file.zip file.txt

压缩多个文件

zip archive.zip file1.txt file2.txt file3.txt

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

压缩整个目录

## 将 directory/` 目录及其所有子文件和子目录压缩成 archive.zip 文件




    

zip -r archive.zip directory/

指定压缩级别压缩

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

zip -0 archive.zip file.txt

zip -9 archive.zip file.txt

更新压缩文件

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

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

#将 `file4.txt` 添加到已存在的 `archive.zip` 文件中
zip -u archive.zip file4.txt

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

.zip文件解压

解压 .zip

## 解压 file.zip 到当前目录,并且会自动提取文件及目录结构
unzip file.zip

解压到指定目录

##将 file.zip 解压到 /path/to/destination/ 目录,且保持原有的目录结构
unzip file.zip -d /path/to/destination/


列出 .zip 文件内容

##列出 file.zip 文件中的所有内容(文件名、大小等信息)
unzip -l file.zip

仅解压指定文件

#仅解压read2.txt 和 readme6.txt 到 tmp3目录下
unzip tmp.zip tmp/read2.txt readme6.txt -d ./tmp3/


.rar 文件

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

##管理员安装
sudo apt install unrar

#
#普通用户安装






请到「今天看啥」查看全文