linux 解压、压缩与备份

一、压缩与解压

1、gzip,zcat

gzip [-zdtv#] 文件名

参数

-c 将压缩的数据输出到屏幕

-d 解压缩

-t 检查一个压缩文件的一致性

-v 显示源文件与压缩文件的压缩比

-#压缩等级,1-9,一般使用默认使用6

测试:

 

使用gzip -c-9 compalie.pdf>compalie.pdf.gz的时候看到ratio为10.0% 说明centos下的ration的计算公式不是compress ration=compressed size/uncompressed size,而是(uncompressed size-compressed size)/(uncompressed size),也就是被压缩了的大小与原始大小的比率。可以使用zcat在不解压的条件下查看被压缩的内容。

2、bzip2,bzcat

 bzip2 [-cdkzv#] filename

-c 将压缩的数据输出到屏幕,可以使用流的重定向

-d 解压缩

-k 保留源文件

-z 压缩参数

-v 显示压缩比

-# 与gzip一样

测试:

使用等级为9的压缩指令可以就按到compaile.pdf 节省了9.56%的空间,小于gzip的10%,而test.a2daps的空间节省了约21%,远远高于gzip的7%

 3、打包命令 tar

因为gzip与bzip2仅仅能够对单一的文件进行压缩,单对文件夹进行这两个指令的时候是循环将子文件进行压缩的,不具备对文件夹压缩的能力 tar具备这个能力 

压缩: tar [-j|-z][cv][-f 新建的文件名] filename

查看 tar [-j|-z][tv][-f 压缩好的文件名]

解压缩 tar [-j|-z][xv][-f 需要解压的文件名][-c 解压的目录]

参数的解释为:

-c 新建打包文件

-t 查看打包文件的内部文件名

-x 解压缩,解打包

-j 使用bzip2压缩

-v 在解压缩或者压缩过程中将正在处理的文件名显示出来

-z 使用gzip压缩

-C 解压到特定的文件夹

-p 保留数据原有的权限

-P 保留原始的路径

常用的tar的命令为:

压缩 tar -jcv -f filename.tar.bz2

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

解压缩 tar -jxv filename.tar.bz2 -c 预解压的目录

解开已经压缩的文件中的部分文件

1、查找是否存在 tar -jtv -f filename |grep 'part filename'

2、将文件解开 tar -jxv -f filename 待解开文件名 

                        

3、接下来备份一下/etc(配置文件)文件夹,对比一下使用gzip和bzip2的效果,使用p是为了保持原有的权限,这个很重要,可以看出来使用bzip2的压缩格式有更好的效果

  使用tar -jtv -f etc.tar.bz2查看bzip2压缩的文件的内容发现/etc前面的/不见了,这样的原因在于当解压的时候如果存在/的话会解压到根目录下去,如果不要/的话可以有效的避免这种解压导致的覆盖原始的/etc的现象。

 

  使用tar -jxv -f etc.tar.bz2 etc/mailcap解压部分文件,例如解压etc/mailcap文件,源文件中还是有的,并没有因为解压删除了

  使用指令 tar -jcv -f  targetfile.tar.bz2  --exclude=file(dir) --exclude=targetfile.tar.bz2  need_tar_file,其中可以使用\作为连接符。

  使用指令tar -jcv -f targetfile.tar.bz2  --newer-mtime='2018/10/21'   /dir/*,来进行更新文件的备份

4、tarfile 与tarball

使用tar -cv file.tar filename 进行的话仅仅进行了打包,未进行压缩,就称为tarfile,而使用了压缩指令的话就是tarball。

二、备份与恢复

1、dump[-Suvj][-level][-f 备份文件] 待备份文件

-S :仅仅需要列出来完成此次备份需要的空间

-u:将此次备份的时间记录到/etc/dumpdateS中

-v:显示dump的过程

-j:加入bzip2的支持

-level :dump 的等级

-W:检查文件系统是否有被dump过

  使用tar同样可以做到备份,但是tar是将整个文件系统进行备份,但是使用dump的话可以实现对文件系统的增量备份或者差异备份,主要通过dump对于文件系统的等级系统实现的,即level 是类似于tar的完全备份,使用level1仅仅是对当前系统对于level 0系统的变化进行备份,依次下去直到level 9.例如第一天使用dump level0 第二天使用level 1 第三天还是使用level 1,这样可以节省大量的空间。

  使用dump 可以备份文件系统和文件,不过只有对于文件系统其才能够使用完全的功能,在使用dump 对非文件系统进行备份的时候等级系统就会失效,仅仅支持level 0

 在使用dump进行文件备份后可以使用restore进行恢复,使用man restore自行查看参数,在restore时候要注意一个个的restore。

2、dd

dd最大的功效在于能够直接读取扇区或者磁盘,然后将整个设备备份成一个文件。感觉主要的功能在于分区等的复制,很底层了,包括mbr与分区表。

dd  if="input file" of="output file" bs="block size" count="number"

if:input file 也可以是设备

of:output file 也可以是设备

bs :block的大小,默认为512

count:多少个bs.

例子:

dd -if=/dev/hdc of=/tmp/mbr.back bs=512 count=1(拷贝文件系统的mbr),可用看到对于文件夹作为if是不可以使用dd的,而且从参数来看的确是适合于磁盘的拷贝,有很浓重的磁盘的意味。

 

3、cpio

cpio可以备份任何东西包括设备设备文件(磁带机啊等等,有点强大啊),但是需要使用find寻找文件,而不会主动找文件备份,其可用不管格式的对设备进行备份,使用dd感觉更像是磁盘拷贝.

备份:cpio -ovcB>[file|device]

还原:cpio -ivcdu<[file|device]

查看:cpio -ivct < [file|device]

备份:

-o 将数据copy输出到指定设备

-B 让blocks的大小增大至5120bytes

还原:

-i 将数据或者文件复制到系统中

-d 新建目录

-u 自动比较较新的文件覆盖旧的

-t 配合-i参数,可用查看cpio的新建文件或者设备的内容

通用:

-v 显示过程

-c 一种新的format存储格式

常见的该指令的例子为:

find /boot |cpio -ocvB >/temp/boot.cpio

cpio -idvc </temp/boot.cpio

在使用find etc|cpio -ocvB > etc.cpio备份了etc后发现,其实其备份效果对于普通文件并不好吧,感觉这个指令还是针对外部的硬件设备做备份比较好

posted @ 2018-11-06 11:02  提康德罗加F  阅读(338)  评论(0)    收藏  举报