備份和恢復(fù)軟件總共有如下三大類
標(biāo)準(zhǔn)的Solaris工具,比如tar,cpio,ufsdump,ufrestore。這些工具對(duì)于帶有多個(gè)備份設(shè)備的單個(gè)主機(jī)已足夠使用。
集中的備份工具,這種軟件適用于通過(guò)一臺(tái)備份服務(wù)器備份多臺(tái)主機(jī)的情形。
分布式備份工具,比如Veritas NetBackup,這種軟件能夠遠(yuǎn)程管理多個(gè)主機(jī)的存儲(chǔ)空間。
本章介紹用于具有一兩個(gè)備份設(shè)備的單個(gè)主機(jī)的標(biāo)準(zhǔn)Solaris備份和恢復(fù)工具。另外這些工具也適合服務(wù)器上的普通用戶來(lái)管理自己的帳戶。例如,用戶可以使用tar命令創(chuàng)建磁帶歸檔文件,而輸出的內(nèi)容可以直接寫到一個(gè)磁盤文件。這是Solaris和其他unix系統(tǒng)打包發(fā)布源代碼文件樹(shù)的標(biāo)準(zhǔn)方式。用戶也可以使用dd命令來(lái)復(fù)制磁盤和磁帶的內(nèi)容。Dd命令和標(biāo)準(zhǔn)的Solaris命令混合使用還可以備份數(shù)據(jù)庫(kù)文件。例如Oracle服務(wù)器附帶exp工具,這個(gè)工具可以用于歸檔正在運(yùn)行的數(shù)據(jù)庫(kù)。:
exp system /manager FULL=Y
在這里,system是具有DBA權(quán)限的管理員名,manager是密碼。這條命令會(huì)創(chuàng)建一個(gè)叫做expat.dmp的文件,我們也可以將這條命令作為cron任務(wù)添加進(jìn)crontab,使其每晚執(zhí)行相應(yīng)的備份操作。比如:
0 3 * * *exp system/mangager FULL=Y
有些站點(diǎn)每晚進(jìn)行完全數(shù)據(jù)備份,這就需要將整個(gè)文件傳輸?shù)絺浞萁橘|(zhì)中。如果歸檔文件只有幾MB大小,這樣做只會(huì)增加較小的系統(tǒng)負(fù)荷,但對(duì)于一個(gè)占用50GB的數(shù)據(jù)庫(kù)來(lái)說(shuō),這樣做會(huì)給備份服務(wù)器造成較大的壓力,尤其是在服務(wù)器還有其他用途的情況下。因此更明智的選擇是每天只進(jìn)行增量備份,只備份有變化的數(shù)據(jù)。
tar(磁帶歸檔)命令用于創(chuàng)建一個(gè)磁帶歸檔或者從一個(gè)磁帶歸檔中提取文件。盡管tar命令最初只用于磁帶設(shè)備,但實(shí)際上任何設(shè)備都可以保存tar文件,當(dāng)然也包括普通的磁盤文件系統(tǒng)。這就是許多用戶使用tar作為他們的標(biāo)準(zhǔn)歸檔工具的原因,盡管它不象pc機(jī)中的Zip命令那樣壓縮文件。磁帶歸檔很容易通過(guò)安全復(fù)制命令在系統(tǒng)之間以二進(jìn)制傳輸模式傳輸,同時(shí)它們也是Solaris系統(tǒng)之間交換數(shù)據(jù)的標(biāo)準(zhǔn)方式。
比如將/opt/tatalnet軟件包內(nèi)容創(chuàng)建成tar文件,首先,腳本使用du命令檢查磁帶歸檔需要的空間 比如:
$ cd /opt/totalnet
$ du
歸檔文件的大小,這個(gè)結(jié)果也使用du –s命令得到,這條命令只計(jì)算大小,不會(huì)顯示目錄大小的詳細(xì)內(nèi)容,要想在/tmp目錄為整個(gè)軟件包創(chuàng)建磁帶歸檔,包括子目錄。需要使用如下命令
# tar cvf /tmp/totalnet.tar *
將這個(gè)文件提取到磁盤,應(yīng)當(dāng)使用如下命令:
# cd /tmp
# tar xvf totalnet.tar
Solaris中默認(rèn)的情況下磁帶歸檔不會(huì)壓縮,不過(guò)可以使用普通的Solaris命令compress來(lái)壓縮:
$ compress file.tar
這條命令創(chuàng)建一個(gè)叫做file.tar.Z的壓縮文件。另外GNU的gzip工具能夠?qū)崿F(xiàn)更高的壓縮比。Gzip可以網(wǎng)上下載。
cpio用于復(fù)制文件歸檔,它比tar命令更靈活,因?yàn)閏pio歸檔可以跨越多個(gè)卷。Cpio可以工作于如下模式:
拷入模式(cpio-i)從標(biāo)準(zhǔn)輸入提取文件,可以使用cat或者相關(guān)命令產(chǎn)生該命令的輸入。
拷出模式(cpio-o)從標(biāo)準(zhǔn)輸入獲取文件列表,通過(guò)這些文件創(chuàng)建一個(gè)歸檔,包括他們的路徑。
空拷貝模式(cpio-p)與拷出模式相同,只不過(guò)不實(shí)際創(chuàng)建文檔。
使用cpio進(jìn)行歸檔的基本原理是創(chuàng)建需要?dú)w檔的文件列表,將它們傳送到標(biāo)準(zhǔn)輸出,然后使用管道將它們送到cpio輸出模式。例如,將用戶home目錄下的所有文本文件歸檔,并將它們存儲(chǔ)到/staff/pwatters目錄下的叫做myarchive的歸檔文件中,使用的命令是:
$ find . –name ` * .txt –print | cpio –oc >\
/staff/pwatters/myarchive
使用-c 選項(xiàng)可以以ASCII格式記錄歸檔文件頭,這種歸檔文件比較容易解析。命令完成后,會(huì)顯示存放文件需要的數(shù)據(jù)塊數(shù)目:
8048 blocks
文件會(huì)以文本的格式存放,使用cat或者h(yuǎn)ead命令可以查看文本格式的歸檔文件頭,命令:
$ head myarchive
由于ASCII碼格式的歸檔文件頭容易解析,因此可以直接使用cat命令從這種歸檔文件中提取原始文件
$ cat myarchive | cpio –icd “*”
上面的命令就可以提取所有的文件和目錄(-d選項(xiàng)提示提取目錄)。這與提取一個(gè)文件一樣。如果要提取directory/file.txt文件,可以使用如下命令:
dd程序會(huì)將磁盤或磁帶的分區(qū)逐塊復(fù)制到其他磁盤或磁帶分區(qū)中,它類似于面向分區(qū)的cp命令。dd命令常用于將磁帶分區(qū)備份到其他磁帶分區(qū)或者磁帶驅(qū)動(dòng)器中,也用于復(fù)制磁帶。使用dd命令時(shí),需要指定一個(gè)輸入文件,if,一個(gè)輸出文件,of,以及一個(gè)塊大小。例如將/dev/rdsk/c1t0d0s0上的root分區(qū)(/)復(fù)制到/dev/rdsk/c1t4d0s0, 需要使用如下命令:
# dd if=/dev/rdsk/c1t0d0s0 of=/dev/rdsk/c1t4d0s0 bs=128k
要使新的分區(qū)可以引導(dǎo)系統(tǒng),需要在dd命令后使用installboot命令。dd的另一個(gè)用法是將一盤磁帶上的數(shù)據(jù)備份到另一個(gè)磁帶。這個(gè)功能的用途在于可以將舊磁帶上的數(shù)據(jù)備份到新的磁帶。例如將磁帶驅(qū)動(dòng)器0(/dev/rmt/0)復(fù)制到2(/dev/rmt/2)上,需要使用如下命令:
# dd if=/dev/rmt/0h of=/dev/rmt/1h