• Linux 文件压缩、打包


    文件压缩 

      计算机使用byte单位来计量。实际上,计算机最小的计量单位是bit。1byte = 8 bit。如果记录1这个数字,00000001,1会在最右边占一个1个bit

    其他7个bit会被填上0。其实在这个例子中那7个bit是“空的”。为了要满足目前我们的操作系统数据的访问,会将该数据转为byte形态记录了。而一些

    聪明的设计师就利用一些复杂的计算方式,将这些没有使用到的空间“丢”出来,让文件占用的空间变小。这就是压缩的技术。

      另外一种压缩技术也很有趣,它是将重复的数据进行统计记录的,比如,如果你的数据为“111……”,共有100个1时,那么压缩技术会记录为“100个1”

    而不是真的有100个1存在。这样也能够精简文件记录的内容。

      简单地说,你可以将它想象成,文件里面有相当多的“空间”存在,并不是完全填满的,而“压缩”的技术就是将这些“空间”填满,让整个文件占用量下降。

    这些压缩过的文件无法直接被操作系统所使用,因此,若要使用这些被压缩过的文件数据,必须将它“还原”成未压缩前的样子,这就是所谓的“解压缩0”。

    压缩前与压缩后的文件所占用的磁盘空间大小,就被称为“压缩比”。

      在Linux环境中,压缩文件的扩展名大多是*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,为什么会有这样的扩展名,不是说Linux的扩展名没有什么作用吗?

    这是因为Linux的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法相互压缩/解压缩文件。所以,当你下载到某个压缩文件

    时,自然就要知道该文件是由哪种压缩命令所制作出来了。

      

      gzip,zcat

        gzip是应用最广泛的要命令了,gzip可以解开compress、zip与gzip等软件所压缩的文件。gzip新建的压缩文件为*.gz的文件名。

      

      当使用gzip压缩时,默认状态下原本的文件会被压缩称为.gz的文件名,原文件就不存在了。

      

      

      gzip的压缩已经优化过了,虽然gzip提供1~9的压缩等级,不过使用默认的6就非常好用了。cat可以读取纯文本文件,那个zcat可以读取纯文本文件被压缩

      后的压缩文件。

      bzip2,bzcat

      bzip2是为了取代gzip并提供更加的压缩比而来的。bzip2是很不错的东西,竟然比gzip还要好。

      

      使用gzip扩展名自动创建为.gz。bzip2扩展名为.bz2。如果想要读取压缩文件的内容呢?是否一定要解压缩?当然不需要。使用bzcat这个命令

      来读取内容即可。当你要解开一个压缩文件时,这个文件的名称为.bz,.bz2,.tbz,tbz2等,那么就可以尝试使用bzip2来解压缩。

     打包命令

      虽然gzip、bzip2也能够针对目录进行压缩,不过这两个命令对目录的压缩指的是将目录内所有文件“分别”进行压缩的操作。这种将多个文件或目录包成一个大文件的命令

    功能,我们可以称呼它是一种“打包命令”。tar可以将多个目录或文件打包成一个太大文件,同时还可以通过gzip/bzip2的支持,该文件同时进行压缩。

      tar

      

      最简单使用tar就只要记忆如下的内容即可:

      - 压缩: tar -jcv -f filename.tar.bz2要被压缩的文件或目录名称

      - 查询: tar -jtv -f filename.tar.bz2

      - 解压缩: tar -jxv -f filename.tar.bz2 -C 预解压缩的目录

      filename.tar.bz2是我们自己取的文件名,tar不会主动产生创建的文件名,要自定义。所以扩展名就很重要了,如果不加[-j]|[-z],文件名最好为.tar即可

      如果是-j参数,代表有bzip2的支持,因此文件名最好取为*.tar.bz2,因为bzip2会产生bz2的扩展名。至于如果是加上了-z的gzip的支持,那文件名最好

      取为*.tar.gz。

       使用tar加入-j或者-z的参数备份/etc/目录

        

        

      我们知道bzip2也即-j这个参数来制作备份时,能够得到比较好的压缩比。"-p"这个参数的原因是为了保存原文件的权限与属性。

      查阅tar文件的数据内容(可查看文件名)

        查看文件名:

            

        加上-v这个参数时,详细的文件权限/属性都会被列出来。如果只是想知道文件名唯一,就将-v去掉。从上面的数据我们可以

      发现一件很有趣的事情,那就是每个文件名都没有了根目录了。那为什么要删掉目录呢?主要是为了安全,我们使用tar备份的数据

      可能会需要解压缩回来使用,在tar所记录的文件就是解压缩后的实际文件名。如果去掉根目录,假设你将备份数据在/tmp中解开,那

      么解压缩的文件名变成“/tmp/etc/xxx”。但如果没有去掉根沐,解压缩后的文件名就会是绝对路径,即解压缩后的数据一定会被放置到

      /etc/xxx去。如此一来,你的原来的/etc/下面的数据就会被备份数据所覆盖掉了。

        如果你确定是需要保留根目录到tar文件中(备份),那么可以使用-P(大写这个参数)

             

      将数据解压缩

        在当前目录下进行解压缩的操作:

         

        指定解压的目录:

        

        进解开单一文件:

        

        

        打包目录,但不包含该目录下的某些文件

        假设想打包/etc/和/root这几个重要的目录,但不想要打包/root/etc*开头的文件,假设这个新的打包文件为/root/system.tar.bz2,

        如果想要两行输入时,最后面加上反斜杠()并立刻按下[Enter],就能够到第二行继续输入了。

        

        仅备份比某个时刻还要新的文件

        某些情况下想要备份新的文件,不想备份旧文件。此时--newer-mtime这个参数就很重要。其实这是两个参数“--newer”表示后续

        日期包含“mtime”与“ctime”,而"--newer-mtime"仅是mtime而已。

        

        

      基本名称

         tar打包出来的文件有没有进行压缩得到的文件称为不同。如果仅是打包而已,就是“tar -cv -f file.tar” 这个文件我们称呼为tarfile。如果还进压缩的支持

       例如 “tar -jcv -f file.tar.bz2”时,我们称呼为tarball。这只是一个基本称呼。tar除了可以将数据打包成文件职位,还能够将文件打包到特别的设备。

     

  • 相关阅读:
    Ceph纠删码编码机制
    Vmware error:无法获得 VMCI 驱动程序的版本: 句柄无效。
    Virtual Box 安装过程(卸载Vmware后)
    解决安卓SDK更新dl-ssl.google.com无法连接的方法
    《中文核心期刊要目总览(2014年版)》——计算机、自动化类
    2014中国科技核心期刊(中国科技论文统计源期刊)名录——计算机类
    计算机专业方面的期刊
    Office 中的各种小tips(更新中)
    博客园添加背景音乐
    jmeter定时器
  • 原文地址:https://www.cnblogs.com/jixp/p/10863967.html
Copyright © 2020-2023  润新知