27
第 14 第 第第第第第 14.1 第第第第第第 14.2 第第第第第第第第第 14.3 第第第第第第 14.4 第第第第 14.5 第第 cron 第第第第第第第第第第第第第 14.6 第第 第第

第 14 章 备份与恢复

  • Upload
    tamber

  • View
    109

  • Download
    3

Embed Size (px)

DESCRIPTION

第 14 章 备份与恢复. 14.1 备份的重要性 14.2 备份策略和注意事项 14.3 常用备份命令 14.4 文件恢复 14.5 利用 cron 命令和脚本实现任务的自动化 14.6 小结 习题. 计算机系统在运行过程中不可避免地会发生各种故障,备份指定期把用户的数据拷贝到脱机的介质上去,例如,磁带等介质,制作在线数据的一个离线副本。所谓恢复指一旦系统出现故障,能够迅速从离线介质把数据拷贝回硬盘,把因故障引起的损失减少到最小,快速使系统摆脱故障,正常运行的过程称为恢复。本章讨论后备恢复的概念及常用的操作命令。. 14.1 备份的重要性 - PowerPoint PPT Presentation

Citation preview

Page 1: 第 14 章  备份与恢复

第 14 章 备份与恢复14.1 备份的重要性14.2 备份策略和注意事项14.3 常用备份命令14.4 文件恢复14.5 利用 cron命令和脚本实现任务的自动化14.6 小结习题

Page 2: 第 14 章  备份与恢复

计算机系统在运行过程中不可避免地会发生各种故障,备份指定期把用户的数据拷贝到脱机的介质上去,例如,磁带等介质,制作在线数据的一个离线副本。所谓恢复指一旦系统出现故障,能够迅速从离线介质把数据拷贝回硬盘,把因故障引起的损失减少到最小,快速使系统摆脱故障,正常运行的过程称为恢复。本章讨论后备恢复的概念及常用的操作命令。

Page 3: 第 14 章  备份与恢复

14.1 备份的重要性对于许多部门来说,数据比他们的计算机设备更有价值。人们常误认为机器中的数据是万无一失的,而实际上由于这样那样的原因总会引起数据丢失,结果为之付出了惨重的代价。要防止数据丢失就必须执行严格的备份制度,按时做数据的备份和转移工作,即使系统出现故障,也不会造成大的影响,代价仅仅是从备份中恢复丢失的数据。一般丢失数据有以下几方面的原因:硬件故障、软件缺陷、人为因素或自然灾害。硬盘的损害对数据来说是不可恢复的;另外软件的缺陷也经常会损坏数据;人为因素是不可预料的;而自然灾害一旦发生就是毁灭性的。

Page 4: 第 14 章  备份与恢复

14.1.1 选择备份介质备份介质有很多种,如软盘、便携式硬盘、可写光驱、

8mm 盒式磁带、 4mmDAT 磁带等,当然也可以通过网络备份到远程文件服务器的硬盘上。就备份介质的选取而言,需要考虑成本、可靠性、速度、可获得途径、可用性等。可靠性是首要标准。接下来就必须考虑成本。另外需要考虑的就是设备的兼容性。有些单位的单机备份工作量非常大,可以使用磁带库或自动换带机。但是磁带库一般比较昂贵。

Page 5: 第 14 章  备份与恢复

14.1.2 选择备份工具传统的 UNIX 备份工具是 tar 、 cpio 、 dd 和 dump 。还可以使用第三方软件包。各种备份工具无外乎两种工作模式,要么通过文件系统 I/O 调用来备份文件或目录,要么通过访问磁盘设备对磁盘块进行直接操作。“tar” 为 tape archiver 的缩写,和 cpio类似,从备份来看二者基本等效,都能将文件存到磁带并取出文件,都能使用几乎所有介质,因为核心设备驱动处理低级设备操作,在用户级程序看来所有设备都差不多。但是 cpio 有一点不同,它支持设备文件如 /

dev/hda ,这一点与 dd类似, dd 对于不同 UNIX版本间的格式转换和磁盘拷贝非常有用。

Page 6: 第 14 章  备份与恢复

