在Linux下面,扩展名没有什么特殊的意义。但是针对这些压缩命令所产生的压缩文件,为了方便记忆,会有一些特殊的命名方式

压缩文件的用途与技术

比较大型的文件通过文件压缩技术后,可以将它的磁盘使用量降低,从而达到降低文件容量的效果。此外有的压缩程序还可以机型容量限制,使一个大型文件可以划分为数个小型文件,以方便携带
压缩的原理:
1.计算机系统以字节Byte单位来计量,但计算机最小计量单位为bit来计量,1B=8bit。有的字节可能含有空的bit。将此空位置“丢出来”,让文件占用的空间变小
2.将重复的数据进行统计记录,例如数据为[111......]共有100个1时,可以记录为[100个1]而不是真的由100个1的位存在,可以精简文件记录的容量
压缩后的文件并无法直接被系统使用,必须将它还原回未压缩的文件

Linux系统常见的压缩命令

压缩文件的扩展名大多是:.tar、.tar.gz、.tgz、.gz、.Z、.bz2、*.xz
扩展名的意义:压缩命令非常多,且不同的命令所用的压缩技术并不相同,无法互通压缩/解压缩文件。Linux文件的属性基本上是与文件名没有关系,但为了方便使用者记忆,所以有不同的扩展名
各个扩展名对应压缩软件

  • *.z:comparess程序压缩的文件
  • *.zip:zip
  • *.gz:gzip
  • *.bz2:bzip2
  • *.xz:xz
  • *.tar:tar程序打包的文件,并没有压缩过
  • *.tar.gz:tar程序打包的文件,并且经过gzip的压缩
  • *.tar.bz2:tar程序打包的文件,并且经过bzip2的压缩
  • *.tar.xz:tar程序打包的文件,并且经过xz的压缩
    总结:
    压缩:最常见的压缩命令为gzip、bzip2、xz。但其只能压缩单个文件,不能同时压缩多个。
    打包:tar可以将多个文件打包为一个文件,甚至是目录。但其只能打包,并不能压缩。后来GUN计划中,将整个tar与压缩功能结合在一起

gzip,zcat/zmore/zless、zgrep

gzip

