Linux压缩和解压缩工具及归档工具介绍

一、常见的压缩和解压缩工具

压缩 解压缩 后缀
compress uncompress .z
gzip gunzip .gz
bzip2 bunzip2 .bz2
xz unxz .xz
lzma unlzma .lzma
zip unzip .zip

1、gzip / gunzip / zcat

gzip压缩后,原文件将被删除,仅保留压缩后的文件。

(1)gzip:压缩文件

  • SYNOPSIS:gzip [OPTIONS]… FILE…
  • OPTIONS:
    • -d:解压缩,相当于gunzip;
    • -#:指定压缩比,默认是6,数字范围为1~9,数字越大压缩比越大;
    • -c:将压缩结果输出至标准输出,常通过输出重定向达到压缩并保留原文件的目的。
复制/var/log/messags文件至/tmp目录下
[root@localhost tmp]# cp /var/log/messages ./
[root@localhost tmp]# ll -h
总用量 236K
-rw-------. 1 root root 234K 312 04:52 messages

将messages文件进行压缩,得到messages.gz文件,原messages文件被删除。
[root@localhost tmp]# gzip messages 
[root@localhost tmp]# ll -h
总用量 32K
-rw-------. 1 root root 32K 312 04:52 messages.gz

解压缩messsages.gz文件,
[root@localhost tmp]# gzip -d messages.gz 
[root@localhost tmp]# ll -h
总用量 236K
-rw-------. 1 root root 234K 312 04:52 messages

指定压缩等级为1对messages文件进行压缩,得到messages.gz文件的大小为36K,比默认等级为6时得到的32K大了4K
[root@localhost tmp]# gzip -1 messages 
[root@localhost tmp]# ll -h
总用量 36K
-rw-------. 1 root root 36K 312 04:52 messages.gz

解压缩后,使用-c选项并输出重定向,以达到压缩并保留原文件的目的;
重定向后的文件messages.gz的权限与原文件不同,为系统新建文件时的默认权限
[root@localhost tmp]# gzip -d messages.gz 
[root@localhost tmp]# ls
messages
[root@localhost tmp]# gzip -c messages >messages.gz
[root@localhost tmp]# ll -h
总用量 268K
-rw-------. 1 root root 234K 312 04:52 messages
-rw-r--r--. 1 root root  32K 312 04:56 messages.gz

(2)gunzip:解压缩

  • SYNOPSIS:gunzip FILE…
 使用gunzip解压缩文件
[root@localhost tmp]# ls
messages.gz
[root@localhost tmp]# gunzip messages.gz 
[root@localhost tmp]# ls
messages

(3)zcat:在不解压文件的前提下查看压缩文件的内容

  • SYNOPSIS:zcat FILE…
[root@localhost tmp]# ls
messages.gz
[root@localhost tmp]# zcat messages.gz  |head 
Mar 11 23:45:01 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.
Mar 11 23:45:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" 
...(省略更多的内容)...

2、bzip2 / bunzip2 / bzcat:大部分使用与gzip相同

(1)bzip2:压缩文件

  • SYNOPSIS:bzip2 [OPTIONS]… FILE…
  • OPTIONS:
    • -d:解压缩
    • -#:指定压缩比,默认是6,数字范围为1~9,数字越大压缩比越大;
    • -k:keep,保留原文件
使用-k选项,压缩并保留原文件
[root@localhost tmp]# ll -h
总用量 236K
-rw-------. 1 root root 236K 312 05:32 messages
[root@localhost tmp]# bzip2 -k messages 
[root@localhost tmp]# ll -h
总用量 256K
-rw-------. 1 root root 236K 312 05:32 messages
-rw-------. 1 root root  20K 312 05:32 messages.bz2

(2)bunzip2:解压缩

(3)bzcat:在不解压文件的前提下查看压缩文件的内容

3、xz / unxz / xzcat:大部分使用与bzip2相同

(1)xz:压缩文件

  • SYNOPSIS:xz [OPTIONS]… FILE…
  • OPTIONS:
    • -d:解压缩
    • -#:指定压缩比,默认是6,数字范围为1~9,数字越大压缩比越大;
    • -k:keep,保留原文件

(2)unxz:解压缩

(3)xzcat:在不解压文件的前提下查看压缩文件的内容

二、归档工具tar:

多数压缩工具只能压缩一个文件,不能将多个文件压缩成一个文件,也不支持压缩目录。由此,便有了归档工具的用武之地。
归档工具的作用,是将多个文件或者目录整合成一个文件,这样便能使用压缩工具进行压缩。
常见的归档工具有:tar、cpio。

tar的使用:

SYNOPSIS:tar [OPTION]… FILE…

1、创建归档

-cf /PATH/TO/SOMEFILE.tar FILE…

[root@localhost tmp]# cp /var/log/messages  .
[root@localhost tmp]# ls
log  messages
[root@localhost tmp]# tar -cf first.tar ./log ./messages 
[root@localhost tmp]# ls
first.tar  log  messages

2、展开归档

-xf /PATH/FROM/SHOMEFILE.tar 展开归档文件至当前工作目录下;
-xf /PATH/FROM/SHOMEFILE.tar -C /PATH/TO/SOMEDIR 展开归档文件至指定目录下;

 [root@localhost tmp]# ls
first.tar
展开归档文件至当前工作目录下:
[root@localhost tmp]# tar -xf first.tar 
[root@localhost tmp]# ls
first.tar  log  messages
[root@localhost tmp]# mkdir test
[root@localhost tmp]# ls
first.tar  log  messages  test
 展开归档文件至指定目录下:
[root@localhost tmp]# tar -xf first.tar -C ./test/
[root@localhost tmp]# ls test
log  messages

3、查看归档文件的文件列表

-tf /PATH/TO/SOMEFILE.tar

[root@localhost tmp]# ls
first.tar  log  messages  test
查看归档文件的文件列表:
[root@localhost tmp]# tar -tf first.tar 
./log/
./log/spice-vdagent.log
./log/wtmp
...省略更多内容...

4、归档并压缩 / 解压并展开归档

  • -z:使用gzip

    • -zcf /PATH/TO/SOMEFILE.tar.gz FILE… 归档并使用gzip压缩
    • -zxf /PATH/TO/SOMEFILE.tar.gz 解gzip压缩并展开归档
    [root@localhost tmp]# ls
    log
    [root@localhost tmp]# tar -zcf log1.tar.gz log
    [root@localhost tmp]# ls
    log  log1.tar.gz
    [root@localhost tmp]# tar -zxf log1.tar.gz 
    [root@localhost tmp]# ls
    log  log1.tar.gz
  • -j:归档后使用bzip2压缩,使用与-z选项相同

  • -J:归档后使用xz压缩,使用与-z选项相同

你可能感兴趣的:(Linux系统管理)