dump 不同,它对文件所在的块设备进行原始的访问来直接备份文件系统,而不通过文件系统调用。如果要备份整个文件系统,它可以减少磁头移动。它的主要缺点是每个文件系统种类需要特定的备份程序, Linux 的 dump 程序只理解 ext2 文件系统 , 也直接支持备份级。Linux 上还有一个有用的工具 afio,它是 cpio 的变体,它把文件逐个压缩到备份中,这一点优于 tar 对整个档案文件的压缩,因为一个极小的错误就可能使被压缩的 tar档案文件变得无用,不过这个工具主要应用于 Linux 系统。

Page 7: 第 14 章  备份与恢复

14.2 备份策略和注意事项14.2.1 备份类型一个简单的备份方案是一次备份所有数据,或者是备份上次备份后改变的所有数据。前一种备份叫完全备份,后一种叫增量备份。完全备份比增量备份费时费力。但恢复增量备份比全备份可能要花更多的时间。

Page 8: 第 14 章  备份与恢复

14.2.2 备份级别UNIX/Linux利用备份级别来区分不同的备份种类。完全备份为 0级备份,其他级别表示的是自上一级别以来被修改过的文件。做 0级备份最好保证在单用户模式,尽量保证备份的一致性,以免产生无法恢复的错误。如果必须动态进行,就需要使用好的备份工具,从软件上保证一致性。下面对表 14.1 所示两种比较常用的方案进行分析比较,从而对备份策略有更好的理解。

Page 9: 第 14 章  备份与恢复

表 14.1 两种常用的备份方案方案 1 方案 2

星期天 0级备份 星期天 0级备份星期一 1级备份 星期一 1级备份星期二 1级备份 星期二 2级备份星期三 1级备份 星期三 3级备份星期四 1级备份 星期四 4级备份星期五 1级备份 星期五 5级备份星期六 1级备份 星期六 6级备份

Page 10: 第 14 章  备份与恢复

方案 1 的优点是恢复时只需恢复上次完全备份和最后一次增量备份即可,但是如果备份内容很多,则增量备份的数量会很大,需要更多的磁带介质。所以在备份容量不是很大的情况非常适合。方案 2 的优点是每次备份都比较迅速,且备份内容较少,易于管理,但是恢复时比较麻烦。这种方法可以节省磁带,对于大容量备份较合适。实际的备份方案有很多种,有些已经利用了一些复杂的数学算法作为备份序列的调度以减少所需的磁带容量,但都是依据备份级别的这些基本规定而制定的。一个好的建议在 dump man页中给出,它是一个基于汉诺塔算法修改的调度序列: 3 , 2 , 5 ,

4 , 7 , 6 , 9 , 8 , 9... 这使备份和恢复所用的时间保持较少。

Page 11: 第 14 章  备份与恢复

14.2.3 备份的注意事项备份是必要的,而保证正确的备份是绝对必要的。所谓正确的备份就是可以用来恢复系统的备份。首先必须保证物理安全性,备份好的磁带必须从物理上隔离,以免发生火灾这样的毁灭性灾难。其次必须保证备份是可恢复的,要检查备份介质是否损坏,备份恢复工具是否易于获得,只有确保正确的备份才可以送到安全的地方保存。由于许多时候备份是用 cron 命令启动的,这时就必须确保需要备份的内容小于磁带的容量,并且要保证磁带不可回绕,否则会覆盖前面的工作,即使是拥有磁带库这样高级的备份工具也一样要仔细检查。

Page 12: 第 14 章  备份与恢复

还有备份过程中出现的介质错误,有些磁带坏了,影响了备份,一定要有补救措施,哪怕是最繁忙的时候,也要占用一点主机资源,可以临时将备份内容保存到其他服务器上。最后要提到的是,做备份时一定要全面了解系统的使用情况。经常改动的文件应该比改动较少的文件备份更频繁一点,而有些目录如 /tmp 、 /var 、 /mnt等是没有必要备份的,有些目录如 /proc则是不应该备份的。

Page 13: 第 14 章  备份与恢复

