Linux:tar、压缩、解压

发布时间 2023-08-23 09:53:02作者: ShineLe

压缩文件扩展名:

  • .tar:tar程序打包的数据,没经过压缩

  • .tar.gz:tar程序打包,并经过gzip压缩

  • .tgz

  • .gz:gzip程序压缩的文件

  • .Z:Compress程序压缩的文件

  • .bz2:bzip2程序压缩的文件

  • .xz:xz程序压缩的文件

Linux上最常见的压缩指令为gzip、bzip2、最新的xz;Windows上最常用的是zip。

tar则是打包

1、tar:解压缩

用法:tar [主选项] [次选项] 文件

常用:tar -xzvf xxx.tar.gz

主选项:必须且只能选择一项

  • -x:解压缩
  • -t:列出tar
  • -c:压缩

次选项:

  • -z:用gzip压缩或解压,用于.tar.gz和.tgz文件
  • -j:用bzip2压缩或解压,用于.tar.bz2文件
  • -v:压缩过程中显示文件
  • -f:要解压的文件,后接文件路径或文件名,不能再接其它选项,这决定了选项如果连续写f只能放在最后,例如-xzvf xxx.tar.gz
  • -p:使用源文件的各种属性
  • -C:解压缩到指定目录下 

2、gzip:压缩

zcat/zmore/zless/zgrep:解压缩

用法:

  • gzip [-cdtv#] 文档名

  • zcat 档名.gz

说明

  • 当使用gzip压缩时,在预设状态下原本的文件会被压缩为.gz档名源文件不再存在

选项

选项

说明

c 将压缩数据输出到屏幕,可通过数据流重导向来处理;
d 解压缩的参数;
t 检验压缩文件的一致性,看看文件有无错误
v 压缩比
#

数字,代表压缩等级:

-1最快,但压缩比最差;

-9最慢,压缩比最好;

-6 默认。

例子

①gzip、找到/tec下(不含子目录)容量最大的文件,并将它复制到/tmp,然后以gzip压缩

[dmtsai@study ~]$ ls -ldSr /etc/* # 忘记选项意义?请自行 man 啰!
.....(前面省略).....
-rw-r--r--. 1 root root 25213 Jun 10 2014 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 69768 May 4 17:55 /etc/ld.so.cache
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
[dmtsai@study ~]$ cd /tmp
[dmtsai@study tmp]$ cp /etc/services .
[dmtsai@study tmp]$ gzip -v services
services: 79.7% -- replaced with services.gz
[dmtsai@study tmp]$ ll /etc/services /tmp/services*
-rw-r--r--. 1 root root 670293 Jun 7 2013 /etc/services
-rw-r--r--. 1 dmtsai dmtsai 136088 Jun 30 18:40 /tmp/services.gz

3、bzip:压缩

bzcat/bzmore/bzless/bzgrep:解压缩

用法

  • bzip2 [-cdkzv#] 档名

  • bzcat 档名.bz2

选项

与gzip的选项类似

选项

说明

c 输出到屏幕
d 解压缩的参数
k 保留原文件
z 压缩的参数
v 显示压缩比等信息
# 计算压缩比

说明

  • 用于取代gzip,bzip的压缩比更高
  • 选项都和gzip一样,只是扩展名从.gz变为了.bz2

例子

范例一:将刚刚 gzip 范例留下来的 /tmp/services 以 bzip2 压缩
[dmtsai@study tmp]$ bzip2 -v services
services: 5.409:1, 1.479 bits/byte, 81.51% saved, 670293 in, 123932 out.
[dmtsai@study tmp]$ ls -l services*
-rw-r--r--. 1 dmtsai dmtsai 123932 Jun 30 18:40 services.bz2
-rw-rw-r--. 1 dmtsai dmtsai 135489 Jun 30 18:46 services.gz
# 此时 services 会变成 services.bz2 之外,你也可以发现 bzip2 的压缩比要较 gzip 好喔!!
# 压缩率由 gzip 的 79% 提升到 bzip2 的 81% 哩!
范例二:将范例一的文件内容读出来!
[dmtsai@study tmp]$ bzcat services.bz2
范例三:将范例一的文件解压缩
[dmtsai@study tmp]$ bzip2 -d services.bz2
范例四:将范例三解开的 services 用最佳的压缩比压缩,并保留原本的文件
[dmtsai@study tmp]$ bzip2 -9 -c services > services.bz2

4、xz:压缩

xzcat/xzmore/xzless/xzgrep:解压缩

用法:xz [-dtlkc#] 档名

xcate 档名.xz

选项:同bzip

说明:压缩比比bzip2更高,用法也相同。

例子

范例一:将刚刚由 bzip2 所遗留下来的 /tmp/services 透过 xz 来压缩!
[dmtsai@study tmp]$ xz -v services
services (1/1)
100 % 97.3 KiB / 654.6 KiB = 0.149
[dmtsai@study tmp]$ ls -l services*
-rw-rw-r--. 1 dmtsai dmtsai 123932 Jun 30 19:09 services.bz2
-rw-rw-r--. 1 dmtsai dmtsai 135489 Jun 30 18:46 services.gz
-rw-r--r--. 1 dmtsai dmtsai 99608 Jun 30 18:40 services.xz
# 各位观众!看到没有啊!!容量又进一步下降的更多耶!好棒的压缩比!
范例二:列出这个压缩文件的信息,然后读出这个压缩文件的内容
[dmtsai@study tmp]$ xz -l services.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 97.3 KiB 654.6 KiB 0.149 CRC64 services.xz
# 竟然可以列出这个文件的压缩前后的容量,真是太人性化了!这样观察就方便多了!
[dmtsai@study tmp]$ xzcat services.xz
范例三:将他解压缩吧!
[dmtsai@study tmp]$ xz -d services.xz
范例四:保留原文件的档名,并且建立压缩文件!
[dmtsai@study tmp]$ xz -k services