zoukankan      html  css  js  c++  java
  • Linux 文件压缩与归档

    Linux 文件压缩与归档

    之前总是将linux 的文件打包压缩命令混为一体,工作中我也很少的去压缩和打包文件。应用场景也多是从网上下载一个软件包,然后使用tar命令解压一下,基本上没有遇到什么阻碍。

    回头看这两年写的文章,技术的含量不高,大多数是在进行知识的总结和思考。特别是这半年来,学习的动力虽然没有减少,但是却很少写博客了。书读了不少,linux的视屏看了不少,以前工作中或者书籍中难以理解的名词和概念如今也迎刃而解了。学到的知识没有及时的总结,可能随着时间就慢慢的遗忘了。今后会及时的将所学的知识进行总结,贴到博客中。


    一、压缩

    为什么要压缩?
    以Apache网页压缩的gzip举例,使用压缩后,占用的带宽资源更少,传输的速率更快。在磁盘上使用压缩可以缩减文件的大小,使得同样大小的磁盘可以储存更多的信息。

    压缩的原理?
    许多文件都是AscII 文本文件,文本文件中许多信息是重复的,比如一篇文章中多次出现apple 和banana 。那么就可以使用0 代表apple,1代表banana。解压的时候再替换过来,这样子文件的大小能够大大的缩减。压缩有许多种算法,每种算法也可以指定压缩比。压缩比越高,压缩时间越长,响应的解压时间也要越长。因此不是说压缩比越高越好。
    linux 中常用的压缩命令有,gzip、bzip2, xz。

    压缩命令

    1.gzip
    gzip 压缩之后会删除源文件,压缩后的文件名后缀为.gz
    gzip test.txt 压缩文件
    gzip -d test.txt 解压文件
    其中-d选项的意思是decompress(解压)的意思。
    2、bzip2
    bzip2 压缩之后的格式为bz2
    bzip2 test.txt
    bzip2 -kd test.txt
    3、xz
    xz 压缩之后的格式为.xz
    xz test.txt
    xz -kd test.txt
    4、zip 与unzip
    zip test.txt.zip ./test.txt
    unzip test.txt.zip

    这些压缩命令都有其他的选项,可以使用man 命令 来查看。这些命令同时也具有另外与之匹配的解压命令,但为了简化记忆,统一使用 command -d 来解压文件,使用-k 可以保留源文件。

    二、归档

    什么是tar ,man tar 之后很容易看到这个命令的缩写由来。GNU ’tar‘ saves many files togerther into a single tape or disk archive, and can restore indeividual files from the archive.
    tar 是tape 和 archive 的缩写。tape 是胶带捆绑。archive是归档。也就是说tar命令并不进行文档的压缩。那么我们平时所使用的 tar 命令为什么能够实现压缩和打包的功能呢?

    tar 如何实现文件的压缩功能?

    tar 命令在工作的时候会调用之前提到的压缩命令,当归档的时候可以指定使用某种压缩算法,也可以不压缩只打包。比如压缩的时候,使用z 表示使用gzip压缩,使用j 表示使用bzip2 压缩。

    tar 命令用法:

    tar 
    -c //create 创建归档文件
    -f //file 操作的归档文件
    -x //extrate 展开归档
    打包文件与展开归档
    tar -cf test.tar ./test1.txt ./test2.txt ./test3.txt //归档文件
    tar -xf test.tar //展开归档
    使用gzip 压缩与解压
    tar -zcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
    tar -zxf test.tar.gz
    使用bzip2 压缩与解压
    tar -jcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
    tar -jxf test.tar.gz
    使用xz压缩与解压
    tar -Jcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
    tar -Jxf test.tar.gz

    Help Me 这么多解压命令怎么记得住?

    压缩算法缩写:
    z -------> gzip
    j -------> bzip2
    J -------> xz

    查看归档中的文件列表

    tar -tf  test.tar.gz //查看压缩文档中文档列表,而不必解压。

    三、实测压缩效果

    [root@roverliang test]# du -h
    7.7M ./profiled/bin
    7.8M ./profiled
    7.8M .

    //压缩过后的文件大小。
    [root@roverliang test]# ll -Ah
    total 8.6M
    -rw-r--r-- 1 root root 3.0M Nov 3 15:58 file.tar.bz2
    -rw-r--r-- 1 root root 3.4M Nov 3 15:56 file.tar.gz
    -rw-r--r-- 1 root root 2.3M Nov 3 15:58 file.tar.xz
    drwxr-xr-x 3 root root 4.0K Nov 3 15:44 profiled

    压缩之前文件夹大小是7.8M ,压缩后最小的仅有2.3M,最大的也仅仅是3.4M.
    我们可以看下linux kernel 的官网,看下内核使用的是那种压缩格式。
    https://www.kernel.org/
    可以看到,linux 的内核也是使用了xz 的格式。

    四、其他内容

    还有一些选项,我认为是没有必要的比如压缩或者解压的使用-v选项,除了满屏幕飘过乱码外,我觉得并没有什么作用。这些命令与linux的哲学思想不符合,linux的哲学思想是尽量减少与用户的交互,这本质上也反映了李纳斯的内敛性格。

    文章中如果有不正确的地方,欢迎在评论区讨论,共同学习一起提高。

  • 相关阅读:
    scanf与scanf_s的区别
    PAT 1041 考试座位号
    PAT1018 锤子剪刀布
    Cookie
    JSP--原理
    多线程练习题
    Java线程--线程的同步与锁
    有关toString()和println(Object)
    Java Web请求和响应机制
    IO流
  • 原文地址:https://www.cnblogs.com/roverliang/p/6027129.html
Copyright © 2011-2022 走看看