文件压缩 

 计算机使用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除了可以将数据打包成文件职位,还能够将文件打包到特别的设备。

Linux 文件压缩、打包的更多相关文章

  1. Linux文件压缩/打包/解压

    在Linux日常维护中,经常需要备份同步一些比较重要的文件,而在传输过程中如果文件比较大往往会非常慢,而且还会非常占用空间,这时候就需要我们使用压缩工具对大文件进行压缩打包,下面我们来介绍一下常用的压 ...

  2. Linux文件压缩与打包笔记

    linux 文件压缩与打包笔记 压缩原理:通过算法去掉空位,1Bytes=8bits , 可能存储的真正有用的数据并没有占满一个字节空间 , 还有就是可能有重复的数据,通过某种算法从这些方面进行压缩处 ...

  3. linux文件压缩与文件夹压缩(打包)

    目录 一:linux文件压缩 1.linux常见的压缩包有哪些? 2.bzip压缩(文件) 二:打包(文件夹压缩) 1.打包命令 2.参数 3.参数解析(实战) 4.注意事项 简介: win中的压缩包 ...

  4. Linux 文件压缩与归档

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  5. Linux文件压缩和解压缩命令

    Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如: ...

  6. linux文件管理--压缩打包

    目录 linux文件管理--压缩打包 1.压缩打包介绍 2.gzip压缩工具 3.zip压缩工具 注意: 4.tar压缩工具 5.tar生产案例实践 linux文件管理--压缩打包 1.压缩打包介绍 ...

  7. Linux文件压缩、解压缩及归档工具一

    主题Linux文件压缩.解压缩及归档工具 压缩工具很重要的,因为要经常到互联网下载包 一compress/uncompress compress [-dfvcVr] [-b maxbits] [fil ...

  8. linux文件压缩与打包

    在linux中常见的压缩命令 首先,在linux中压缩文件的扩展名大多是 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar tar程序打包的数据,并没有压缩过 *.t ...

  9. Linux中的文件压缩,打包和备份命令

    压缩解压命令 gzip  文件   -c : 将压缩数据输出到屏幕,可用来重定向 -v   显示压缩比等信息 -d   解压参数 -t    用来检验一个压缩文件的一致性看看档案有没错 -数字 : 压 ...

随机推荐

  1. 关于Python学习之 列表与字典

    列表 列表是Python中最具灵活性的有序集合对象类型. # 列表迭代和解析 >>> res = [c*4 for c in 'Spam'] >>> res ['S ...

  2. Spring+Velocity+Mybatis入门(step by step)

    一.开发工具 开发过程中使用的操作系统是OS X,关于软件安装的问题请大家移步高效的Mac环境设置. 本文是我对自己学习过程的一个回顾,应该还有不少问题待改进,例如目录的设置.编码习惯和配置文件的处理 ...

  3. day 03 预科

    目录 什么是变量: 变量的组成 变量的风格 1.驼峰体 2.下划线 变量名的组成规范 注释的作用 turtle库的简单使用 什么是变量: 1.是变化的量. 2.变:现实世界中的状态是会发生改变的. 3 ...

  4. Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)

    一.Oracle数据库入门到高薪培训视频教程(从 Oracle11g 到 Oracle19c) 本套Oracle视频教程学习地址: https://edu.51cto.com/course/18034 ...

  5. 安装python工具

    安装python编写工具 本篇幅只限于安装linux系统上. 想要实现linux程序在windows桌面上打开,需要在linux上打开X11forward和在windows上安装Xmanager ID ...

  6. 自已编译openweb docker image笔记

    1.基于https://github.com/jketterl/openwebrx git clone https://github.com/jketterl/openwebrx.git 2.首先创建 ...

  7. 如何使用anaconda安装pygame

    超级方便!!! 打开Anaconda, 输入: pip install pygame 等待下载安装完成. 如图: 显示成功安装:

  8. 【学英语~磨耳朵】2013年以来看过的所有美剧&电影&纪录片等等

    我看美剧看太多了,而且同一部剧刷很多遍.这种coach potato的做法其实一点也不好,英文会好可能只是意外收获.下面是单子: 美剧: 老友记-情景喜剧-10季全看.至今还在网易云音乐循环10季音频 ...

  9. python爬虫中的ip代理设置

    设置ip代理是爬虫必不可少的技巧: 查看本机ip地址:打开百度,输入“ip地址”,可以看到本机的IP地址: 本文使用的是goubanjia.com里面的免费ip: 使用时注意要注意传输协议是http还 ...

  10. WPF 控件库——带有惯性的ScrollViewer*(转)

    转:https://blog.csdn.net/ahilll/article/details/82418892 一.先看看效果 二.原理 虽然效果很简单,但是网上的一些资料涉及的代码量非常可观,而且效 ...