美文网首页
2020-01-09 数据压缩

2020-01-09 数据压缩

作者: 王子威PtaYoth | 来源:发表于2020-01-09 20:53 被阅读0次

    压缩文件包括zip,gzip,tar等等,创建压缩文件所需的计算资源远远多于解压缩。

    有些压缩格式无需解压缩即可合并,如.gz格式:
    cat file1.gz file2.g file3.gz > bigfile.gz

    避免了**解压→合并→压缩这一过程中耗时的压缩过程。

    我们可以压缩单个文件或整个目录。
    压缩单个文件通常以.gz.bz.bz2.zipxz结尾
    压缩目录通常称为“archives”(存档),可以以zip、.tar.gz.tar.bz2tar.xz结尾

    .gz和.tar.gz是Unix系统中最常用的压缩文件格式,生物信息学数据通常也是以该种格式分发的
    .zip用zip/unzip
    .gz用gzip/gunzip
    .bz/.bz2用bzip2/bunzip2
    .xz是最新的压缩文件格式,bzip2和xz是gzip的升级格式

    生信特有的压缩格式

    bgzip(Blocked GNU-Zip格式)是GZIP格式的一种变体,可以对bgzip文件的内容进行随机访问。BCFBAMTABIX格式都采用了BGZIP压缩格式。

    bgzip文件可以用gzip解压,但只有专门的bgzip命令才能在Blocked GNU-Zip格式的文件中创建文件,bgzip格式文件的扩展名多数也是.gz。安装htslib包后就能使用bgzip命令了。压缩VCFTABIX文件时,需创建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
    

    相关文章

      网友评论

          本文标题:2020-01-09 数据压缩

          本文链接:https://www.haomeiwen.com/subject/rufuactx.html