前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第九章 打包备份

第九章 打包备份

作者头像
晓天
发布2019-07-04 14:19:07
1.1K0
发布2019-07-04 14:19:07
举报

第九章 打包备份

9.1 文件打包

9.1.1 打包命令

与windows下的winrar工具类似,Linux中也有文件打包压缩的命令,我们先来看一下windows的打包命令:tar。

假设/mnt/下有f1 f2 f3 f4四个文件,那么打包的命令是:

tar -cvf back.tar f1 f2 f3 ---将列出文件打包到包文件

参数解释:-c 创建包文件,后面的back.tar就是新创建出的包文件

-v 即--verbose 详细列出处理的文件

-f 使用归档文件,即新建的备份文件做备份

打包成功后,我们可以ll看到包文件是以红色现实的。那么如果过段时间后,我们忘记了这个包文件里是什么内容了,该如何查看呢?可以使用如下命令:

tar -tf back.tar ---查看包文件的内容,但并不解包。

既然可以打包、查看,那么如果想解包呢?命令如下:

tar -xvf back.tar ---解包,默认把解包后的文件,存放到当前目录下,注意,若当前目录下有重名文件,则直接覆盖,无提示。所以解包时必定要关注一下当前目录下的内容。为了安全,想要解包到一个空目录下,可以增加-C参数,如下:

tar -xvf back.tar -C /mnt/dd --- -C 指定解包路径

另外,关于文件的后缀,我们需要解释一下,后缀对于文件来讲,并不能决定、影响文件的存储格式,不写后缀,文件一样可以正常原方式使用。所以给文件增加后缀的目的是区分文件的类型,便于长期的管理,所以建议文件加上后缀。

其他,tar还有很多参数,常用的如下:

tar -uf back.tar f4 ---包中加入文件

tar -f back.tar --delete f1 ---包中删除指定文件

tar -f back.tar --get f2 f3 ---从包中提取出指定的文件

tar -Af back1.tar back2.tar ---把第二个包文件合并到第一个中

tar -cvf back.tar f1 f2 f3 --remove-files --- 包文件创建完毕,删除原文件

9.1.2 文件压缩

打包后的文件,我们可以ls -l 查看一下,会发现包文件比多个源文件的大小总和还大,说明包文件并非是压缩的。Linux中有专门的压缩命令:gzip。

gzip back.tar ---压缩文件,压缩后,后缀增加.gz

gunzip back.tar.gz ---解压缩

再者,Linux中还支持其他的压缩、解压命令,如:bzip、bunzip,compress、uncompress等,但这些命令可能在装系统时并未安装,所以若要使用,需要手动安装其软件包。Linux系统中自动安装的压缩命令是gzip,使用率也较高。兼容性也好,该压缩包复制到windows中后,使用winrar可以加压出来。

之前我们介绍了打包和压缩命令,但是会感觉有些复杂,若要把多个文件打包压缩到一个压缩包中,需要执行两个命令才行(先tar在gzip)。其实,tar本身是支持打包压缩一步完成的,如下:

tar -zcvf back.tgz f1 f2 f3 ---打包压缩一步完成,实质上内部的处理过程还是先打包后压缩,后缀 .tgz = .tar.gz

tar -zxvf back.tgz ---解压解包,也可以加-C参数指定解包路径

9.2 数据备份

对于我们用户来讲,最重要的莫过于个人的文件、数据等。这些资料为了防止丢失,一般我们会定期的做备份。Linux中也有关于数据备份的命令,我们逐一来看。

9.2.1 制作光盘镜像

首先,我们可以把重要资料所在的目录制作成光盘镜像,刻录到光盘中或存储到专用的备份磁盘中。制作镜像的命令如下:

genisoimage -J -L -r -o /mnt/etc.iso /etc

---备份整个/etc/目录,生成镜像文件etc.iso,保存到/mnt下

参数解释:-J 备份符合Joliet命名规范的文件或目录 -L 备份隐藏文件

-r 开放所有文件的读权限 -o 指定输出的文件,即指定生成的镜像。

其实,Linux中对于文件、目录的命名也是有规范的,只是格式要求比较宽松,一般我们所起的文件名都是符合要求的,Linux中对于文件名格式的要求就是Joliet规范。再者,备份时若有文件权限拒绝读取,则会有文件遗漏,所以加上-r参数便允许备份时能够读取所以文件。

