也談Linux下的資料備份

2021-03-31 08:56:58 字數 4588 閱讀 4030

資料的價值自不待言,損壞後重新生成需要花費寶貴的時間和令人絕望的努力,有時甚至不可能重新產生,例如一些一次性不可逆測試實驗的。由於資料是一種投資,你必須保護它,並採取措施避免丟失。否則並且要花費高昂的金錢來挽救,有時也得配上淚水——看看「9.11事件」的悲慘一幕,這樣的話語可不是危言聳聽——眾多的伺服器被摧毀,對於在備份管理上有漏洞的公司,只好自吞苦果。相反,有很好的備份措施,則可以將災難損失降低到最低點。

丟失資料一般有幾個個原因:硬體失敗、軟體曲線、人為因素或自然災害。雖然現代硬體已經相當可靠,但仍可能自然損壞。儲存資料起決定性作用的硬體是硬碟,它依賴微小的磁軌和扇區在充滿電子干擾訊號的世界裡儲存脆弱的資料。同時,現代軟體依然不可靠,不夠強壯。更糟糕的是,人更不可靠,他們很隨意,有時會疲倦,他們很容易犯錯誤,甚至為某種目的惡意地破壞資料——就是那些以攻擊別人的資料庫為樂的可惡的「入侵者」。而不可抗拒的自然可能不是**的,但也可能造成破壞。所以寄希望理想的資料安全,幾乎是不可能做到的,未雨綢繆,早打算才是上策。

備份是保護資料投資的方法。有資料的多個拷貝,就不怕某個損壞(所需做的僅僅是從備份中恢復丟失的資料)。

備份所需的最重要的策略是選擇備份介質。一般用軟盤和磁帶。軟盤很便宜,還算可靠,不太快,很容易得到,但資料量大時不容易使用。磁帶也很便宜,比較可靠,儲存速比較算快,很容易得到。

備份工具

有很多備份工具可以選擇。傳統的unix備份工具是tar、cpio和dump。另外,還可以使用大量第三方軟體包(包括自由軟體和商業軟體)。不同的備份介質的選擇可能影響工具的選擇。

