【linux】解压|压缩|打包命令(tar|zip|rar|bz)

目录

.tar 打包

.gz 压缩

.tar.gz 和 .tgz  打包并gz压缩

.bz2压缩

.tar.bz2 打包并bz2压缩

.bz

.tar.bz

.Z

.tar.Z

.zip

.rar

.xz

xz压缩文件方法或命令

xz解压文件方法或命令

tar.xz

打包压缩后分割成小包

tar多线程解压|加速解压

解压时重命名

解压时忽略目录层级


.tar 打包

打包ctar cvf FileName.tar DirName

解包xtar xvf FileName.tar

(注:tar是打包,不是压缩!)

tar打包排除某个目录

 tar zcvf fd.tar.gz * --exclude=file1 --exclude=dir1

注意:

1、--exclude=file1 而不是 --exclude file1

2、要排除一个目录是--exclude=dir1而不是--exclude=dir1/

也可以在父目录打包

tar zcvf fd.tar.gz pardir --exclude=pardir/file1 --exclude=pardir/dir1

———————————————

.gz 压缩

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.tar.gz 和 .tgz  打包并gz压缩

压缩(cz打包+压缩):tar czvf FileName.tar.gz DirName

解压(xz解包+解压):tar xzvf FileName.tar.gz

解压到指定文件夹:      tar xzvf FileName.tar.gz -C /PATH/

———————————————

.bz2压缩

解压1:bzip2 -d FileName.bz2

解压2:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2 打包并bz2压缩

解压:tar jxvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

———————————————

.bz

解压1:bzip2 -d FileName.bz

解压2:bunzip2 FileName.bz

压缩:未知

.tar.bz

解压:tar jxvf FileName.tar.bz

压缩:未知

———————————————

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

———————————————

.zip

解压:unzip FileName.zip

压缩:zip -r FileName.zip DirName

解压到:# unzip test.zip -d /root/

unzip   压缩文件名.zip             解压.zip后缀的文件  

———————————————

.rar

解压:rar x FileName.rar

压缩:rar a FileName.rar DirName

———————————————

.xz

xz压缩文件方法或命令

xz -z 要压缩的文件

如果要保留被压缩的文件加上参数 -k ,如果要设置压缩率加入参数 -0 到 -9调节压缩率。如果不设置,默认压缩等级是6.

xz解压文件方法或命令

xz -d 要解压的文件

同样使用 -k 参数来保留被解压缩的文件。

———————————————
 

tar.xz

———————————————


创建或解压tar.xz文件的方法

习惯了 tar czvf 或 tar xzvf 的人可能碰到 tar.xz也会想用单一命令搞定解压或压缩。其实不行 tar里面没有征对xz格式的参数比如 z是针对 gzip,j是针对 bzip2。

创建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 这样创建xxx.tar文件先,然后使用 xz -z xxx.tar 来将 xxx.tar压缩成为 xxx.tar.xz

解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。

打包压缩后分割成小包

其实以上两步也可以合并成一步来执行

tar -zcvf cm-11.tar.gz cm-11 | split -b 4000M -d -a 1 - cm-11.tar.gz.

-b 4000M 表示设置每个分割包的大小,单位还是可以k

// -d "参数指定生成的分割包后缀为数字的形式

//-a x来设定序列的长度(默认值是2),这里设定序列的长度为1

分割后的压缩包解压命令如下

cat cm-11.tar.gz.* | tar -zxv

tar多线程解压|加速解压

pigz -dc filename.tar.gz | tar -xvf -

bzip2 -dc mercury-X.tar.bz2 | tar xvf -

------------------------------------------------

tar 多线程加速打包速度

tar --use-compress-program=pigz -h -cvpf  Homo_sapiens.GRCh38.dna.toplevel.tar.gz *

tar多线程压缩解压

pigz -dc filename.tar.gz | tar -xvf -

这个命令会先使用pigz进行解压缩,并将解压缩后的结果通过管道符传递给tar命令进行解包。其中,“-dc”选项是指将压缩文件解压缩到标准输出,避免了中间的磁盘读写,提高了解压速度。执行这个命令时,不需要使用多线程或多进程,因为pigz会自动使用所有可用的CPU核心进行解压缩。

tar -czvf a.tar.gz ./*
测试每分钟压缩包a.tar.gz增长大约300M

安装多线程程序

 yum -y install pigz

实测,4核的机器,2G文件用了不到1分钟

 tar --use-compress-program=pigz -cvpf b.tar.gz ./*

top看到系统CPU使用率是390%+

解压测试:41G 的文件,4核的机器,内存16G

 tar --use-compress-program=pigz -xvpf hs_sale_1126.tar.gz

top命令看到CPU使用率没有压缩的时候那么高,在50% - 80%之间
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18241 root 20 0 38676 724 576 S 84.3 0.0 3:34.92 pigz

遇到单个大文件的时候,CPU使用率会比较高一点
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18241 root 20 0 38676 724 576 R 126.2 0.0 6:47.93 pigz

最后发现只用了40分钟就解压完,之前用了超过2个半小时

解压时重命名

重命令:

#匹配old的命名会给改成new

tar  -xvf  filename.tar  --transform  ’s/old/new/’   

解压时重命名:
tar --transform='s/^original-name/new-name/' -xvf archive.tar
注意:这里的 original-name 是要被重命名的文件的原始名称,new-name 是重命名后的文件名。

还可以使用类似 --transform='s/^/prefix-/' 的语法在文件名前添加前缀。

还有其他选项,如 --show-transformed-names,可以在解压时显示被重命名的文件的新名称。

解压时忽略目录层级

忽略包里面的路径信息,把所有文件提取出来:

tar xvf some.tar --transform 's?.*/??g'
--transform参数是sed的替换正则表达式,每个提取的文件路径都被馈送到该正则表达式。与--strip-components不同,它将删除所有路径信息,而不仅仅是固定数量的组件。

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值