有了备份镜像后,若我们想要查找、恢复数据,则可以找到镜像文件,把它当做光盘一样直接挂载使用:

mount /mnt/etc.iso /media ---镜像文件可以直接当做光驱挂载使用

注:老版的Linux需用命令:mount /mnt/etc.iso /media -o loop ,参数 -o loop 参数表示采用伪设备挂载。因为此处的镜像文件,并不是真正的光驱设备,我们称之为:伪设备。在老版的Linux中(如RHEL5.0之前版本),需要手动增加 –o loop参数才可以以伪设备方式挂载,但是现在的Linux系统基本都可兼容识别过去。

9.2.2 数据导出

除了制作镜像,Linux中还有一个功能非常强大的数据导出命令:dd。而且导出数据后,原设备或文件是不会删除或改变的。可实现任何设备或文件到任何设备或文件的数据导出工作。

命令格式:dd if=源设备/文件 of=目标设备/文件 bs=每次导多大的数据量 count=导多少次

案例如下:

dd if=f1 of=f2 ---把f1文件导入到f2中,相当于复制文件

dd if=f1 of=f2 bs=1 count=3 ---导入3次,每次1字节

dd if=/dev/sda3 of=/mnt/f1 ---用文件存储整个分区数据

dd if=/dev/sda3 of=/dev/sdb1 ---拷贝整个分区

dd if=/dev/sda of=/dev/sdb ---拷贝整个磁盘

dd if=/dev/zero of=/mnt/f1 bs=100M count=5

---创建一个500M的全0文件

注:/dev/zero 并非是真正的设备,类似于程序,功能是无限生成二进制的0

dd if=/dev/zero of=/dev/sdb2 bs=100M count=1

---擦除分区前100M空间,多用于分区无法格式化时,先擦除再格式化。

9.2.3 系统备份

关于Linux系统的备份,可以有多种方式,总结汇总,生产环境中主要有两种比较常用,一是使用ghost软件,对整个系统磁盘做备份镜像,一般镜像文件后缀是.gho。可能经常接触系统安装的读者对ghost会比较熟悉,不太熟悉的读者可以查看搜索相关资料,因为ghost属于专项工具软件,与Linux系统操作关系不大,这里不做展开介绍。

第二种方法是使用dd命令,将整个系统所在磁盘导出到另一块磁盘中,以作备份盘使用,当系统故障后,可以直接将备份盘中的数据再用dd导回即可,此种操作的缺点是系统所在磁盘未经压缩,占磁盘空间多。

9.2.4 数据备份的概念

提到数据备份,就不得不说一下数据备份方面的一些概念,其实数据管理在生产环境中更多的是由数据库管理员(DBA)或存储管理岗的人员操作,系统运维人员更多的是辅助、配合。但了解这些概念会更利于运维人员与其他岗位人员的协同、沟通。

首先来看一下备份的分类:

完全备份 ---备份所有数据,简称全备

差异备份 ---备份和上一次全备之间发生的变化数据

增量备份 ---备份和上一次备份操作之间发生的变化数据

累计增量备份 ---备份多次备份操作的变化总和

之上,我们使用较白话的形式解释了下各个概念,但读者们可能还是不太清楚,没关系,后面我们会有一个案例来帮助大家理解。

再来看一下备份的级别划分

备份共有10级,数字表示是0-9级

0级 表示完全备份

1级 表示备份和上一次0级之间的变化

2级 备和1级的变化,或者备份最近一次比本级别数字小的备份之后的变化

3-9级 同理

有了备份级别,在生产环境中对重要的数据都需要制定周期性的备份方案,又称备份策略。下面举一个示例为大家解释下:

周日晚 0级备 即完全备份

周一晚 2级备 即差异备

周二晚 2级备 即差异备

周三晚 1级备 即差异备

周四晚 2级备 即增量备

周五晚 2级备 即累计增量备

周六晚 2级备 即累计增量备

