linux-basic(9)文件与文件系统的压缩与打包

【9.1】压缩文件的用途与技术

【9.2】linux系统常见的压缩命令
1)压缩文件的扩展名大多是 tar, tar.gz, tgz, gz, Z, bz2 等;如下图所示:

(1)
Linux上常见的压缩命令就是 gzip 与 bzip2 ,至於 compress 已经不再流行了。

【9.2.1】Compress
1)CentOS 默认并没有安装这个软件到系统当中,所以想要了解这个软件的使用时,请先安装 ncompress 这个软件。

【9.2.2】gzip, zcat
1)目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至於 gzip 所创建的压缩档为 *.gz 的档名喔!
【荔枝】 gzip命令

(2)

(3)

(4)

(5)

补充:-9 压缩比最好,但压缩时间最长;
(6)
【9.2.3】bzip2, bzcat
1)介绍:若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至於 bzip2 的用法几乎与 gzip 相同!

【荔枝】bzip2

(7)

(8)

(9)

(10)
【补充】压缩和打包的区别
补充1)压缩:前一小节谈到的命令大多仅能针对单一文件来进行压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是“将目录内的所有文件 "分别" 进行压缩”的动作。即将各个文件压缩后,再打包到一个目录;
补充2)打包:这种将多个文件或目录包成一个大文件的命令功能,我们可以称呼他是一种打包命令;这是将所有数据包成一个文件;

【9.3】打包命令:tar
1)tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩! 

【荔枝】tar

(11)
其实最简单的使用 tar 就只要记忆底下的方式即可:
  ● 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  ● 查 询:tar -jtv -f filename.tar.bz2
  ● 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

【荔枝】使用 tar 加入 -j 或 -z 的参数备份 /etc/ 目录

(12)
补充:优先使用 bzip 即 -j 参数进行压缩;因为压缩效果好;

【荔枝】查阅 tar 文件的数据内容(可察看档名),与备份档名有否根目录的意义

(13)
【注意】上面的每个文件都没跟目录了;
那为什么要拿掉根目录呢?
主要是为了安全!我们使用 tar 备份的数据可能会需要解压缩回来使用, 在 tar 所记录的档名 (就是我们刚刚使用 tar -jtvf 所察看到的档名) 那就是解压缩后的实际档名。 如果拿掉了根目录,假设你将备份数据在 /tmp 解开,那么解压缩的档名就会变成『/tmp/etc/xxx』。 但『如果没有拿掉根目录,解压缩后的档名就会是绝对路径, 亦即解压缩后的数据一定会被放置到 /etc/xxx 去!』如此一来,你的原本的 /etc/ 底下的数据, 就会被备份数据所覆盖过去了!

【荔枝】如果你确定你就是需要备份根目录到 tar 的文件中,那可以使用 -P (大写) 这个选项:

(14)

(15)
【荔枝】将备份的数据解压缩,并考虑特定目录的解压缩动作 (-C 选项的应用) 

(16)
【荔枝】仅解开单一文件的方法

(17)
【荔枝】打包某目录,但不含该目录下的某些文件之作法:通过 --exclude 来实现

(18)
【荔枝】仅备份比某个时刻还要新的文件

(19)

(20)
补充:以上操作可以对文件进行差异打包;

【注意】打包和压缩的不同:tarfile, tarball ?
如果仅是打包而已,就是tar -cv -f file.tar 而已,这个文件我们称呼为 tarfile 。 
如果还有进行压缩的支持,例如 tar -jcv -f file.tar.bz2 时,我们就称呼为 tarball (tar 球?)!

【荔枝】特殊应用:利用管道命令与数据流
介绍: tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的文件一边打包一边解压缩到目标目录去。

(21)
【9.4】完整备份工具: dump
【9.4.1】dump

(22)
【荔枝】用 dump 备份完整的文件系统

(23)
1)补充:这样很简单的就创建起来 /root/home.dump 文件,该文件将整个 /home/ 文件系统都备份下来了! 并且将备份的时间写入 /etc/dumpdates 文件中,准备让下次备份时可以作为一个参考依据。

(24)
2)检查看看能否真的创建 level 1 的备份呢?

(25)

