Linux備份策略

2022-07-02 14:54:10 字數 3523 閱讀 7353

常用的備份策略有完全備份和增量備份,而增量備份有可細分為累計增量備份和差異增量備份。下面來分別講述不同備份策略以及之間的區別。

完全備份是指把所有需要備份的資料全部備份。當然,完全備份可以備份整塊硬碟、整個分割槽或某個具體的目錄。對於 linux 作業系統來說,完全備份指的就是將根目錄下的所有檔案進行備份。

完全備份的好處是,所有資料都進行了備份,系統中任何資料丟失都能恢復,且恢復效率較高。如果完全備份備份的是整塊硬碟,那麼甚至不需要資料恢復,只要把備份硬碟安裝上,伺服器就會恢復正常。

完全備份的缺點也很明顯,那就是需要備份的資料量較大,備份時間較長,備份了很多無用資料,占用的空間較大,所以完全備份不可能每天執行。

我們一般會對關鍵伺服器進行整盤完全備份,如果出現問題,則可以很快地使用備份硬碟進行替換,從而減少損失。我們甚至會對關鍵伺服器搭設一台一模一樣的伺服器,這樣只要遠端幾個命令(或使用 shell 指令碼自動檢測,自動進行伺服器替換),備份伺服器就會接替原本的伺服器,使故障響應時間大大縮短。

在乙個資料量很大的業務應用中,每天對 linux 系統進行完全備份是不現實的,這就需要用到增量備份策略。

累計增量備份是指先進行一次完全備份,伺服器執行一段時間之後,比較當前系統和完全備份的備份資料之間的差異,只備份有差異的資料。伺服器繼續執行,再經過一段時間,進行第二次增量備份。在進行第二次增量備份時,當前系統和第一次增量備份的資料進行比較,也是只備份有差異的資料。第三次增量備份是和第二次增量備份的資料進行比較,以此類推。

因此,累計增量備份就是只備份每天增加或者變化的資料,而不備份系統中沒有變動的資料。我們畫一張示意圖,如圖 1 所示。

圖 1 累計增量備份

採用累計增量備份的好處是,每次備份需要備份的資料較少,耗時較短,占用的空間較小;壞處是資料恢復比較麻煩,如果是圖 1 的例子,那麼當進行資料恢復時,就要先恢復完全備份的資料,再依次恢復第一次增量備份的資料、第二次增量備份的資料和第三次增量備份的資料,最終才能恢復所有的資料。

差異增量備份(後續簡稱差異備份)也要先進行一次完全備份,但是和累計增量備份不同的是,每次差異備份都備份和原始的完全備份不同的資料。也就是說,差異備份每次備份的參照物都是原始的完全備份,而不是上一次的差異備份。我們也畫一張示意圖,如圖 2 所示。

圖 2 差異增量備份

假設我們在第一天也進行一次完全備份。第二天差異備份時,會備份第二天和第一天之間的差異資料,而第二天的備份資料是完全備份加第一次差異備份的資料。第三天進行差異備份時,仍和第一天的原始資料進行對比,把第二天和第三天所有的資料都備份在第二次差異備份中,第三天的備份資料是完全備份加第二次差異備份的資料。第四天進行差異備份時,仍和第一天的原始資料進行對比,把第二天、第三天和第四天所有的不同資料都備份到第三次差異備份中,第四天的備份資料是完全備份加第三次差異備份的資料。

相比較而言,差異備份既不像完全備份一樣把所有資料都進行備份,也不像增量備份在進行資料恢復時那麼麻煩,只要先恢復完全備份的資料,再恢復差異備份的資料即可。不過,隨著時間的增加,和完全備份相比,變動的資料越來越多,那麼差異備份也可能會變得資料量龐大、備份速度緩慢、占用空間較大。

乙個比較的備份策略是,對於資料量不大,並且每天資料量增加不多的系統,優先選擇完全備份;對於資料量巨大,每天新增資料也很多的系統,視情況選擇差異備份或者增量備份。

作為 linux 系統管理員,最經常使用的備份工具就是 tar 和 cpio 命令。前面在介紹備份介質時,已經使用了 tar 命令,此命令其實是乙個檔案打包命令,經常在備份檔案的場合中使用。

