当前位置:首页>技术交流>数据备份与恢复
数据备份与恢复


数据备份和恢复

备份和恢复软件总共有如下三大类
标准的Solaris工具,比如tar,cpio,ufsdump,ufrestore。这些工具对于带有多个备份设备的单个主机已足够使用。
集中的备份工具,这种软件适用于通过一台备份服务器备份多台主机的情形。
分布式备份工具,比如Veritas NetBackup,这种软件能够远程管理多个主机的存储空间。
本章介绍用于具有一两个备份设备的单个主机的标准Solaris备份和恢复工具。另外这些工具也适合服务器上的普通用户来管理自己的帐户。例如,用户可以使用tar命令创建磁带归档文件,而输出的内容可以直接写到一个磁盘文件。这是Solaris和其他unix系统打包发布源代码文件树的标准方式。用户也可以使用dd命令来复制磁盘和磁带的内容。Dd命令和标准的Solaris命令混合使用还可以备份数据库文件。例如Oracle服务器附带exp工具,这个工具可以用于归档正在运行的数据库。:
exp system /manager FULL=Y
在这里,system是具有DBA权限的管理员名,manager是密码。这条命令会创建一个叫做expat.dmp的文件,我们也可以将这条命令作为cron任务添加进crontab,使其每晚执行相应的备份操作。比如:
0 3 * * *exp system/mangager FULL=Y
有些站点每晚进行完全数据备份,这就需要将整个文件传输到备份介质中。如果归档文件只有几MB大小,这样做只会增加较小的系统负荷,但对于一个占用50GB的数据库来说,这样做会给备份服务器造成较大的压力,尤其是在服务器还有其他用途的情况下。因此更明智的选择是每天只进行增量备份,只备份有变化的数据。

使用tar

tar(磁带归档)命令用于创建一个磁带归档或者从一个磁带归档中提取文件。尽管tar命令最初只用于磁带设备,但实际上任何设备都可以保存tar文件,当然也包括普通的磁盘文件系统。这就是许多用户使用tar作为他们的标准归档工具的原因,尽管它不象pc机中的Zip命令那样压缩文件。磁带归档很容易通过安全复制命令在系统之间以二进制传输模式传输,同时它们也是Solaris系统之间交换数据的标准方式。
比如将/opt/tatalnet软件包内容创建成tar文件,首先,脚本使用du命令检查磁带归档需要的空间 比如:
$ cd /opt/totalnet
$ du
归档文件的大小,这个结果也使用du –s命令得到,这条命令只计算大小,不会显示目录大小的详细内容,要想在/tmp目录为整个软件包创建磁带归档,包括子目录。需要使用如下命令
# tar cvf /tmp/totalnet.tar *
将这个文件提取到磁盘,应当使用如下命令:
# cd /tmp
# tar xvf totalnet.tar
Solaris中默认的情况下磁带归档不会压缩,不过可以使用普通的Solaris命令compress来压缩:
$ compress file.tar
这条命令创建一个叫做file.tar.Z的压缩文件。另外GNU的gzip工具能够实现更高的压缩比。Gzip可以网上下载。

使用cpio

cpio用于复制文件归档,它比tar命令更灵活,因为cpio归档可以跨越多个卷。Cpio可以工作于如下模式:
拷入模式(cpio-i)从标准输入提取文件,可以使用cat或者相关命令产生该命令的输入。
拷出模式(cpio-o)从标准输入获取文件列表,通过这些文件创建一个归档,包括他们的路径。
空拷贝模式(cpio-p)与拷出模式相同,只不过不实际创建文档。
使用cpio进行归档的基本原理是创建需要归档的文件列表,将它们传送到标准输出,然后使用管道将它们送到cpio输出模式。例如,将用户home目录下的所有文本文件归档,并将它们存储到/staff/pwatters目录下的叫做myarchive的归档文件中,使用的命令是:
$ find . –name ` * .txt –print | cpio –oc >\
/staff/pwatters/myarchive
使用-c 选项可以以ASCII格式记录归档文件头,这种归档文件比较容易解析。命令完成后,会显示存放文件需要的数据块数目:
8048 blocks
文件会以文本的格式存放,使用cat或者head命令可以查看文本格式的归档文件头,命令:
$ head myarchive
由于ASCII码格式的归档文件头容易解析,因此可以直接使用cat命令从这种归档文件中提取原始文件
$ cat myarchive | cpio –icd “*”
上面的命令就可以提取所有的文件和目录(-d选项提示提取目录)。这与提取一个文件一样。如果要提取directory/file.txt文件,可以使用如下命令:

使用dd

dd程序会将磁盘或磁带的分区逐块复制到其他磁盘或磁带分区中,它类似于面向分区的cp命令。dd命令常用于将磁带分区备份到其他磁带分区或者磁带驱动器中,也用于复制磁带。使用dd命令时,需要指定一个输入文件,if,一个输出文件,of,以及一个块大小。例如将/dev/rdsk/c1t0d0s0上的root分区(/)复制到/dev/rdsk/c1t4d0s0, 需要使用如下命令:
# dd if=/dev/rdsk/c1t0d0s0 of=/dev/rdsk/c1t4d0s0 bs=128k
要使新的分区可以引导系统,需要在dd命令后使用installboot命令。dd的另一个用法是将一盘磁带上的数据备份到另一个磁带。这个功能的用途在于可以将旧磁带上的数据备份到新的磁带。例如将磁带驱动器0(/dev/rmt/0)复制到2(/dev/rmt/2)上,需要使用如下命令:
# dd if=/dev/rmt/0h of=/dev/rmt/1h

代理产品
本月热销产品