(26)
差异备份:仅备份更改的文件;

【荔枝】用 dump 备份非文件系统,亦即单一目录的方法
说明) 现在让我们来处理一下 /etc 的 dump 备份吧!因为 /etc 并非单一文件系统,他只是个目录而已。 所以依据限制的说明, -u, level 1~9 都是不适用的。我们只能够使用 level 0 的完整备份将 /etc 给他 dump 下来。

(27)
补充:一般来说 dump 不会使用包含压缩的功能,不过如果你想要将备份的空间降低的话,那个 -j 的选项是可以使用的。 加上 -j 之后你的 dump 成果会使用较少的硬盘容量啦!

【9.4.2】恢复备份文件的命令restore: dump 的复原使用的是 restore 这个命令!

(28)
【荔枝】用 restore 观察 dump 后的备份数据内容

(29)
【荔枝】比较差异并且还原整个文件系统
为什么 dump 可以进行累积备份呢?就是因为他具有可以查询文件系统与备份文件之间的差异, 并且将分析到的差异数据进行备份的缘故。

(30)
【9.5】光盘写入工具
mkisofs:新建镜像文件;
cdrecord 光盘刻录工具;

【9.6】其他常见的压缩与备份工具
【9.6.1】dd:dd 可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!

(31)

(32)

(33)
【总结】tar 可以用来备份关键数据,而 dd 则可以用来备份整颗 partition 或 整颗 disk。

【9.6.2】cpio
1)简介:这个命令挺有趣的,因为 cpio 可以备份任何东西,包括装置设备文件。一般来说, cpio 得要配合类似 find 等可以找到档名的命令来告知 cpio 该被备份的数据在哪里啊!

(34)
【荔枝】cpio + find 备份文件数据

(35)

(36)
【荔枝】其实系统里面已经含有一个使用 cpio 创建的文件喔!那就是 /boot/initrd-xxx 这个文件啦! 现在让我们来将这个文件解压缩看看,看你能不能发现该文件的内容为何?

(37)
【9.7】重点回顾
  ● 压缩命令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁碟容量。 压缩前与压缩后的文件所占用的磁碟容量比值, 就可以被称为是『压缩比』
  ● 压缩的好处是可以减少磁碟容量的浪费,在 WWW 网站也可以利用文件压缩的技术来进行数据的传送,好让网站频宽的可利用率上升喔
  ● 压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』
  ● 常见的压缩命令有 gzip 与 bzip2 ,其中 bzip2 压缩比较之 gzip 还要更好,建议使用 bzip2 !
  ● tar 可以用来进行文件打包,并可支持 gzip 或 bzip2 的压缩。
  ● 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  ● 查 询:tar -jtv -f filename.tar.bz2
  ● 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
  ● dump 命令可备份文件系统或单一目录
  ● dump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level 0 为完整备份;
  ● restore 命令可还原被 dump 建置的备份档;
  ● 要创建光盘烧录数据时,可透过 mkisofs 命令来建置;
  ● 可透过 cdrecord 来写入 CD 或 DVD 烧录机
  ● dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁碟的 sector 表面数据

  ● cpio 为相当优秀的备份命令,不过必须要搭配类似 find 命令来读入欲备份的档名数据,方可进行备份动作。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯注解开发配置spring

1.纯注解开发【定义配置类的注解】 Confituration 表示该类是一个配置类 ComponentScan(“com.itheima”) 配置包扫描 PropertySource(“classpath:jdbc.properties”) 加载属性文件 Import(JdbcConfig.class) 加载其他配置类 2.spring整合mybatis【纯注解,3个…

阿里巴巴对Java编程【命名风格】的规约

转载自 阿里巴巴对Java编程【命名风格】的规约 命名风格 1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name$ / Object$ 2. 【强制】代码中的命名严禁使用拼音与英文…

linux-basic(10)vim程序编辑器

【10.1】vi 与 vim【10.2】vi的使用1)3种模式:模式1:一般模式, vim打开就是这种模式,编辑模式下 按 esc 回到一般模式;模式2:编辑模式,要等到你按下『i, I, o, O, a, A, r, R』等任何…

阿里巴巴对Java编程【代码格式】的规约

