发信人: Hopper()
整理人: hahalee(2000-02-28 20:02:08), 站内信件
|
http://www.sina.com.cn 1999年12月5日 17:50 王波
系统备份
不管系统是多么可靠,总会发生一些意想不到的事情,致使系统数据丢失。 例如硬件故障或人为操作失误等。因此使用备份来保护数据不丢失是一种非常重 要的手段,尤其在系统数据非常重要的时候。经常进行数据备份能够减少偶然破 坏造成的损失,保证系统能够从错误中恢复正常运行。
备份策略
在进行备份之前,首先要选择使用的备份策略,这将决定何时需要进行备份 ,以及出现故障时进行恢复的方式。通常使用的备份方式有三种:
完全备份:每隔一定时间就对系统进行一次全面的备份,这样在备份间隔期 间出现数据丢失等问题,可以使用上一次的备份数据恢复到前次备份时情况。这 是最基本的备份方式,但是每次都需要备份所有的数据,并且每次备份的工作量 也很大大,需要太多的备份介质,因此这种备份不能进行的太频繁,只能每隔一 段较长时间才进行一次完整的备份,例如以一个月为一个备份周期。但是这样一 旦发生数据丢失,只能恢复到上次备份的数据,这个月内更新的数据就有可能丢 失。
增量备份:首先进行一次完全备份,然后每隔一个较短时间进行一次备份, 但仅仅备份在这个期间更改的内容。当经过一个较长的时间后再重新进行一次完 全备份,开始前面的循环过程。由于只有每个备份周期的第一次进行完全备份, 其他只进行改变的文件的备份,因此工作量小,就能够进行更频繁的备份。例如 以一个月为一个周期,一个月进行一次完全备份,每天晚上0点进行这一天改变的 数据备份。这样一旦发生数据丢失,首先恢复前一个完全备份,然后按日期一个 一个恢复每天的备份,就能恢复到前一天的情况。这种备份方法比较经济。
更新备份:这种备份方法与增量备份相似,首先每月进行一次完全备份,然 后每天进行一次更新数据的备份。但不同在于,增量备份是备份该天更改的数据 ,而更新备份是备份从上次进行完全备份后更改的全部数据文件。一旦发生数据 丢失,可以使用前一个完全备份恢复到前一个月的状态,再使用前一个更新备份 恢复到前一天的情况。这样做的缺点是每次作小备份工作的任务比增量备份的工 作量要大,但好处在于,增量备份每天都有备份,因此要保存数据备份数量太多 ,而更新备份则不然,只需保存一个完全备份和一个更新备份就可以恢复故障以 前的状态。另外在进行恢复工作时,增量备份要顺序进行多次备份的恢复,而更 新备份只需两次恢复,因此它的恢复工作相对简单。
增量备份和更新备份都能以比较经济的方式对系统进行完全备份,在这些不 同的策略之间进行选择不但与系统数据更新的方式相关,也依赖于管理员的习惯 。通常在系统数据更新不是太频繁的话,可以选用更新备份的方式。但是如果系 统数据更新太快,使每个备份周期后面几次更新备份的数据量已经相当大,这样 使用更新备份已经不太经济了。这时候可以考虑增量备份或混用更新备份和增量 备份的方式,或者缩短备份周期。
操作磁带设备
FreeBSD下SCSI接口的磁带设备文件名为/dev/rsa0或/dev/nrsa0,其中n代表 非回卷类型,每次在nrsa0上存储数据之后磁带没有回卷,这样就能在磁带中保存 多次备份。而rsa0设备在每次保存数据并关闭磁带时会回卷,这样只能存储一次 备份。由于磁带容量大,一次不会用完一个磁带的容量,因此一般使用nrsa0设备 ,以进行多次备份。
3.1-release之前使用老SCSI驱动程序的磁带设备为st,对应的设备文件就为 rst0和nrst 0,而非SCSI的磁带设备有rwt0,rft0,分别为IDE和软盘控制器接口 的磁带设备。
n表示非回卷模式,r代表raw方式,代表字符设备。而sa为磁带设备的驱动程 序名。0表示设备序号,如果有多个磁带,下一个设备将为rsa1。
一般使用/dev/nrsa0作为备份设备,因为这个设备是非回卷的,那么每次备 份之后磁带仍然停留在最后移动的位置上,这样就可以在下次备份时接续往磁带 中写入,使用一个磁带进行多次备份。但是如果读取具体的备份,必须使磁带卷 到具体备份的起始位置才行。需要回卷磁带要使用mt命令来完成。
# mt /dev/nrsa0 rewind
回卷磁带到最开始地方;
# mt /dev/nrsa0 reten
先向前卷到尾部再回卷磁带,保持磁带前后松紧一致;
# mt /dev/nrsa0 fsf 1
跳到下一个备份文件,使用2将跳到下面第二个文件;因此要定位一个磁带上 第4次备份的文件,可以使用rete n回卷磁带,再使用fsf 4跳到第4个备份。
每次使用mt均需使用mt来确定磁带的位置,一般的应用程序并不能自动确定 文件的开头,而在磁带上每两个备份文件当中必然有一段无用的数据,如果再读 完一个备份之后立即去读取下一个备份文件,就不能识别这些备份文件之间的无 用信息,必然导致报告错误。
使用tar进行备份
选定了备份方式之后,可以使用tar、cpio、dump等备份工具软件将数据备份 到磁带上。对于一般的备份,使用tar就足够了。tar的参数有:
参数c是创建备份(Create)
参数v表示回显模式(Verbose),将产生一系列所备份的文件列表
参数f指定使用的备份文件,它后面的参数为输出的备份文件名
参数x是展开备份文件
参数t是显示备份文件的内容
参数T后面跟随一个文件参数,指定从这个文件中读取要备份的各个文件的路 径
参数z是使用压缩方式创建和解开备份文件,这是GNU的新版tar的功能,需要 同时安装gzip
如果不使用T参数,那么就需要一个参数,指明进行备份文件和目录的路径
这些选项参数可以使用Unix下的标准参数符号 “-” 进行引导,如 “-c” 、 “-f” 等,大部分参数都是单独使用的参数,而有些如 “-f” 、 “-T” ,其后面还要跟随一个文件名作参数。因此可以将单独的参数写在一起,如 “ -cv” 就等同于 “-c -v” ,也可以与一个需要参数的选项写在一起,如 “-c vf f ilenam” 就等同于 “-c -v -f filename” 。如果不使用 “-” 引导参 数,tar也能识别这些命令选项。如 “tar tvf filename” 就等同于 “tar -c vf filename” 。 tar能够创建备份文档,能够备份到磁带上或者产生一个文件 ,如:
# tar cf root.tar /root
将/root目录下的所有文档备份到root.tar文件中,root.tar指定输出的备份 文件,/roo t指出要做备份的目录。如果要备份到磁带上,将输出的备份文件指 定为磁带设备文件即可:
# tar cf /dev/nrsa0 /root
如果设置了环境变量TAPE,则可以不使用参数f指定输出磁带设备名字。
# TAPE=/dev/nrsa0; export TAPE
# tar c /root
从备份文档中解出所有文件或某个文件,只需要使用x选项替换前面的c选项 ,例如从磁带中解出hello.c文件:
tar xv hello.c
列出tar备份文档中的内容,可以使用t选项,tar tv将列出磁带上的所有文 件内容,而tar tf r oot.tar将root.tar文件上的内容列出。
tar本身不支持文件压缩,因此创建的文件要比较大。但tar可以和GNU的压缩 软件gzip合作,直接生成压缩文件,所需要的是在参数中增加z选项。压缩的备份 文件和普通tar备份是不同的,因此凡是压缩的备份操作,均需使用z参数。如:
# tar czvf root.tar.gz /root
# tar xzvf root.tar.gz hello.c
# tar tzvf root.tar.gz
要进行增量备份和更新备份,必须找出那些文件在这个期间进行更新。这个 任务可以由程序find来完成,例如查找过去七天更改的文件,并使用tar的-T参数 制定进行备份的文件,进行备份:
# find / -mtime -7 -print > /tmp/filelist
# tar -c -T /tmp/filelist -f /dev/nrsa0
由于要使用find来找出需要备份的文件列表,那么就需要使用文件的修改时 间进行查询,需要使用-mtime 参数。另一个更有用的参数是-newer,可以查找出 所有比某个文件更新的文件,由于备份是周期进行的,因此可以在完全备份之后 生成一个标记文件,那么所有比这个文件新的文件都需要进行更新备份。
# find / -newer full_back_tag_file -print > /tmp /filelist
进行备份需要定期执行,不能完全依赖于管理员手工进行备份。备份也应该 选择在系统比较空闲时进行,以免影响系统的正常处理任务。通常可以选择半夜 0:00点之后进行备份,这样更不能将这个任务由管理员手工完成了。Unix提供了 定时服务cron,能够在确定的时间中执行一系列任务,因此备份必须和cron合作 来完成,或者使用/etc下的d aily,weekly,monthly文件定时操作。
未完,待续。。。
-- 小多子:你知道我们佟家百年不衰的道理么?
那就是,不要一条路走到黑!
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.123]
|
|