tar和cpio類似,從備份來看二者功能基本等效。都能將檔案存到磁帶並取出檔案。都能使用幾乎所有備份介質,因為其核心裝置驅動能處理底層裝置操作,而對使用者級程式看來所有裝置都差不多。有一些unix版本的tar和cpio備份工具對非普通檔案的處理可能有問題((比如在連線、裝置檔案、極長路徑名的檔案等等的處理),但linux上的這些命令則能正確處理所有檔案。

dump

則與tar和cpio不同,它直接讀檔案系統,而不通過檔案系統。它本事直接針對備份而開發的而tar和cpio實際上是針對存檔檔案的,儘管它們也勝任備份工作。

直接讀檔案系統有許多優點,它可不考慮對備份檔案的時間標記;對於tar和cpio ,必須先將檔案系統唯讀安裝。而直接讀檔案系統更有效,如果所有東西都要備份,它的備份時間相對比較短,因為它使磁頭移動最少。它的主要缺點是每個檔案系統種類需要特定的備份程式。另外linux的dump程式只識別ext2檔案系統。

dump

也直接支援備份級;而對於對tar 和cpio ,這必須用其他工具實現。

tar備份命令

乙個全備份可以很容易地用tar 實現:

# tar -create -file /dev/ftape /usr/src

tar: removing leading / from absolute path names in the archive

#

上面的例子使用gnu版本的tar及其長選項名。傳統版本的tar只識別單字元選項。gnu版還能處理一捲磁帶或一張磁碟不能容納的備份,及很長的路徑名;這不是所有傳統的版本能作到的。

如果你的備份一盤磁帶不能容納,你需要使用-multi-volume (-m)選項:

# tar -cmf /dev/fd0h1440 /usr/src

tar: removing leading / from absolute path names in the archive

prepare volume #2 for /dev/fd0h1440 and hit return:

#

注意開始備份前要格式化所有軟盤,或在tar命令需要新軟盤時用另乙個虛擬控制台或虛擬終端格式化它。

備份完後,應該檢查它是否完好,用-***pare (-d)選項:

# tar -***pare -verbose -f /dev/ftape

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

....

#

失敗的備份檢查意味著如果你丟失了原始資料,備份也無法恢復。

增量備份可用帶-newer (-n)選項的tar 來實現:

# tar -create -newer '8 sep 1995' -file /dev/ftape /usr/src -verbose

tar: removing leading / from absolute path names in the archive

usr/src/

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/modules/

usr/src/linux-1.2.10-includes/include/a**-generic/

usr/src/linux-1.2.10-includes/include/a**-i386/

usr/src/linux-1.2.10-includes/include/a**-mips/

usr/src/linux-1.2.10-includes/include/a**-alpha/

usr/src/linux-1.2.10-includes/include/a**-m68k/

usr/src/linux-1.2.10-includes/include/a**-sparc/

usr/src/patch-1.2.11.gz

#

遺憾的是,tar命令不能知道乙個檔案的i節點資訊變化。例如,檔案的許可權位變化,或檔名變化。不過好在可用find命令和比較當前檔案系統狀態和先前備份的檔案列表來解決。

tar的展開

tar

的-extract (-x)選項展開檔案:

# tar -extract -same-permissions -verbose -file /dev/fd0h1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/kernel.h

...

#

也可以用命令列只展開特定的檔案和目錄(及其中的檔案和子目錄):

# tar xpvf /dev/fd0h1440 usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

#

用-list (-t)選項看乙個備份卷中有什麼檔案:

# tar -list -file /dev/fd0h1440

usr/src/

usr/src/linux

usr/src/linux-1.2.10-includes/

usr/src/linux-1.2.10-includes/include/

usr/src/linux-1.2.10-includes/include/linux/

usr/src/linux-1.2.10-includes/include/linux/hdreg.h

usr/src/linux-1.2.10-includes/include/linux/kernel.h

...

#

注意tar是順序讀乙個備份卷,因此碰到龐大的卷則費時頗多。另外使用磁帶機或其他儲存介質時不可能使用隨機訪問資料庫技術。

壓縮備份

備份占用大量空間,要花費大量金錢。為了降低空間需求,備份可以壓縮。有幾種方法可以解決。有些程式內建支援壓縮,例如gnu tar的-gzip (-z)選項,通過管道(pipe)命令,在寫到備份介質前,先用gzip壓縮程式壓縮資料。

不幸的是,壓縮備份可能導致問題。基於壓縮工作的原理,如果乙個bit錯誤,可能導致所有其他壓縮資料不可用。有些備份程式內建錯誤校正,但沒有辦法處理大量的錯誤。就是說,如果用gnu tar壓縮備份,乙個單獨的錯誤回導致整個備份丟失。備份必須可靠,這樣的壓縮方法不好。

還有乙個方法是單獨壓縮每個檔案,這也回導致乙個檔案的丟失,但不會影響其他檔案。丟失的檔案可能已經損壞,因此這種情況比不使用壓縮差不了多少。afio 程式(cpio 的乙個變種)可以這樣。

壓縮需要時間,對某些型別的磁帶機,備份程式寫資料就變得非常慢,當然這可以靠輸出緩衝來避免(如果備份程式足夠「聰明」,可以內建處理,或者可以通過其他程式來實現), 當及時這樣也可能效率不高,這也是備份的乙個問題。

也談ORACLE備份與恢復

經常聽到有人說,某資料庫備份方法好,某備份方法不好,或者說現在都流行用rman來備份了,邏輯備份已經過時了,冷備份就更不值一提了,其實資料庫的備份從來沒有什麼好壞之分 沒有過時之說,合適才是最重要的,自己好才是真的好。各種方法各有長短,誰也代替不了誰,只有根據實際情況搭配使用,才能發揮最大的作用,否...

也談ORACLE備份與恢復

經常聽到有人說,某資料庫備份方法好,某備份方法不好,或者說現在都流行用rman來備份了,邏輯備份已經過時了,冷備份就更不值一提了,其實資料庫的備份從來沒有什麼好壞之分 沒有過時之說,合適才是最重要的,自己好才是真的好。各種方法各有長短,誰也代替不了誰,只有根據實際情況搭配使用,才能發揮最大的作用,否...

也談linux桌面

url 桌面linux必亡!開源免費竟是最大缺點?url url 駁 桌面linux必亡 開源免費竟是最大缺點?url url 再議linux 半死不活的桌面linux發行版 url 誠然,從市場份額來看,多年來linux一直沒什麼長進,說她半死不活也沒錯,但如果是一直在使用linux桌面的話,其實...