使用 cpio 命令進行資料備份,請閱讀《linux提取rpm包檔案(cpio命令)》。

有關 tar 命令的基本用法,請閱讀《linux tar壓縮命令》一節,這裡不再過多贅述。下面通過 tar 命令做的乙個 web 伺服器的備份指令碼,詳細了解 tar 命令作為備份工具時的具體用法。

以下是乙個有關 web 伺服器的備份指令碼:

#!/bin/sh

bakdate=`date +%y%m%d`

data3=`date -d "3 days ago" +%y%m%d`

osdata=/disk1

userdata=/disk2

echo "backup os data starting"

tar -zcvf /$osdata/etc.data/etc_$bakdate.tar.gz /etc

tar -zcvf /$osdata/boot.data/boot_$bakdate.tar.gz /boot

tar -zcvf /$osdata/home.data/home_$bakdate.tar.gz /home

tar -zcvf /$osdata/root.data/root_$bakdate.tar.gz /root

tar -zcvf /$userdata/usr_data/usrlocal_$bakdate.tar.gz /usr/local

tar -zcvf /$userdata/var_www/www_$bakdate.tar.gz /var/www

cp -r /$osdata/* /$userdata

cp -r /$userdata/* /$osdata

echo "backup os data complete!"

echo "delete os data 3 days ago"

rm -rf /$osdata/etc.data/etc_$data3.tar.gz

rm -rf /$osdata/boot.data/boot_$data3.tar.gz

rm -rf /$osdata/home.data/home_$data3.tar.gz

rm -rf /$osdata/root.data/root_$data3.tar.gz

rm -rf /$osdata/usr_data/usrlocal_$data3.tar.gz

rm -rf /$osdata/var_www/www_$data3.tar.gz

rm -rf /$userdata/etc.data/etc_$data3.tar.gz

rm -rf /$userdata/boot.data/boot_$data3.tar.gz

rm -rf /$userdata/home.data/home_$data3.tar.gz

rm -rf /$userdata/root.data/root_$data3.tar.gz

rm -rf /$userdata/usr_data/usrlocal_$data3.tar.gz

rm -rf /$userdata/var_www/www_$data3.tar.gz

echo "delete cws ok!"

上面這段指令碼完成的工作是,將系統和使用者的備份資料分別儲存在兩個不同的本地磁碟 disk1 和 disk2 中,並且保留最近 3 天的資料,3 天前的資料自動刪除。主要備份的資料有 /etc 目錄、/boot 目錄、/home 目錄、/root 目錄、/usr/local 目錄和 /var/www 目錄。當然這裡只是舉個例子,凡是存放資料的重要目錄,都需要進行備份。

將此指令碼放到系統守護程序(類似於 windows 下的計畫任務)crontab 下,設定備份時間,即可實現定時資料備份。有關 crontab 的詳細介紹,請閱讀《linux crontab命令》。

累計增量備份策略 Linux備份策略

常用的備份策略有完全備份和增量備份,而增量備份有可細分為累計增量備份和差異增量備份。下面來分別講述不同備份策略以及之間的區別。完全備份是指把所有需要備份的資料全部備份。當然,完全備份可以備份整塊硬碟 整個分割槽或某個具體的目錄。對於 linux 作業系統來說,完全備份指的就是將根目錄下的所有檔案進行...

資料備份策略

概述 資料的安全性和可用性都離不開良好的資料備份工作。對於較少意識到資料備份重要性的使用者,在出現非常狀況之後只能面對損失目瞪口呆。乙個良好的資料備份體系應該是規範而高效的,這需要針對不同的情況認真的制訂備份策略。我們在文中並沒有給出乙份完成的備份策略,而是嘗試以一些制訂備份策略的良好原則做為主線,...

簡單備份策略

每月30日2點做全備份,每星期日12點做0級備份,每星期三1點做1級備份,其他每天2點做2級備份,自動刪除2天前歸檔2級備份,自動刪除兩周前0級備份,自動刪除2個月前的全備.1.星期天晚上 level 0 backup performed 全備份 2.星期一晚上 level 2 backup per...