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