14.3 常用备份命令本章主要讨论 Linux 上 GNU版本的 tar 命令。 GNU版本能处理一盘磁带或一张磁盘的备份,但不支持备份时采用多卷备份的功能及目录很深的长路径名。下面的命令把整个 Linux 文件系统备份到“ /archiv

e” 文件系统上,必须以 root身份执行。# cd/# tar -zcvpf/archive/full-backup-`date′+%d-%B-%Y′`.tar.gz --directory/ \--exclude=proc --exclude=mnt --exclude=archive --exclude=cache注意: 在备份文件系统时,不要包含 /proc虚拟文件系统。也不要包含 /mnt 和 /archive 目录下的文件。

Page 14: 第 14 章  备份与恢复

下面给出常用的参数含义:z 表示备份的数据将使用 gzip进行压缩。c 表示创建归档文件。v 显示文件列表。p 保存权限,文件的访问权限将被“记住”。f 说明下一个参数就是归档的文件名或设备名。M 建立 /解压 /显示多卷档案文件,使用该参数系统会自动提示。请注意一下带有当前日期的文件名是如何产生的,其方法是在两个反引号之间放入“ date” 命令。通常的命名习惯是给未压缩的文档加一个“ .tar” 后缀,经过压缩后的记为“ .tar.gz”, 或缩写为“ .tgz” 。

Page 15: 第 14 章  备份与恢复

“--directory” 选项告诉 tar先转到规定的目录下 ( 本例中为“ /” 目录,也可以逐个指定目录 ) ,然后进行备份。“ --exclude” 选项告诉 tar 不要备份指定的目录或文件。/archive 目录有时就是 /mnt 目录,如 SCSI 磁带驱动器 /dev/nst0 等设备通常都加载到 /mnt 下,这时 /ar

chive 和 /mnt 是同一个目录。注意: /dev/nst0 设备在备份写完后不回卷,因此可以在一个磁带上做多次备份。如果指定设备为“ /d

ev/st0” ,磁带在备份写完后会自动回卷。对于在一个磁带上做多次备份的情况,可以用“ --label” 选项在归档文件里写入一些备份集的信息,以区分每次的备份工作。

Page 16: 第 14 章  备份与恢复

使用磁带时,可以用“mt” 命令回卷和弹出磁带:# mt -f/dev/nst0 rewind# mt -f/dev/nst0 offline

还有其他参数如“ fsf 、 bsf” 等命令,意即“快速前进 n 个文件、退回 n 个文件”。详细的信息请参阅在线文档。授权用户也可以根据自己的实际需要备份指定的文件和目录。

Page 17: 第 14 章  备份与恢复

下面给出两个例子:例 1. 仅仅备份某几个文件,键入命令 :# tar -cf archive.tar foo bar此命令在当前目录下把文件 foo 和 bar 备份成 archiv

e.tar例 2. 把某个目录备份到本硬盘的“ /data” 文件系统下,键入命令 :

# tar -zcf /data/backup-`date ′+%d-%B-%Y′`.tar.gz /home/lily/myfirst/此外在做好了一个备份之后,你应该使用选项 --com

pare(-d) 来检查它是否正确,以保证可靠性: # tar --compare --verbose -f /dev/tape

Page 18: 第 14 章  备份与恢复

14.4 文件恢复当我们需要恢复一个重要文件时,正确的恢复就比定期备份更重要了。恢复的过程会因为备份方案的不同而有所区别。在本节中,我们讨论如何恢复用 ta

r 备份过的文件,该命令常见的参数如下:z 表明档案是使用 gzip压缩的。x 表示解压缩档案文件。v 显示 tar 命令所做的工作。p 保持权限;文件保护信息将被记住。f 后面的参数是档案的文件名或设备。t 显示档案文件内容

Page 19: 第 14 章  备份与恢复

建议用户在文件恢复前观察一下档案文件的内容,可以使用如下命令:# tar tvf档案 ( 这仅适用于未被压缩的文件 )

下面的命令将从档案中恢复文件,如前面对整个文件系统建立的备份档案,其恢复的命令格式如下:# cd/# tar -zxvpf 路径 /档案文件名

