第 10讲 备份与恢复
杨忠义
第 10讲 备份与恢复
教学目标:
理解数据备份与恢复工作的重要性;
理解备份策略和注意事项;
熟练掌握 tar和 cron等基本命令的使用;
教学重点:
备份策略; tar命令和 cron命令
教学难点:
tar命令和 cron命令
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 备份命令 tar
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
计算机系统在运行过程中 不可避免 地会发生各
种故障。
所谓 备份指定期把用户的数据拷贝到脱机的介
质上去,例如,磁带等介质,制作在线数据的一个
离线副本。
所谓 恢复指一旦系统出现故障,能够迅速从离
线介质把数据拷贝回硬盘, 把因故障引起的损失减
少到最小,快速使系统摆脱故障,正常运行的过程
称为恢复 。
本讲讨论后备恢复的概念及常用的操作命令。
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 备份命令 tar
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
10.1 备份的重要性
对于许多部门来说,数据比他们的计算机设备更
有价值。人们常误认为机器中的数据是万无一失的,
而实际上由于这样那样的原因总会引起数据丢失,
结果为之付出了惨重的代价。要防止数据丢失就必
须执行严格的备份制度,按时做数据的备份和转移
工作,即使系统出现故障,也不会造成大的影响,
代价仅仅是从备份中恢复丢失的数据。
一般丢失数据有以下几方面的原因,硬件故障、
软件缺陷、人为因素或自然灾害 。硬件的损害对数
据来说是不可恢复的;另外软件的缺陷也经常会损
坏数据;人为因素是不可预料的;而自然灾害一旦
发生就是毁灭性的。
10.1.1 选择备份介质
备份介质有很多种,如软盘、便携式硬盘、可
写光驱、磁带,MO等,当然也可以通过网络备份
到远程文件服务器的硬盘上。就备份介质的选取而
言,需要考虑成本、可靠性、速度、可获得途径、
可用性等。 可靠性是首要标准 。接下来就必须考虑
成本。另外需要考虑的就是设备的兼容性。
有些单位的单机备份工作量非常大,可以使用
磁带库或自动换带机。但是磁带库一般比较昂贵。
10.1.2 选择备份工具
传统的 UNIX/Linux备份工具是 tar,cpio,dd
和 dump。还可以使用第三方软件包。
各种备份工具无外乎两种 工作模式,要么通过
文件系统 I/O调用来备份文件或目录,要么通过访
问磁盘设备对磁盘块进行直接操作。
,tar”为 tape archiver的缩写,和 cpio类似,从
备份来看二者基本等效,都能 将文件存到磁带并取
出文件,都能使用几乎所有介质,因为核心设备驱
动处理低级设备操作,在用户级程序看来所有设备
都差不多。但是有一点不同,cpio支持设备文件如
/dev/hda,这一点与 dd类似,dd对于不同 UNIX版
本间的格式转换和磁盘拷贝非常有用 。
dump对文件所在的块设备进行原始的访问来
直接备份文件系统,而不通过文件系统调用。如果
要备份整个文件系统,它可以减少磁头移动。它的
主要缺点是每个文件系统种类需要 特定的备份程序,
Linux的 dump程序只理解 ext2文件系统,也直接支持
备份级。
Linux上还有一个有用的工具 afio,它是 cpio的变
体,它把文件 逐个压缩 到 备份 中,这一点优于 tar
对整个档案文件的压缩,因为一个极小的错误就可
能使被压缩的 tar档案文件变得无用,不过这个工
具主要应用于 Linux系统。
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 备份命令 tar
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
10.2 备份策略和注意事项
10.2.1 备份类型
一个简单的备份方案是一次备份所有数据,或
者是备份上次备份后改变的所有数据。前一种备份
叫 完全备份,后一种叫 增量备份 。完全备份比增量
备份费时费力。但恢复增量备份比全备份可能要花
更多的时间。
10.2.2 备份级别
UNIX/Linux利用备份级别来区分不同的备份种
类 。完全备份为 0级备份,其他级别表示的是自上
一级别以来被修改过的文件。做 0级备份最好保证
在单用户模式,尽量保证备份的一致性,以免产生
无法恢复的错误。如果必须动态进行,就需要使用
好的备份工具,从软件上保证一致性。
下面对表 10.1所示两种比较常用的方案进行分
析比较,从而对备份策略有更好的理解。
表 10.1 两种常用的备份方案
方案 1 方案 2
星期天 0级备份 星期天 0级备份
星期一 1级备份 星期一 1级备份
星期二 1级备份 星期二 2级备份
星期三 1级备份 星期三 3级备份
星期四 1级备份 星期四 4级备份
星期五 1级备份 星期五 5级备份
星期六 1级备份 星期六 6级备份
方案 1的优点是恢复时只需恢复上次完全备份
和最后一次增量备份即可,但是如果备份内容很多,
则增量备份的数量会很大,需要更多的磁带介质。
所以在备份容量不是很大的情况非常适合。
方案 2的优点是每次备份都比较迅速,且备份
内容较少,易于管理,但是恢复时比较麻烦。这种
方法可以节省磁带,对于大容量备份较合适。
实际的备份方案有很多种,但都是依据备份级
别的这些基本规定而制定的。
10.2.3 备份的注意事项
备份是必要的,而保证正确的备份是绝对必要
的。所谓正确的备份就是可以用来恢复系统的备份。
首先必须 保证物理安全性,备份好的磁带必须从物
理上隔离,以免发生火灾这样的毁灭性灾难。其次
必须 保证备份是可恢复的,要检查备份介质是否损
坏,备份恢复工具是否易于获得,只有确保正确的
备份才可以送到安全的地方保存。
由于许多时候备份是用 cron命令启动的,这时
就必须 确保需要备份的内容小于备份介质的容量 。
还有 备份过程中出现的介质错误,有些磁带坏
了,影响了备份,一定要有补救措施,哪怕是最繁
忙的时候,也要占用一点主机资源,可以临时将备
份内容保存到其他服务器上。
最后要提到的是,做备份时一定要 全面了解系
统的使用情况 。经常改动的文件应该比改动较少的
文件备份更频繁一点,而有些目录如 /tmp,/var、
/mnt等是没有必要备份的,有些目录如 /proc则是
不应该备份的。
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 备份命令 tar
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
10.3 常用备份命令
本课主要讨论 Linux上 GNU版本的 tar命令。 GNU
版本能处理一盘磁带或一张磁盘的备份。其格式:
tar –cvzpf /备份路径 /备份文件名 欲备份对象名
下面的命令把整个 Linux文件系统备份到
,/archive”文件系统上,必须以 root身份执行。
# cd/
# tar -zcvpf/archive/full-backup-`date +%d-%m-%Y
`.tar.gz --directory/ --exclude=proc --exclude=mnt --
exclude=archive --exclude=cache
注意,在备份文件系统时,不要包含 /proc虚拟文
件系统。也不要包含 /mnt和 /archive目录下的文件。
日期显示格式
下面给出常用的参数含义:
z 表示备份的数据将使用 gzip进行压缩。
c 表示创建归档文件。
v 显示文件列表。
p 保存权限,文件的访问权限将被“记住”。
f 说明下一个参数就是归档的文件名或设备名。
M 建立 /解压 /显示多卷档案文件,使用该参数系
统会自动提示。
请注意一下带有当前日期的文件名是如何产生的,
其方法是在两个反引号之间放入,date”命令。通
常的命名习惯是给未压缩的文档加一个,.tar”后缀,
经过压缩后的记为,.tar.gz”,或缩写为,.tgz”。
“--directory”选项告诉 tar先转到规定的目录下 (本
例中为,/”目录,也可以逐个指定目录 ),然后进行
备份。,--exclude”选项告诉 tar不要备份指定的目录
或文件。
/archive目录有时就是 /mnt目录,如 SCSI磁带驱
动器 /dev/nst0等设备通常都加载到 /mnt下,这时
/archive和 /mnt是同一个目录。
授权用户也可以根据自己的实际需要备份指定的
文件和目录。
下面给出两个例子:
例 1,仅仅备份某几个文件,键入命令,
# tar -cf archive.tar foo bar
此命令在当前目录下把文件 foo和 bar备份成 archive.tar
例 2,把某个目录备份到本硬盘的,/data”文件系
统下,键入命令,
# tar -zcf /data/backup-`date +%d-%m-%Y `.tar.gz
/home/lily/myfirst/
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 常用备份命令
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
10.4 文件恢复
当我们需要恢复一个重要文件时,正确的恢复
就比定期备份更重要了。恢复的过程会因为备份方
案的不同而有所区别。在本节中,我们讨论如何恢
复用 tar备份过的文件,该命令常见的参数如下:
z 表明档案是使用 gzip压缩的。
x 表示解压缩档案文件。
v 显示 tar命令所做的工作。
p 保持权限;文件保护信息将被记住。
f 后面的参数是档案的文件名或设备。
t 显示档案文件内容
建议用户在文件恢复前观察一下档案文件的内容,
可以使用如下命令:
# tar tvf档案 (这仅适用于未被压缩的文件 )
下面的命令将从档案中恢复文件,如前面对整个
文件系统建立的备份档案,其恢复的命令格式如下:
# cd/
# tar -zxvpf 路径 /档案文件名
,-p”选项在解压缩过程中保持了原来的 文件属主
和权限 。如果不需要恢复档案里的所有文件,可以
参照以下例子恢复指定的一个或多个文件,命令如
下:
# cd/
# tar –zxvpf 路径 /档案文件名 /etc/passwd
/etc/shadow
由于 给定的文件必须指定完整的路径名,必须先
找到文件名在档案中的具体路径,这可以通过,-t”参
数配合,grep”命令查找:
# cd/
# tar -ztvpf 路径 /档案文件名 | grep -i passwd
在这个例子里,档案中的所有文件名被列出。输
出结果被重定向到 grep命令,grep的,i” 选项忽略了
大小写,显示出路径或文件名中含 passwd的所有文
件。一旦找到了要恢复的文件,就可以指定文件名
并使用上面的 tar命令。
下面是使用 tar命令的一些注意事项:
当创建档案文件时,tar会去掉文件路径开头的
,/”斜线字符。这意味着文件恢复的位置可能和它备
份时的位置不一样 。因此,解决问题的办法就是在
根目录下做所有的备份和恢复。否则必须通过比较、
移动或更新把文件恢复到原来的位置。如果系统里
有文件被,chattr”命令设了不可变位,这些文件在
恢复的时候将不会保持该位。必须在备份结束后再
使用命令,chattr”重新设置不可变位。
tar永远是顺序读一个备份卷,因此大的卷会很
慢。使用磁带机或其他顺序介质时不可能使用随机
存取数据库技术。
tar不处理删除文件属性。 如果你需要从一个全
备份和一个增量备份恢复一个文件系统,并且 2个备
份之间你删除了一个文件,当你恢复完后,这个文
件又存在了。如果这个文件包含应该删除的敏感数
据,应该及时删除。
注意,压缩备份并不是完全可靠 。 压缩过程中,
如果某一个比特压缩出错,那么其余所有的压缩数
据都将毫无用处 。所以对于十分重要的数据最好不
要采用压缩备份。
第 10讲 备份与恢复
10.1 备份的重要性
10.2 备份策略和注意事项
10.3 备份命令 tar
10.4 文件恢复
10.5 利用 cron命令和脚本实现任务的自动化
10.5 利用 cron命令和脚本实现任务的自动化
cron守护进程简介
? 功能
安排每小时、每天、每月或每周都要定期执行的进程任务。
? cron的运行机制
cron进程搜索 crontab文件并载入内存 ( crontab文件即
/etc/crontab文件和 /var/spool/cron/目录下以用户名命名的文
件)。
cron进程启动以后,它将首先检查是否有用户设置了 crontab
文件,如果没有就转入“休眠”状态,释放系统资源。
cron进程每分钟醒来一次,查看 crontab文件决定当前是否有
需要执行的命令。 命令执行结束后,任何输出都将作为邮件
发送给 crontab的所有者。
10.5 利用 cron命令和脚本实现任务的自动化
使用 crontab命令装载 cron进程所需要的 crontab文件。
格式:
? 格式 1,crontab [-u user] [-l|-r|-e]
? 格式 2,crontab [-u user] filename
其中:
-u user,修改指定用户的 crontab文件。如果不指定该选
项,crontab将默认为是操作者本人的 crontab。
-l:在标准输出上显示当前的 crontab任务。
-r:删除当前的 crontab任务。
-e:使用环境变量指定的编辑器编辑 crontab文件。当结束
编辑离开时,编辑后的文件将自动安装。
filename:是一个 crontab文件的来源文件
10.5 利用 cron命令和脚本实现任务的自动化
用户配置文件的格式如下:
minute hour day-of-month month-of-year day-of-
week [username] commands
参数 说明 取值范围
minute 小时中的分钟数 0~59
hour 每天的小时 0~23
day 每月的第几天 1~31
month 每年的第几个月 1~12
weeday 每周第几天 1~7
username 以指定的用户身份执行
commands 执行的命令
其中各时间参数可以用通配符,*”代替,表
示任一分钟、小时、天等等。 username是 passwd
文件中有效的用户,不同的用户可以有自己的配置
文件,可以通过 crontab命令编辑、修改、删除用
户自己的定时任务,cron命令每隔一段时间扫描一
次配置文件,并为每个有定时任务的用户在
/var/spool/cron目录下建立用户独立的定时文件,
文件名即为用户名 。
如为用户 lily的 /home/lily/first编辑定时任务:
# crontab -u lily /home/lily/first –e
这时 /var/spool/cron目录下就可找到 lily文件。
除了每个用户都可以安排自己的 cron任务之外,
Red Hat 还为超级用户提供了一种方便的自动安排进
程任务的方法。
涉及的文件和目录
/etc/crontab
/etc/cron.daily
/etc/cron.monthly
/etc/cron.weekly
/etc/cron.hourly
超级用户可以在 /etc/cron.*目录下建立脚本文件
来安排 cron任务,且在脚本中只需写要安排执行的
命令。
# cat /etc/crontab //显示 /etc/crontab 内容
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
小 结
备份工作对于系统管理员是非常重要的,但是
对普通读者来说,很少有机会接触磁带机等设备,
在现有的条件下熟练掌握 tar等基本命令的使用,
我们可以利用本地硬盘创建档案文件,达到学习与
掌握的目的。这些归档命令在其他场合也是非常有
用的,比如说要通过命令行方式从某台服务器下载
某个目录下的所有文件及目录,就可以打包后再下
载一个 tar档案文件即可。
另外,掌握 cron命令不仅可以灵活地安排备份
任务,还可以灵活方便地执行任何 shell命令,因为
配置文件中的命令行是由 sh程序执行的。
习题
10-1 试着利用 cron命令安排某个用户的备份任务。