1
只有光头才能变强。2019-3-2

Linux下有许多压缩与解压缩命令,列举一些。

gzip

压缩gzip +filenamegzip test.txt
压缩后格式:压缩后文件名为filename.gz,上面的文件压缩后就是test.txt.gz
解压缩gzip -d test.txt.gz也可以使用gunzip test.txt.gz,gunzip == gzip -d
压缩级别(1-9):默认6级别,(压缩级别表示压缩比例和压缩速度),gzip -1 test.txt表示使用级别1压缩(压缩比例最少,速度最快)
查看压缩包文件zcat test.txt.gz
执行权限:所有用户
注意:只能压缩文件,不能压缩目录,压缩后不保存原文件

[root@moli-04 test]# ls
test.txt
[root@moli-04 test]# cat test.txt 
hello world
[root@moli-04 test]# gzip test.txt 
[root@moli-04 test]# ls
test.txt.gz
[root@moli-04 test]# zcat test.txt.gz 
hello world
[root@moli-04 test]# gzip -d test.txt.gz 
[root@moli-04 test]# ls
test.txt

bzip2

大多数情况下,bzip2压缩的文件比gzip的大小更小,效率更高。
压缩命令:bzip2 + filename
压缩后格式:压缩后的文件名在后加.bz2
查看压缩文件内容:bzcat filename.bz2
解压:bzip2 -d filename.bz2
压缩级别:默认为9
不可压缩目录

[root@moli-04 test]# ls
test.txt
[root@moli-04 test]# bzip2 test.txt 
[root@moli-04 test]# ls
test.txt.bz2
[root@moli-04 test]# bzcat test.txt.bz2 
hello world
[root@moli-04 test]# bzip2 -d test.txt.bz2 
[root@moli-04 test]# ls
test.txt

zip

Centos7默认是没有zip和unzip命令的,需要手动安装:yum install -y zip unzip
压缩:zip test.txt.zip test.txt zip压缩需要指定压缩后的文件名,而且压缩后源文件依旧存在
解压缩:unzip test.txt.zip 解压时会询问是否覆盖源文件,解压前如果有源文件,建议改名字或者挪到位置,比如将test.txt.zip解压到/data目录下,uzip test.txt.zip /data
zip 可以压缩目录:压缩目录时需要加上选项 -r 。如:zip -r data.zip /tmp/data

xz

压缩:xz test.txt
压缩后格式:filename.xz
解压 xz -d test.txt.xz
查看压缩文件 xzcat test.txt.xz
压缩级别:默认是6

[root@moli-04 test]$ ls
test.txt
[root@moli-04 test]$ xz test.txt 
[root@moli-04 test]$ ls
test.txt.xz
[root@moli-04 test]$ xz -d test.txt.xz 
[root@moli-04 test]$ ls
test.txt

tar

打包与解包文件,用法:tar 模式 \[选项\]\[路径\]...

模式 说明
-c 创建打包文件
--delete 从打包文件中删除文件
-r 追加文件至打包文档
-t 列出打包文档的内容
-x 释放打包文件
选项 说明
-C 指定解压路径
-f 指定打包后的文件名称
-j 打包后通过bzip2格式压缩
--remove-files 打包后删除源文件
-z 打包后通过gzip格式压缩
--exclude files 打包目录时过滤掉目录下的files文件

示例1:把1.txt 2.txt 3.txt打成一个包叫num.txt.gz

[root@moli-04 test]# ls
1.txt  2.txt  3.txt  4.txt  5.txt  test.txt
[root@moli-04 test]# tar -cvf num.txt.gz 1.txt 2.txt 3.txt 
1.txt
2.txt
3.txt
[root@moli-04 test]# ls
1.txt  2.txt  3.txt  4.txt  5.txt  num.txt.gz  test.txt

示例2:将刚才打的包num.txt.gz解包,并且解压到/tmp目录下
解压包,源文件不会被删除

[root@moli-04 test]$ tar -xvf num.txt.gz -C /tmp
1.txt
2.txt
3.txt

示例3:把test目录打包,排除test目录下的文件5.txt

[root@moli-04 test]$ pwd
/tmp/test
[root@moli-04 test]$ ls
1.txt  2.txt  3.txt  4.txt  5.txt  num.txt.gz  test.txt
[root@moli-04 test]$ cd ..
[root@moli-04 tmp]$ tar --exclude 5.txt -cvf test.tar test 
test/
test/test.txt
test/1.txt
test/2.txt
test/3.txt
test/4.txt
test/num.txt.gz

示例4:查看打包文档中的文件信息

[root@moli-04 tmp]$ tar -tf test.tar 
test/
test/test.txt
test/1.txt
test/2.txt
test/3.txt
test/4.txt
test/num.txt.gz

示例5:查看打包文档中详细地文档信息

[root@moli-04 tmp]$ tar -tvf test.tar
drwxr-xr-x root/root         0 2019-03-02 22:05 test/
-rw-r--r-- root/root        12 2019-03-02 16:40 test/test.txt
-rw-r--r-- root/root     10240 2019-03-02 22:04 test/1.txt
-rw-r--r-- root/root         0 2019-03-02 22:03 test/2.txt
-rw-r--r-- root/root         0 2019-03-02 22:03 test/3.txt
-rw-r--r-- root/root         0 2019-03-02 22:03 test/4.txt
-rw-r--r-- root/root     20480 2019-03-02 22:05 test/num.txt.gz

示例6:从打包文档中追加文件grep.txt

[root@moli-04 tmp]$ tar -f test.tar -r grep.txt 
[root@moli-04 tmp]$ tar -tf test.tar 
test/
test/test.txt
test/1.txt
test/2.txt
test/3.txt
test/4.txt
test/num.txt.gz
grep.txt

示例7:从打包文档中删除文件grep.txt

[root@moli-04 tmp]$ tar --delete grep.txt -f test.tar
[root@moli-04 tmp]$ tar -tf test.tar 
test/
test/test.txt
test/1.txt
test/2.txt
test/3.txt
test/4.txt
test/num.txt.gz

示例8:解压gz格式的压缩包至当前目录

$  tar -zxvf test.gz

示例9:解压bz2格式的压缩包至当前目录

$ tar -xjvf test.bz2

示例10:打包压缩后删除源文件

$ tar -czf mess.tar.gz /var/log/messages --remove-files




syushin
948 声望316 粉丝