《鸟哥的linux私房菜 基础篇》第九章读书笔记--重点压缩与解压

来源:互联网 发布:今天淘宝登录不上去 编辑:程序博客网 时间:2024/04/30 04:02

第九章 档案与文件的压缩与打包

本章根据需要对后面的备份部分只进行了简略的阅读


压缩与解压缩
档案里有相当多的“空间”存在,并不是完全填满的,而“压缩”的技术就是将这些“空间”填满,让整个档案占用的容量下降。
压缩比=压缩前/压缩后  占用磁盘空间大小的比

常见的压缩的扩展名:
*.Z   ---  compress程序压缩的档案;(很老)
*.gz  --- gzip
*.bz2  ---  bzip2
*.tar  ---  tar程序打包的数据,并没有压缩过
*.tar.gz ---  tar程序打包过的数据,其中并且经过gzip的压缩
*.tar.bz2 ---  tar程序打包的档案,其中并且经过bzip2的压缩

由于这些指令通常仅能这对一个档案来压缩与解压缩,如此一来,每次压缩与解压缩都要一大堆档案,所以打包软件tar就显得很重要

compress [-rcv] 档案或目录   ---压缩
umcompress  档案.Z   ---解压缩
-r : 可以连同目录下的档案也同时给予压缩
-c :将压缩数据输出成为standard output(输出到屏幕)
-v : 可以秀出压缩后的档案信息以及压缩过程中 的一些档名变化
是compress压缩后源文件消失,变成压缩后的.Z文件,解压缩后.Z不存在了,出现解压后的文档

compress -c man.config > man.config.back.Z  数据流重定向到.Z文件,两个都保留
这个compress很少有人用,gzip可以打开.Z的压缩档案

gzip [-cdtv#] 档名  -- 压缩。压缩比比compress大
zcat 档名.gz   --  查看压缩文件(可读取纯文本文档被压缩后的压缩文件,但并没有解压缩)
-c : 将压缩的数据输出到屏幕上,可透过数据流重定向来处理
-d : 解压缩的参数!!
-t : 可以用来检验一个压缩文件的一致性,看看档案有无错误
-v:显示压缩比等信息
-#:压缩等级,-1最快,但是压缩比最差,-9最慢,但压缩比最好。预设为-6

没用重定向时,压缩后源文件也不见了。它压缩成的文件再windows下可以用winRAR软件来解压缩

解压缩还可以用gzip -d **.gz,它与gzip的压缩相反,.gz不存在了

bzip2 [-cdkzv#] 档名  -- 压缩比比gzip好
bzcat 档名.bz2  --  读取压缩后的文档,但是并没有解压
-c:将压缩的过程产生的数据输出到屏幕
-d:解压缩的参数!!!
-k:保留源文件,而不会删除原始档案!!
-z:压缩的参数
-v:可以显示出原档案/压缩文件案的压缩比等信息
-#:与gzip同样,都是在计算压缩比的参数,-9最佳,-1最快
没有重定向时,压缩后源文件不见了,可以利用-k参数或者重定向-c  >来进行保留源文件

tar [-j|-z] [cv] [-f 建立的档名] filename    ----打包或压缩
tar [-j|-z] [tv] [-f 建立的档名]                  ----查看档名
tar [-j|-z] [xv] [-f 建立的档名] [-C 目录]   ----解压缩
-c : 建立打包档案,可搭配-v来查看过程中被打包的档名filename;
-t:查看打包档案的内容含有哪些档名,重点在查看档名
-x:解打包或解压缩的功能,可以搭配-C在特定目录解开,特别的-c, -t, -x不能同时出现在一串指令中
-j:透过bzip2的支持进行压缩/解压缩:此时档名最好为*.tar.bz2
-z:透过gzip的支持进行压缩/解压缩:此时档名最好为*.tar.gz
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f后面要立刻接被处理的档名
-p:保留备份数据的原本权限与属性,常用语备份(-c)重要的配置文件
-P:保留绝对路径,亦即备份数据中含有根目录存在之意
--exclude=FILE:在压缩过程中,不要将FILE打包

tar -zpcv -f /root/etc.tar.gz /etc   将目录/etc进行备份
tar -jpcv -f /root/etc.tar.bz2 /etc  同上,但是压缩后的文件更小

解压缩并将数据放到特定的目录下:(常用命令)
tar -jxv -f /root/etc.tar.bz2 -C /tmp

仅解开单一文件的方法:要打开的文件名为shadow
1,查找该文件名:tar -jtv -f /root/etc.tar.bz2 |grep 'shadow'  
2,将该文件解开:tar -jxv -f 打包文件.tar.bz2 待解开文件名
                           tar -jxv -f /root/etc.tar.bz2 etc/shadow

打包某目录,但不包含该目录下的某些文件:利用--exclude=FILE:
tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.bar.bz2 /etc /root

仅备份比某个时刻还要新的文件
tar -jcv -f /root/etc.newer.than.passwd.tar.bz2 --newer-mtime="2008/09/29" /etc/*

仅用tar进行打包的文件叫做tarfile。还进行了压缩的支持,叫做tarball

将/home,/root,/etc被分到磁带机/dev/st0中:tar -cv -f /dev/st0 /home /root /etc


备份工具:dump
除可以备份整个文件系统之外,还可以指定等级。level 0~9
可以备份目录,且它并非单一的文件系统,但是有限制:所有的备份数据都要在该目录下;且仅能使用level0即完全备份;不支持-u参数,即无法创建/etc/dumpdates这个level备份的时间记录文件

备份恢复:restore

光盘写入工具:
  • 先将所需要备份的数据构建成为一个镜像文件(iso),利用mkisofs命令来处理;
  • 将该镜像文件刻录至光盘或DVD中,利用cdrecord命令来处理。
mkisofs:新建镜像文件
cdrecord:光盘刻录工具。命令

dd:可以直接读取磁盘设备的内容,然后将这个设备备份成一个文件。
dd if="input file" of="output file" bs="block size" count="number"

将一个分区的内容完整的复制到另一个新建的分区中时,且复制的内容包括启动扇区的区块时,cp或者tar这种命令是无法达到需求的,这时就要用dd命令。
在完成新建分区的划分之后,不需要对其进行格式化,而直接进行扇区表面的赋值:dd if=/dev/hdc1 of=/dev/hdc9
因为dd可以将原来旧的分区中的扇区表面的数据整个复制过来,连同superblock,boot sector,meta data等全部也会复制过来。

cpio,可以备份任何东西,包括设备文件。但它不会主动去寻找文件来备份,需要配合类似find等可以找到文件名的命令来告知cpio该被本分的数据在哪里


原创粉丝点击