压缩文件包括zip,gzip,tar等等,创建压缩文件所需的计算资源远远多于解压缩。
有些压缩格式无需解压缩即可合并,如.gz格式:
cat file1.gz file2.g file3.gz > bigfile.gz
避免了**解压→合并→压缩这一过程中耗时的压缩过程。
我们可以压缩单个文件或整个目录。
压缩单个文件通常以.gz、.bz、.bz2、.zip或xz结尾
压缩目录通常称为“archives”(存档),可以以zip、.tar.gz、.tar.bz2、tar.xz结尾
.zip用
zip/unzip
.gz用
gzip/gunzip
.bz/.bz2用
bzip2/bunzip2
.xz是最新的压缩文件格式,bzip2和xz是gzip的升级格式
生信特有的压缩格式
bgzip(Blocked GNU-Zip格式)是GZIP格式的一种变体,可以对bgzip文件的内容进行随机访问。BCF、BAM和TABIX格式都采用了BGZIP压缩格式。
bgzip文件可以用gzip
解压,但只有专门的bgzip
命令才能在Blocked GNU-Zip格式的文件中创建文件,bgzip格式文件的扩展名多数也是.gz。安装htslib包后就能使用bgzip命令了。压缩VCF和TABIX文件时,需创建bgzip文件。其他情况,gzip就足够了。
我拿到的是fq.gz文件,即fastq文件通过gzip压缩得到的压缩。
#下载测序数据
efetch -db=nuccore -format=fasta -id=AF086833 > AF086833.fa
# 报错,efetch命令未找到,因为有包没装
#建立bgzip文件
bgzip AF086833.fa
压缩和解压缩单个文件
# 下载测序数据
efetch -db=nuccore -format=fasta -id=AF086833 > AF086833.fa
# gzip压缩
# 生成AF086833.fa.gz.
gzip AF086833.fa
# 一些工具可以在不解压缩的情况下直接操作gz文件
# 在Linux使用zcat,不解压缩gz文件的情况下查看其中的内容
zcat AF086833.fa.gz | head
# gunzip压缩
gunzip AF086833.fa.gz
tar 压缩和解压缩多个文件
zip文件既可包括单个也可包括多个文件
Unix系统下通常创建“tape archive”(磁带存档),得到一个tar文件,文件的后缀为.tar.gz
tar czfv 创建(c)一个压缩(z) 存档文件(f),并显示命令执行的过程(v)
tar为主命令,czfv为4个子命令
子命令很难记,多Google,you are not alone
# 将多个文件压缩为.tar.gz
# 下载两个文件
efetch -db=nuccore -format=fasta -id=AF086833 > AF086833.fa
efetch -db=nuccore -format=gb -id=AF086833 > AF086833.gb
# 使用方法:tar cf 存档名 要压缩的文件
tar czfv sequences.tar.gz AF086833.fa AF086833.gb
# 也可以这么写:
tar czvf sequences.tar.gz AF086833.*
# 输入一个pattern就行
【警告】tar命令必须先输入要创建的存档名,如果将
tar czfv sequences.tar.gz AF086833.fa
写成了:
tar czvf AF086833.fa sequences.tar.gz
AF086833.fa就会被销毁,因为tar命令试图创建一个名为AF086833.fa的文件
好习惯:将要压缩的多个文件先移动至一个目录下,再压缩该目录
mkdir sequences
mv AF086833.* sequences/
tar czvf sequences.tar.gz sequences/*
tar
-c 建立新的压缩文件
-z 用 gzip 对存档压缩或解压
-v 详细显示处理的文件 verbose mode
-f
-x 从存档展开文件
-t 列出存档中文件的目录
tar czvf 创建 gzip压缩 文件 详细显示
tar xzvf 展开 gzip压缩 文件
tar tzvf 列出 gzip压缩存档下的目录 详细显示
【警告】tarbomb
tarbomb演示
mkdir -p tarbomb
cd tarbomb
curl -O http://data.biostarhandbook.com/data/tarbomb.tar.gz
tar xzf tarbomb.tar.gz
#tarbomb目录下多出非常多的东西...
安全的做法是把tar文件先放到一个单独的目录下再解压缩
#看看里面有什么
tar tzvf tarbomb.tar.gz
mkdir disarm #创建“拆弹”目录
mv tarbomb.tar.gz disarm #把tarbomb移动进去
cd disarm #进入“拆弹”目录
tar xzf tarbomb.tar.gz #BOOM
网友评论