gzip是使用最广的压缩命令,可以解开compress、zip与gzip等软件压缩的文件
gzip [-cdtv#] 文件名
zcat 文件名.gz
选项与参数:

  • -c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理
  • -d:解压缩的参数
  • -t:可以用来检验一个压缩文件的一致性,看看文件有无错误
  • -v:可以显示出原文件/压缩文件的压缩比等信息
  • -#:#为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6
    image.png
    使用gzip压缩时,在默认的状态下原本的文件会被压缩成为.gz后缀的文件,源文件就不存在会被删除,且*.gz文件可以在Windows被解压缩

gzip -d 解压

gzip -d将原本的.gz删除,恢复到原本的文件
image.png
想让从文字压缩文件当中查找数据的话,可以通过zgrep来查找关键词,不需要将压缩文件解开才以grep进行
image.png

bzip2,zcat/zmore/zless、zgrep

bzip2时为了替换gzip,并提供更佳的压缩比
bzip2 [-cdkzc#] 文件名
bzcat 文件名 .bz2
选项与参数:

  • -c:将压缩的过程产生的数据输出到屏幕上
  • -d:解压缩的参数
  • -k:保留原始文件
  • -z:压缩的参数(默认值,可以不加)
  • -v:可以显示出源文件/压缩文件的压缩比等信息
  • -#:与gzip同样的,都是计算压缩比的参数,-9最佳,-1最快
    image.png
    gzip和bzip2的压缩率
    image.png
    bzip2的压缩率比gzip好,但大容量文件来说,bzip2压缩时间会比gzip压缩时间久

xz,zcat/zmore/zless、zgrep

xz的压缩比更高,用法和gzip/bzip2几乎一模一样
xz [-dtlkc#] 文件名
xcat 文件名.xz
选项与参数:

  • -d:解压缩
  • -t:测试压缩文件的完整性,有无错误
  • -l:列出压缩文件的相关信息
  • -l:保留原本的文件不删除
  • -c:将数据在屏幕上输出
  • -#:计算压缩比的参数
    image.png

打包命令:tar

虽然gzip、bzip2、xz也能够针对目录来进行压缩,不过压缩目录时只是将所有的文件分别进行压缩,而不是将多个数据包成一个文件的样式
将多个文件或目录包成一个大文件的命令功能,可以称之为一种打包命令。tar使用太广泛了,目前windows也支持tar.gz文件名的解压缩

tar

image.png
tar选项与参数很多,常用的如下
tar [-z|-j|-J] [cv] [-f 待建立的文件名] filename...
tar [-z|-j|-J] [cv] [-f 既有的tar文件名]
tar [-z|-j|-J] [cv] [-f 既有的tar文件名] [-C 目录]
选项与参数:

  • -c:建立打包文件,可搭配-v来查看过程中被打包的文件名(filename)
  • -t:查看打包文件的内容含有哪些文件名,重点在查看【文件名】
  • -x:解包或解压缩的功能,可以搭配-C在特定目录解压,特别留意-c、-t、-x不可同时出现在一串命令行中
  • -z:通过gzip的支持进行压缩/解压缩:此时的文件名最好为*.tar.gz
  • -j:通过bzip2,此时文件名:*.tar.bz2
  • -J:通过xz,此时文件名:*.tar.xz,特别留意-z、-j、-J不可同时出现在一串命令行中
  • -v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
  • -f filename:-f后面要立刻接要被处理的文件名,建议-f单独写一个选项(比较不会忘记)
  • -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
  • -p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
  • -P:保留绝对路径,允许备份数据中含有根目录存在之意
  • -exclude=FILE:在压缩的过程中,不要将FILE打包
    最简单的使用tar只要记住以下命令
  • 压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查询:tar -jtc -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 [-C 欲解压缩的目录]

总结

  • filename.tar.bz2是压缩后的文件名,也是我们自己命名的,tar并不会主动的产生建立的文件名,我们要自定义,所以扩展名就显得很重要
  • 如果文不加[-z][-j][-J]的话,文件名最好为*.tar即可,如果是-j则取名*.tar.bz2,-z则最好取名为*.tar.gz
  • 由于[-f filename] 是紧接在一起的,但是很多文章会写成[-jcvf filename],但是由于选项的顺序是可以变换的,所以会误认为[-jvfc filename]也可以,事实上这样会导致产生的文件名变成c,因为-fc所以会变成c。所以建议将[-f filename]与其他选项独立出来,会比较不容易发生问题

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

备份/etc最简单的方法就是使用tar
image.png
image.png
image.png
image.png
image.png
上图可以显示压缩率越高,则花费的时间越长。43M的文件夹用gzip花费了3秒,而用xz则花费了36秒,如果数据量过大要考虑时间成本

查看tar文件的数据内容(可查看文件名),与备份文件名有否根目录的意义

tar -jtv -f /root/etc.tar.bz2
image.png
使用tar备份的数据可能会需要解压缩回来使用,在tar所记录的文件名(即上图中使用tar -jtvf 所查看到的文件名)那就是解压缩后的实际文件名,如果去除了根目录/,则备份数据会在解压的目录下打开,如果没有去掉根目录/则解压缩后的文件名就会是绝对路径,即解压后的数据一定会被放置到根目录下的文件夹,则原本的文件夹将会被备份数据所覆盖,非常不安全
如果非要记录使用根目录/则压缩的时候则可以使用tar -P

将备份的数据解压缩,并考虑特定目录的解压缩操作(-C 选项的应用)

tar -jxv -f [想要解压的文件] [-C 解压目标地址]
如果不加解压地址则默认解压到当前文件夹下

仅解开单一文件的方法

只需要打开包内的其中一个文件,需要使用-jtv找到文件名解压
tar -jtv -f 打包文件.tar.bz2 | grep '文件名(不包含目录)'
tar -jxv -f 打包文件.tar.bz2 待解开文件名(包含目录)

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

  • --exclude不包含
    image.png

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

基本名称:tarfile、tarball

  • tarfile:tar如果仅仅是打包[tar -cv -f file.tar]而不是压缩,则为tarfile。
  • tarball:如果还进行压缩打包[tar -jcv -f file.tar.bz2],则为tarball。上述仅仅是称呼而已

XFS文件系统的备份与还原

其他常见的压缩与备份工具


这个家伙很懒,啥也没有留下😋