转载自 阿里巴巴对Java编程【代码格式】的规约 代码格式 1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行 ; 如果是非空代码块则: 1 ) 左大括号前不换行。 2 ) 左大括号后…

自定义通配器导入bean对象

1.CustomerImportSelector工具类: /*** description : 自动导入器* author : wanYunBo* date : 2021-09-02 20:46**/ package com.itheima.config.selector;import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import o…

linux-basic(11)认识和学习bash

【11.1】认识bash这个shell1)介绍:其实壳程序的功能只是提供用户操作系统的一个接口,因此这个壳程序需要可以呼叫其他软件才好。命令,包括 man, chmod, chown, vi, fdisk, mkfs 等等命令,这些命令都是独立的应用程序&a…

阿里巴巴对Java编程【常量定义】的规约

转载自 阿里巴巴对Java编程【常量定义】的规约 常量定义 1. 【强制】不允许任何魔法值 ( 即未经定义的常量 ) 直接出现在代码中。 反例: String key " Id # taobao _" tradeId; cache . put(key , value); 2. 【强制】 long 或…

动态代理-AOP

1 什么是AOP? Aspect Oriented Programming的缩写,面向切面编程,切面指定就是动态代理的方法,作用是在不改变业务层方法源代码的基础上对方法进行增强,底层使用的是动态代理技术,面向切面编程也可以理解成…

linux-basic(12)正则表达式与文件格式化处理

【12.1.1】什么是正则表达式? 1)简单说:正则表示法就是处理字串的方法,他是以行为单位来进行字串的处理行为, 正则表达式透过一些特殊符号的辅助,可以让使用者轻易的达到查找、删除、替换某特定字串的处理程…

阿里巴巴对Java编程【OOP规约】的规约

转载自 阿里巴巴对Java编程【OOP规约】的规约 OOP规约 1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加 Override 注解。 说明&#xff…

AOP切点表达式及通知类参数传递方式

1.切入点表达式的写法 execution( * com.itheima.service.impl.StudentServiceImpl.findAll(…)) //较少 execution( * com.itheima.service.impl.StudentServiceImpl.(…)) //较少 execution( * com.itheima.service.StudentService.(…)) //StudentService中的所有方法会被代…

linux-basic(13)学习shell script

【13.1】什么是shell script?1)shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功…

阿里巴巴对Java编程【集合处理】的规约

转载自 阿里巴巴对Java编程【集合处理】的规约集合处理1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 1) 只要重写 equals ,就必须重写 hashCode 。 2) 因为 Set 存储的是不重复的对象,依据 ha…

http请求状态码400的原因总结

会出现这个HTTP请求状态码400,说明这个请求是无效的,并没有进入后台服务器(控制器)里。 通常的原因: 前端提交的字段名称或者字段类型和后台的实体类不一样,或者前端提交的参数跟后台需要的参数个数不一致…

做一个完整的Java Web项目需要掌握的技能

转自: https://blog.csdn.net/JasonLiuLJX/article/details/51494048--------------------------------------------------------------------------------最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目&#xff0…

阿里巴巴对Java编程【并发处理】的规约

转载自 阿里巴巴对Java编程【并发处理】的规约并发处理1. 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明:资源驱动类、工具类、单例工厂类都需要注意。2. 【强制】创建线程或线程池时请指定有意义的线程名称,方便…

查询sql打印日志配置

mybatis-plus:mapper-locations: classpath*:mapper/*.xml# 设置别名包扫描路径,通过该属性可以给包中的类注册别名type-aliases-package: com.heima.model.user.pojosconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

js语法+dom+js图片库+最佳实践+图片库改进版

【2】js语法 【2.2.4】数据类型类型1)字符串 var mood happy; var moood "happy"; 类型2)数值; var age 33.24; 类型3)布尔值;var married true; 【2.2.5】数组1)填充方式 填充方式1&#xf…

RabbitMQ--topic

Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符! Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,…

阿里巴巴对Java编程【控制语句】的规约

转载自 阿里巴巴对Java编程【控制语句】的规约控制语句1. 【强制】在一个 switch 块内,每个 case 要么通过 break / return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止 ; 在一个 switch 块内,都必须包含一个 default…