“-p” 选项在解压缩过程中保持了原来的文件属主和权限。如果不需要恢复档案里的所有文件,可以参照以下例子恢复指定的一个或多个文件,命令如下:# cd/# tar -zxvpf路径 /档案文件名 /etc/passwd /etc/shadow

Page 20: 第 14 章  备份与恢复

由于给定的文件必须指定完整的路径名,必须先找到文件名在档案中的具体路径 , 这可以通过“ -t”参数配合“ grep” 命令查找:# cd/# tar -ztvpf 路径 /档案文件名 | grep -i passwd

在这个例子里,档案中的所有文件名被列出。输出结果被重定向到 grep 命令, grep 的“ i” 选项忽略了大小写,显示出路径或文件名中含 passwd 的所有文件。一旦找到了要恢复的文件,就可以指定文件名并使用上面的 tar 命令。

Page 21: 第 14 章  备份与恢复

下面是使用 tar 命令的一些注意事项:当创建档案文件时, tar 会去掉文件路径开头的“ /”斜线字符。这意味着文件恢复的位置可能和它备份时的位置不一样。因此,解决问题的办法就是在根目录下做所有的备份和恢复。否则必须通过比较、移动或更新把文件恢复到原来的位置。如果系统里有文件被“ chattr” 命令设了不可变位,这些文件在恢复的时候将不会保持该位。必须在备份结束后再使用命令“ chattr” 重新设置不可变位。tar永远是顺序读一个备份卷,因此大的卷会很慢。使用磁带机或其他顺序介质时不可能使用随机存取数据库技术。

Page 22: 第 14 章  备份与恢复

tar 不处理删除文件属性。如果你需要从一个全备份和一个增量备份恢复一个文件系统,并且 2 个备份之间你删除了一个文件,当你恢复完后,这个文件又存在了。如果这个文件包含应该删除的敏感数据,应该及时删除。注意: 压缩备份并不是完全可靠。压缩过程中,如果某一个比特压缩出错,那么其余所有的压缩数据都将毫无用处。所以对于十分重要的数据最好不要采用压缩备份。

Page 23: 第 14 章  备份与恢复

14.5 利用 cron 命令和脚本实现任务的自动化cron 命令用来执行周期性的任务,由 crond守护进程处理。系统启动后 cron 就保持运行,它定时读取配置文件,配置文件格式如下:

minute hour day month weekday username command其取值范围如表 14.2 所示:

Page 24: 第 14 章  备份与恢复

表 14.2 各时间参数的意义参数 说明 取值范围minute 小时中的分钟数 0~59

hour 每天的小时 0~23

day 每月的第几天 1~31

month 每年的第几个月 1~12

weeday 每周第几天 1~7

Page 25: 第 14 章  备份与恢复

其中各时间参数可以用通配符“ *” 代替,表示任一分钟、小时、天等等。 username 是 passwd 文件中有效的用户,不同的用户可以有自己的配置文件,可以通过 crontab 命令编辑、修改、删除用户自己的定时任务,配置文件通常放置在 /etc 目录下,命名为 crontab , cron 命令每隔一段时间扫描一次配置文件,并为每个有定时任务的用户在 /var/spool/cron 目录下建立用户独立的定时文件,文件名即为用户名。如为用户 lily 的 /home/lily/first编辑定时任务:# crontab -u lily /home/lily/first –e

这时 /var/spool/cron 目录下就可找到 lily 文件。

Page 26: 第 14 章  备份与恢复

14.6 小结备份工作对于系统管理员是非常重要的,但是对普通读者来说,很少有机会接触磁带机等设备,在现有的条件下熟练掌握 tar 等基本命令的使用,我们可以利用本地硬盘创建档案文件,达到学习与掌握的目的。这些归档命令在其他场合也是非常有用的,比如说要通过命令行方式从某台服务器下载某个目录下的所有文件及目录,就可以打包后再下载一个

tar档案文件即可。另外,掌握 cron 命令不仅可以灵活地安排备份任务,还可以灵活方便地执行任何shell 命令,因为配置文件中的命令行是由 sh 程序执行的。

Page 27: 第 14 章  备份与恢复

习题14-1 试着利用 cron 命令安排某个用户的备份任务。