**update:**测试时出现二进制文件大小恰好为256M整数倍时解压不退出的bug,提交至维护人员后已经解决,不得不说反馈速度真的是快,从我提出到解决总共用了不到1天时间。给点个赞,棒棒哒 GTX Compressor(直压上云技术)调研,由于现业务存在大规模业务数据上传云存储,云厂商提供接口具有一些局限性,现在尝试gtz这个工具。该工具目前支持阿里云及AWS非常符合业务场景,具有高压缩比、高性能、高速直压云等特点,且有数据校验机制,而且开包即用,不依赖当前系统其他任何库。
**介绍:**GTX Compressor是Genetalks公司GTX Lab实验室开发的面向大型数据(数GB甚至数TB数据,尤其是生物信息数据)上云,而量身定制的复杂通用数据压缩打包系统,可以对任意基因测序数据以及数据目录进行高压缩率的快速打包,形成单个压缩数据文件,以方便存储档与远程传输、校验。区别于以往的压缩工具,GT Compressor系统着力于 高压缩率,高速率,方便的数据抽取 。 ——————摘自Github上该项目官方介绍
环境要求
- 64位 Linux 系统(CentOS 6.5以上或Ubuntu 12.04以上,推荐Ububtu 14.04及以上64位操作系统)
- 4核以上,最小8GB内存的主机系统(若要达到最大并发性,推荐32核 64GB内存,或与AWS C4.8xlarge机器相同配置)
- 我的测试环境为:Centos7.3_x64
安装及使用
安装非常简单暴力,直接就是开包即用,下载对应系统版本即可
-
安装
1 2 3
wget https://github.com/Genetalks/gtz/archive/master.zip unzip xvf master.zip tar xvf gtz_0.2.2b_centos_pre_release.tgz
-
使用方法
1 2 3 4 5 6
USAGE: ./gtz [--list] [-e <string>] [-f] [--endpoint <string>] [--timeout <string>] [--secret-access-key <string>] [--access-key-id <string>] [-b <string>] [-s <string>] [-c] [-n <string>] [-l <string>] [-i] [-d] [--delete] [-a] [-g <number>] [-o <string>] [--] [--version] [-h] <file names> ...
-
压缩解压选项解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
### 通用选项 -h:输出以上命令行帮助信息 --version:输出gt_compress程序的版本号 --access-key-id : 指定云平台用户ID --secret-access-key: 指定云平台用户密钥 --endpoint : 指定阿里云OSS平台的访问域名和数据中心 ### 压缩选项参数 -f, --force : 强制删除容器内的object --timeout : 指定上传超时阀值 -i:压缩时增加索引,主要用于在压缩文件中快速检索fastq文件的某段内容,该选项会降低压缩速度 -a:追加模式,本次压缩的内容会追加到压缩文件中 -g:分组加速压缩,分组越多,需要的cpu和内存越多,压缩速度越快。不指定该值时,程序会根据cpu和内存自动选择最优值 -o:指定压缩文件名,不指定时,默认为out.gtz file_name:需要压缩的文件或目录, 若不指定,则从标准输入中读入数据 ### 解压选项参数 -d,--decode : 解压模式 --list : 列出压缩包中所有的压缩文件名,与-d参数一起使用 -e, --extract : 解压压缩包中指定的压缩文件,文件名之间用冒号:分割,与-d参数一起使用 --timeout : 指定下载超时阀值 -c,--stdout : 解压数据输出至标准输出, 只能与 -d 参数一起使用 -o:指定输出文件名,使用-n或-l时需要指定该选项,否则不需要该选项 file_name:需要压缩的文件, 若不指定,则从标准输入中读入数据
使用范例
**注意:**使用时可以使用命令行参数指定key变量和endpoint变量,也可以使用export声明,如 export access_key_id=xxxxxx export secret_access_key=xxxxxx export endpoint=xxxxxx (该环境变量只有上传至OSS时才需设置)
- 本地压缩解压
1 2 3 4 5 6 7 8
####----压缩---- #直接压缩,1G的数据压到68k了,不过源数据不具备参考性,dd出来的数据 ./gtz -o test.gtz up_data_test/gtz-test3.log #通过zcat和管道压缩,支持二进制文件 zcat up_data_test/gtz-test3.log |./gtz -o test2.gtz ####----解压---- #解压单个文件,解压路径为压缩时的路径 ./gtz -d ./test.gtz
- 压缩上传AWS例子
上传文件在S3上显示为目录gtz-test4.name,该目录里面下面为原文件同名目录及一个gtz.meta文件,如图
1 2 3 4 5 6 7
export AWS_ACCESS_KEY_ID='your_key' export AWS_SECRET_ACCESS_KEY='Your_key' export AWS_DEFAULT_REGION='your_region' #上传单个文件,上传1G的测试数据需要50s左右 ./gtz -o s3://arvon-gtz-test/gtz-test4.name up_data_test/gtz-test4.db #追加文件到压缩包,如果不加-a参数会覆盖原来的文件 ./gtz -o s3://arvon-gtz-test/ up_data_test/gtz-test3.log
- 解压缩AWS上S3到本地
1
./gtz -d s3://arvon-gtz-test/test3