Linux 压缩和解压缩

萝らか妹 提交于 2020-02-13 23:43:30

Linux 压缩和解压缩

  • 最早的:compress/uncompresse 文件名后缀:.Z

  • 然后是:gzip/gunzip 文件名后缀:.gz

    很久一段gzip是linux的标准压缩和解压缩算法了

  • 然后是:bzip2/bunizip2 文件名后缀:.bz2

    大文件的压缩比比gzip大一点,但是小文件的压缩比还没有gzip大,所以没能撼动gzip的地位

  • 然后是:xz/unxz 文件名后缀:.xz

    压缩比显著提高,撼动了gzip的地位

    lzma/unlama 文件名后缀:.lzma

  • 最通用的(所以操作系统都支持):zip/unzip

Linux 归档:上述压缩工具,只能对文件压缩,不能对目录压缩。要想对目录压缩,必须要归档后,再对归档文件压缩。

  • tar,cpio

gzip/gunzip/zcat

1,压缩:gzip file

压缩完成后,会自动删除原文件

# ll -h messages
-rw-------. 1 root root 915K Feb 11 22:05 messages
[root@localhost ~]# gzip messages
[root@localhost ~]# ll -h messages.gz
-rw-------. 1 root root 167K Feb 11 22:05 messages.gz

2,解压缩:gzip -d或者gunzip

解压缩完成后,会自动删除压缩文件

# gunzip messages.gz
[root@localhost ~]# ll -h messages
-rw-------. 1 root root 915K Feb 11 22:05 messages
# gzip -d messages.gz
[root@localhost ~]# ll -h messages*
-rw-r--r--. 1 root root 915K Feb 11 22:06 messages

3,指定压缩比,默认是6,压缩比越大,压缩后的文件的空间越小。范围是1-9

# gzip -9 messages
[root@localhost ~]# ll -h messages.gz
-rw-r--r--. 1 root root 164K Feb 11 22:06 messages.gz

4,压缩后保留原来的文件:gzip file -c > zxx.gz

# gzip -c messages > messages.gz
[root@localhost ~]# ll -h messages*
-rw-------. 1 root root 915K Feb 11 22:05 messages
-rw-r--r--. 1 root root 167K Feb 11 22:06 messages.gz

5,不解压缩,直接查看压缩文件里的内容:zcat messages.gz

bzip2/bunzip2/bzcat

1,压缩:bzip2 file

压缩完成后,会自动删除原文件

# ll
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages
# bzip2 messages
# ll
-rw-r--r--. 1 root root 69193 Feb 11 22:06 messages.bz2

2,解压缩:bzip2 -d或者bunzip2

解压缩完成后,会自动删除压缩文件

# bzip2 -d messages.bz2
[root@localhost ~]# ll messages
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages
# bunzip2 messages.bz2
[root@localhost ~]# ll
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages

3,指定压缩比,默认是6,压缩比越大,压缩后的文件的空间越小。范围是1-9

# bzip2 -9 messages
[root@localhost ~]# ll
-rw-r--r--. 1 root root 69193 Feb 11 22:06 messages.bz2

4,压缩后保留原来的文件:gzip file -k

# bzip2 -k messages
[root@localhost ~]# ll messages*
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages
-rw-r--r--. 1 root root  69193 Feb 11 22:06 messages.bz2

5,不解压缩,直接查看压缩文件里的内容:bzcat messages.bz2

xz/unxz/xzcat和lzma/unlzma/lzcat

1,压缩:xz file

压缩完成后,会自动删除原文件

# xz messages
[root@localhost ~]# ll
-rw-r--r--. 1 root root 57328 Feb 11 22:06 messages.xz

2,解压缩:xz -d或者unxz

解压缩完成后,会自动删除压缩文件

# xz -d messages.xz
[root@localhost ~]# ll
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages
# unxz messages.xz
# ll
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages

3,指定压缩比,默认是6,压缩比越大,压缩后的文件的空间越小。范围是1-9

# xz -9 messages
[root@localhost ~]# ll
-rw-r--r--. 1 root root 57328 Feb 11 22:06 messages.xz

4,压缩后保留原来的文件:xz file -k

# xz -k messages
[root@localhost ~]# ll
-rw-r--r--. 1 root root 936782 Feb 11 22:06 messages
-rw-r--r--. 1 root root  57328 Feb 11 22:06 messages.xz

5,不解压缩,直接查看压缩文件里的内容:xzcat messages.xz

归档

1,创建归档

-c选项:创建归档

-f选项:归档的文件名

-P选项:tar默认是找执行tar目录的当前目录下的文件。如果想归档别的目录下的文件或目录,必须加-P选项,然后加绝对路径

压缩/etc下所有文件,当前执行目录是/root

# pwd
/root
# tar Jcf etc3.tar.xz -P /etc

杠可以不加,但f一定要放到最后,因为后面的参数:归档文件名是给f选项用的

# ls
anaconda-ks.cfg  initial-setup-ks.cfg  messages  messages.xz
[root@localhost ~]# tar cf me.tar messages messages.xz
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  messages  messages.xz  me.tar

2,查看归档里的文件列表

-t选项:查看归档里的文件列表

# tar tf me.tar
messages
messages.xz

3,展开归档

-x选项:展开归档

不使用-C就是展开在当前目录,使用-C展开到指定目录。

# tar xf me.tar -C /tmp
# ls /tmp/
messages
messages.xz

4,压缩归档文件

用gzip,bzip2,xz都可以压缩归档文件

# gzip me.tar
# ll me.tar.gz
-rw-r--r--. 1 root root 228051 Feb 12 08:53 me.tar.gz

归档并压缩

归档和压缩能一起做

1,归档后,以gzip算法压缩/解压缩

  • 压缩:zcf

    # tar zcf me3.tar.gz messages messages.xz
    # ll me3.tar.gz
    -rw-r--r--. 1 root root 228044 Feb 12 11:43 me3.tar.gz
  • 解压缩:zxf

    # tar zxf me3.tar.gz

2,归档后,以bzip2算法压缩/解压缩

  • 压缩:jcf

    # tar jcf me3.tar.bz2 messages messages.xz
  • 解压缩:jxf

    # tar jxf me3.tar.bz2

3,归档后,以xz算法压缩/解压缩

  • 压缩:Jcf

    # tar Jcf me4.tar.xz messages messages.xz
  • 解压缩:Jxf

    # tar Jxf me4.tar.xz

zip/unzip:归档且压缩

# zip me.zip messages messages.xz
# unzip me.zip

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!