一、確定數據備份策略
首先必須確定在備份過程中操作哪些文件。在商業環境中,這是非常困難的一個決定,而且會產生嚴重的影響。如果備份了太多數據,會導致備份系統的成本過於龐大,會削減其他方面的開支。如果沒有備份足夠的數據,那么重要的數據就可能會丟失。
備份整個系統非常簡單(請確保不要備份NFS掛載的一些目錄和諸如/proc/之類的特殊文件系統),但是通常這樣備份的內容都太多了。如果整個系統盤上的數據都丟失了,那么在恢復任何數據之前,很可能不得不重新安裝基本的操作系統。將這些系統文件保存在備份磁帶上不是毫無意義的。因此,為了減少備份系統的成本(包括硬件、網絡、系統負載和備份時間),通常應該只備份重要的文件。
共享程序:可以在多個系統中使用的公共程序。/usr/local或/opt目錄常在多個系統之間共享,這些目錄包含沒有隨操作系統提供的其他操作系統。
用戶數據:包含所有用戶數據和私人文件的用戶主目錄。
應用程序數據:在分布式計算環境中,應用程序的數據通常在多個系統之間共享。例如,Web服務器群集通常需要共享相同的內容。
系統信息:系統信息包括賬戶信息(用戶、組和密碼)、郵件別名、主機列表等。只有您才知道自己的數據保存在什么地方,在建立自己的備份系統之前,至少要好好想一想這個問題。雖然我不可能列出需要備份的每一份數據,但可以提供一些指導,包括:
重要的系統數據:不要忘記重要的系統數據,如/etc/目錄中的文件,有時是/var/目錄中的文件。如果這些文件都是自動生成的,那么可能只需要在主系統上備份這些文件。
后來添加的軟件:包括系統中安裝的任何非原操作系統所提供的軟件。您可能已經將這些軟件安裝到/opt/或/usr/local/目錄中了,這樣可以簡化這些軟件的備份過程。或者,您也可能將所有這些程序都安裝到一個集中的文件服務器上,這樣會使備份過程更加簡單。如果系統中安裝了一些軟件包,要確保保存這些已經安裝好的包,並在備份過程中包含這些軟件包。
應用程序的配置文件和數據:要考慮每個系統上正在運行哪些服務。如果一個系統正在運行DNS服務,則確保備份時包括區文件。如果系統正在運行Web服務,就要備份Web內容,有時候甚至要備份訪問日志(這些日志可能很重要,也可能不重要)。
開發資源:如果有CVS倉庫、bug數據庫、知識庫以及其他保存重要數據的開發工具,則應確保在備份中包括這些文件。
管理工具:不要忘記在備份過程中包括所有的系統自動化腳本和工具。
數據庫:如果在一個或多個數據庫中保存了一些數據,顯然要在備份過程中包含這些數據,但是除此之外,還要確保對數據正確地進行備份。在很多情況中,為了正確地備份數據庫的內容,可能需要關閉數據庫或將數據進行轉儲。盡管有些數據庫軟件可以將數據導出並備份為適當的格式,但是有些備份軟件可以在數據庫運行時就對數據庫進行備份。
用戶數據:最后,系統中的用戶通常都會非常感激您在備份時包括了他們私人的文件。如果有一個大型的文件服務器,那么這台機器就很適合執行備份,根據需要從其他系統中復制數據。
另外一個需要考慮的問題是備份過程對時間的要求是什么等級。如果使用磁帶備份系統,而且只有一個磁帶,那么不得不每天替換磁帶上的數據。如果有人幾天之后才意識到自己誤刪了一個文件,那他們實在是太不幸了。當然,如果所有的數據都可以保存在一個磁帶上,那么解決方法就很簡單——只需要購買
多個磁帶即可。但是如果有大量的數據,那么情況就復雜多了。
二、存儲磁帶簡介
磁帶存儲是相當廣泛的范疇,包括DDS、LTO、DAT、DLT和SDLT等等。數十年來各種磁帶成了傳統的備份媒介。表1 是磁帶技術列表:
磁帶類型 |
磁帶容量 |
最短壽命 |
DAT 磁帶4 mm DDS |
4 GB (120米 DDS-2) |
3-4 年 |
12 GB (125米 DDS-3) |
3-4 年 |
|
20 GB (150米 DDS-4) |
3-4 年 |
|
8 mm tape |
7 GB (160 米) |
2-4 年 |
Mammoth-2 (AME) |
20 GB |
3-4 年 |
60 GB |
3-4 年 |
|
AIT 磁帶 |
35 GB |
3-4 年 |
50 GB |
3-4 年 |
|
100 GB |
3-4 年 |
|
DLT |
40 GB |
10 年 |
表1 磁帶技術簡介
注:DDS-3 和DDS-4 使用的技術與較早版本不同。最新的磁帶驅動器才支持最大的磁帶,但大多數驅動器提供只讀的向后兼容性。
三、磁帶管理命令
從用戶的角度來看,Linux的任何設備都可以看做是文件。因此,可以“打開”合適的磁帶驅動器文件來進行寫入操作,將要備份的數據寫入到文件中去。雖然這聽上去過於簡單了,但是實際情況就是這樣。Unix系統把每一個設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統一。 從用戶的角度來看,對設備的使用和一般文件的使用一樣。所以管理磁帶的最有效的方法是使用相關命令。
1.tar命令
tar命令是用來建立,還原備份文件的工具程序,如果您想根據一定的基本原則使用磁帶而不是使用硬盤對數據進行備份,那么有幾種選擇。最常用的程序是tar,大部分UNIX類也都包含這個程序。下面介紹如何使用GNU tar進行一些簡單的備份。如果只是希望在磁帶上備份一個系統,這正是它功能強大的地方。也可以使用rsync從幾個系統中先復制文件,然后使用tar將數據打包到磁帶上。下面的例子都基於以下3點假設:
● 正在備份/home/目錄。只需在適當的位置稍加修改即可指定其他目錄或多個目錄。
● 磁帶驅動器是通過設備文件/dev/st0進行訪問的。如果在Linux系統上只有一個SCSI磁帶驅動器,那么正確的設備文件就是/dev/st0。如果並非如此,就需要使用適當的設備文件來匹配硬件設備。
● 本文使用的是騰保數據(TANDBERG DATA)最新的半高LTO Ultrium 2磁帶機采用適用於半高磁帶機讀取的5.25英寸磁帶,速度為48MBps,壓縮后容量達400GB。如圖。
圖 半高LTO Ultrium 2磁帶機
● 腳本是以root用戶身份執行的,當前的工作目錄是根目錄(/)。
使用tar進行基本的備份
要使用tar在磁帶上創建一個完全備份,可以運行下面的命令:
#tar cvpf/dev/st0home
選項c的意思是應該創建一個新的檔案;選項v的意思是應該在將文件加入檔案的同時顯示這些文件;選項p的意思是所有的權限都應該保留;選項f的意思是檔案應該被寫入一個文件中(/dev/st0,它實際上表示您的磁帶驅動器)。
使用tar創建增量備份
要創建一個簡單的增量備份,可以使用GNU tar所提供的-N選項,它可以讓您指定一個日期,並規定只有在該日期之后被創建或修改過的文件才會被包含在檔案中。假設每天進行一次備份,可以使用下面的命令進行增量備份:
#tar cpf/dev/st0-N"$(date-d'1dayago')"home
下面這個腳本可以為您執行所有的備份:
#!/bin/bash |
假設備份腳本在每天早晨執行,就可以每天在腳本運行完成之后更換磁帶。這樣,您總可以今天換上明天用於備份的磁帶。
磁帶的備份
到現在為止,對於tar的討論實際上是與備份介質完全無關的;tar將磁帶當成與磁盤類似的設備來使用(不同之處在於當您使用磁盤時,要指定輸出文件名,而不是磁帶設備)。要將數據備份到實際的磁帶上還可能出現其他挑戰。首先,備份數據可能需要跨多個磁帶。這可以使用--multi-volume(-M)開關實現:
#tar cpf /dev/st0- M home
如果備份數據要涉及多個磁帶,就不能使用--gzip(-z)開關。如果在到達磁帶末尾時tar檢測到一個錯誤,就可以使用--tape-length(-L)開關指定磁帶的大小(單位是KB):
#tar cpf/ dev/st0 -M-L 4000000 home
在這個例子中,我們指定使用一個4GB的磁帶。
從tar包中恢復數據
從磁帶上使用tar創建的備份包中恢復數據的速度都非常慢。在恢復數據時,不管是否使用增量備份,首先要確定的一點是以前的數據在什么時候是完好無損的。然后就可以根據這個時間點選擇適當的磁帶,並從這個磁帶上提取出文件。如果需要查看在tar包中包含了哪些文件,可以使用t開關。注意這需要讀取整個tar包,如果這個tar包保存在磁帶上,其速度就會非常慢。
#tar tvf/dev/st0
可以將整個包在當前目錄中展開:
#tar xvpf /dev/st0
也可以只展開特定的文件或目錄。在下面這個例子中,我們可以只展開一個用戶的整個主目錄:
#tar xvpf /dev/st0 home/user1
或者,我們也可以只展開一個文件:
#tar xvpf /dev/st0 home/user1/file1
注意,即使只展開一個文件,也可能需要處理整個包。同理在磁帶驅動器上,這樣做的速度也會非常慢。
2.cpio命令
Cpio命令用於復制需要多個磁帶卷的文件、特殊文件或文件系統。Cpio的命令參數太多,這里只介相關參數。
將目錄中的所有文件復制到磁帶。步驟如下:
1. 轉到包含要復制的文件的目錄。
2. 將可寫磁帶插入磁帶機中。
3. 將文件復制到磁帶。使用命令:
$ ls | cpio -oc > /dev/st0
參數說明:ls 為 cpio 命令提供文件名列表;cpio -oc 指定 cpio 命令應該在復制出模式 (-o) 下操作,並以 ASCII 字符格式 (-c) 寫入頭信息。這些選項確保可移植到其他供應商的系統。> /dev/stn :指定輸出文件。
系統會將目錄中的所有文件復制到指定磁帶機中的磁帶,同時會覆寫該磁帶中的任何現有文件。屏幕將顯示復制的總塊數。
應用實例:
將/export/home/目錄中的所有文件復制到磁帶:
$ cd /export/home/kryten |
從磁帶中恢復所有文件 (cpio)
如果已使用相對路徑名創建了歸檔文件,則恢復文件時會在當前目錄中以目錄形式生成輸入文件。但是,如果已使用絕對路徑名創建了歸檔文件,則將使用相同的絕對路徑在系統中重新創建該文件。步驟如下:
1. 轉到要放置文件的目錄。
2. 將磁帶插入磁帶機。
3. 從磁帶中提取所有文件。 命令如下:
$ cpio -icvd < /dev/st0
3. tar 和cpio命令對比
在某些情況下,特別是單用戶系統,並不需要復雜的備份過程tar和cpic的這樣的簡單磁帶命令完全可以定期地把重要數據保存到磁帶上。tar和cpio還能夠備份通過NFS加載的本地和遠程文件系統。表2 是tar和 cpio 命令的對比和優缺點
命令 |
功能 |
優點 |
缺點 |
是否可識 別文件 系統邊界 |
是否支 持多卷 備份 |
tar |
用於將文件和目錄子樹復制到單個磁帶。 |
l 可以在大多數 UNIX 操作系統中使用 l 可以輕松訪問公共域版本 |
不可識別文件系統邊界; 全路徑名的長度不能超過 255 個字符; 不能用於創建多個磁帶卷; |
否 |
否 |
cpio |
用於復制需要多個磁帶卷的文件、特殊文件或文件系統。或者,當要將文件從運行當前的的系統復制到運行的系統時使用。 |
l 與使用 tar 命令相比,可以更有效地將數據打包到磁帶 l 恢復時跳過磁帶中所有的錯誤點 l 提供以不同的頭格式編寫文件的選項(如 tar、ustar、crc、odc、bar),以實現不同系統類型之間的可移植性 l 創建多個磁帶卷 |
該命令的語法比 tar 命令更為復雜。 |
否 |
是 |
表 2 tar 和 cpio 命令的優點和缺點
1. mt命令
mt命令用來控制磁帶機。可以使用 mt 命令的 status 選項來獲取有關磁帶機的狀態信息。mt 命令可報告配置文件 /kernel/drv/st.conf 中介紹的所有磁帶機的信息。
mt命令格式:mt [ -f device ] command [ count ] ,
mt -f /dev/st0 status 檢視磁帶機的硬件信息。
mt -f /dev/st0 erase 將磁帶機中的磁帶進行數據刪除動作。
mt -f /dev/st0 rewind 將磁帶進行回帶動作。
mt -f /dev/st0 offline 將磁帶進行回帶並由磁帶機中退出。
mt–f /dev/st0 unload 將磁帶由磁帶機中退出。
mt -f /dev/st0 compression off 將硬件壓縮功能關閉。
pax命令
對POSIX兼容的系統來說,pax命令提供了比tar或者cpio更好的移植性。當拷貝要求多盤磁帶卷的文件、特殊文件或者文件系統或者你想要將文件拷進或着拷出POSIX兼容的系統時,都可以使用pax命令。
1.拷貝一個目錄中所有的文件到磁帶上
使用下面的步驟來用pax命令將當前目錄下的所有文件拷貝到磁帶上。
(1)改變到包含想要拷貝的文件的目錄中。
(2)向磁帶驅動器中插入可寫磁帶。
(3)輸入pax -w -f > /dev/st0 並回車。-w選項將當前目錄里寫的內容寫到磁帶上。-f選項標識出磁帶驅動器。命令最后的據點(.)指明了當前目錄。Pax命令在拷貝時並列出拷貝的文件。
(4)輸入pax -l -f < /dev/st0並回車。-l選項列出了磁帶上的文件來確認已經拷貝完成的文件。
(5)從磁帶驅動器中拿出磁帶並在磁帶標簽上寫明文件名。
下面的例子向驅動器0中磁帶上拷貝所有文件。
%pax -w -f > /dev/st0
2.恢復磁帶上所有的文件
使用下面的步驟來用pax命令將磁帶上所有的文件拷貝到當前的目錄中。
(1)改變到想要拷貝文件的目錄中。
(2)向磁帶驅動器中插入可寫磁帶。
(3)輸入pax -r -f < /dev/st0 並回車。-r選項將磁帶上的內容讀取到當前目錄。-f選項標識磁帶驅動器。命令末尾句點(.)指明當前工作目錄。Pax命令在拷貝時並不列出拷貝文件。
(4)輸入ls -l並回車。
Ls -l 命令列出了當前目錄下的文件及其許可權,以此來驗證文件拷貝的完成。
(5)從磁帶驅動器中拿走磁帶並在磁帶標簽上寫下文件名。
下面的例子顯示了從驅動器0中的磁帶上拷貝所有的文件。
% pax -r -f /dev/rmt/0 |
更多的信息參見pax手冊。
四、做好磁帶機和存儲介質的維護
磁帶機和磁帶是服務器備份的好工具,但是磁帶也有些不利因素:
● 磁帶對熱和電磁場非常敏感,如果處理不當很容易出錯。電磁場由計算機周圍的各種常用設備產生,包括UPS 電源、包含電源的外圍設備、顯示器和揚聲器等。
此外,僅僅是讀取磁帶也會影響數據。
● 磁帶是連續存儲設備。為了訪問磁帶上某個指定的文件,必須使磁帶卷動到正確的某個點。這對於較老的磁帶驅動器常常會出問題。當前的高端驅動器能夠在數秒內訪問到任意一點。
針對以上缺陷應當采取以下措施:
1. 請定期清潔和檢查磁帶機,以確保其正確操作。請將磁帶存儲在遠離磁性設備的無塵安全位置。
2. 應該創建一個日志並對其進行維護,該日志用於跟蹤存儲每個作業(備份)的介質(磁帶卷)和每個備份文件的位置。
3. 注意物理安全。在保存備份磁帶的位置,應該考慮一般性的物理安全:必須保護磁帶免遭偷竊、蓄意破壞以及可能的環境破壞。
4. 正確保存磁帶介。一些媒介有特殊的要求,必須加以考慮。比如盒式磁帶的磁帶卷軸要垂直放置(垂直於地面,就像汽車的輪胎一樣),並且與驅動器接觸的邊朝下(從而重力把磁帶拖離磁帶軸)。