案例中的备份策略是以一周为一个周期,每天进行不同级别的备份。分析:周一晚做2级备,它会向前寻找1级备份,但是由于最近的一次操作是0级,且级别数字小,所以就会直接备和周日0级备份之后的变化数据,即周一一天内的变化数据,可视为差异备;同样,周二晚做2级备份时,向前也找到周日晚的0级备操作(因为周一的2级与周二的2级同级,同级间不会做备份),所以周二晚也是备与周日0级备之后产生的变化数据,即周一周二两天的变化,也即是差异备;可以试想一下,若周三一早发生数据丢失,则恢复数据时,需要先恢复周日晚的0级数据,再恢复周二晚的2级数据即可,总共执行2此恢复操作。

继续分析,周三晚故意制定为1级备份,则它备份的还是与周日0级备之后的变化数据,仍是差异备;而周四晚做2级备,会备与周三晚1级备之后的变化数据,即仅备周四一天的变化数据,因为上一次的周三不是完全备操作,所以周四的备份可视为增量备份,再试想,若周五早发生数据丢失,则恢复数据时,需要先恢复周日晚的0级数据,再恢复周三晚的1级数据,再恢复周四晚的2级数据即可,总共执行3此恢复操作;周五晚的2级备份也是备与周三1级备之后的变化,因为集结了两天变化的总和所以视为累计增量备;周六的备份与周五类似。

以上案例,我们可以看到,一周内备份最多时会备份3天变化的总和,数据量并不会很大;并且恢复时,最多的也是执行3次恢复即可,次数也不多,所以此种策略较为合理。读者们可以仔细阅读与思考,理解备份分类、级别、策略的功能与具体应用。

9.2.5 数据备份实验案例

Linux中有一款用于数据备份工具软件,是dump,下面我们来看一下dump的配置过程:

1、新建分区,做备份用

fdisk -l ---查看分区表,可见磁盘名,如:/dev/sda

fdisk /dev/sda ---使用fdisk工具,对sda磁盘做分区管理

n =>创建新分区,全部默认回车=>w 保存退出

fdisk -l ---可见到新的分区

partprobe ---刷新并生效新的分区表

mkfs -t ext4 /dev/sda7 ---格式化新分区

注:用于做备份的分区,无需挂载

我们在第一章安装系统时,故意有一部分磁盘空间是未使用的,所以这里新建分区是可以成功,但是如果磁盘已经被所有分区用满,则此操作会失败。

关于fdisk磁盘分区工具的操作过程,我们将在下一章中详细介绍。这里先按此步骤操作即可。

2、安装dump工具

挂载系统光盘后,cd /media/Packages

rpm -ivh rmt-XXX.rpm ---依赖包

rpm -ivh dump-0.XXXX.rpm ---程序包

tips:直接安装dump包时会报依赖于rmt包,这时不必急着用yum去解决,因为仅仅有一两个依赖包的话完全可以用rpm逐一安装解决,没有必要费时费力的去配置yum。所以,Linux的操作一定要灵活,不必拘泥于形式,命令是为我们服务的,不能被命令牵着鼻子走,思想就被固化了,选择效率最高的方法解决问题才是最重要的。

3、指定要做备份的分区

df -h ---查看当前的分区挂载,假设要备份/dev/sda5挂载的/home

这里,我当前的虚拟机分区挂载是这样的,读者可根据自己的虚拟机分区信息选择实验分区

cd /home

touch f1 f2 f3

mkdir d1 d2 d3

touch d2/f4 ---创建文件、目录,以备实验使用

dump -0 -u -f /dev/sda7 /home

---备份/home所对应的分区,把数据备份到/dev/sda7中 -0 零,表示备份级别 -u 表示备份后做日志记录,日志文件:/etc/dumpdates -f 指定备份的分区,后面的/home 即是要做备份的分区挂载点

dump -W ---查看备份日志

4、数据恢复

restore -tf /dev/sda7 ---查看备份设备中的文件

restore -rf /dev/sda7 ---恢复所有文件到当前目录下

restore -xf /dev/sda7 f1 f2 d1 d2

---恢复指定文件,回车后,会有询问,输入1 回车,输入y 回车即可

小结:dump备份工具,其实生产环境中使用并不是很多,关于应用类数据的备份,大多是用应用软件自带的备份工具备份的,如:oracle的rman等。这里我们的dump实验主要是为了让读者们练习,加深理解用的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档