Linux數據備份與恢復


Linux數據備份及服務器重要數據類別分析

對 Linux 服務器來講,當然最理想的就是把整塊硬盤中的數據都備份,甚至連分區和文件系統都備份,這樣如果硬盤損壞,那么我們可以直接把備份硬盤中的數據導入損壞的硬盤,甚至可以直接用備份硬盤代替損壞的硬盤。

從數據恢復角度來說,這樣的整盤備份是最方便的(dd 命令就可以實現整盤備份,類似於 Windows 中的 GHOST 軟件)。不過這種備份的備份時間比較長,占用的硬盤空間較大,不太適合經常進行。我們最常進行的備份還是把系統中的重要數據進行備份。

Linux服務器中的重要數據

Linux服務器中常見的需要備份的數據。

  • /root/ 目錄:/root/ 目錄是管理員的家目錄,很多管理員會習慣在這個目錄中保存一些相關數據,那么,當進行數據備份時,需要備份此目錄。
  • /home/ 目錄:/home/ 目錄是普通用戶的家目錄。如果是生產服務器,那么這個目錄中也會保存大量的重要數據,應該備份。
  • /var/spool/mail/ 目錄:在默認情況下,所有的用戶未讀的郵件會保存在 /var/spool/mail/ 目錄下和用戶名相同的郵箱文件中,已讀的郵件會保存在用戶家目錄下的 mbox 文件中(mail 命令默認如此保存,不過如果使用了 hold 命令,那么不管郵件是否已讀,都保存在 /var/spool/mail/ 目錄中。可以使用 mbox 命令恢復已讀郵件保存在“~/mbox”文件中)。一般情況下,用戶的郵件也是需要備份的重要數據。
  • /etc/ 目錄:系統重要的配置文件保存目錄,當然需要備份。
  • 其他目錄:根據系統的具體情況,備份你認為重要的目錄。比如,我們的系統中有重要的日志,或者安裝了 RPM 包的 MySQL 服務器(RPM 包安裝的 mysql 服務,數據庫保存在 /var/lib/mysql/ 目錄中),那么 /var/ 目錄就需要備份;如果我們的服務器中安裝了多個操作系統,或編譯過新的內核,那么 /boot/ 目錄就需要備份。

備份安裝的服務的數據

Linux 服務器中會安裝各種各樣的應用程序,每種應用程序到底應該備份什么數據也不盡相同,要具體情況具體對待。這里拿最常見的 apache 服務和 mysql 服務來舉例。

apache 服務需要備份如下內容:

  • 配置文件:RPM包安裝的apache需要備份/etc/httpd/conf/httpd.conf;源碼包安裝的apache則需要備份/usr/local/apache2/conf/httpd.conf。
  • 網頁主目錄:RPM包安裝的apache需要備份/var/www/html/目錄中所有的數據;源碼包安裝的apache需要備份/usr/local/apache2/htdocs/目錄中所有的數據。
  • 日志文件:RPM包安裝的apache需要備份/var/log/httpd/目錄中所有的日志;源碼包安裝的apache需要備份/usr/local/apache2/logs/目錄中所有的日志。

其實,對源碼包安裝的 apache 來講,只要備份 /usr/local/apache2/ 目錄中所有的數據即可,因為源碼包安裝的服務的所有數據都會保存到指定目錄中。但如果是 RPM 包安裝的服務,就需要單獨記憶和指定了。

mysql 服務需要備份如下內容:

  • 對於源碼包安裝的 mysql 服務,數據庫默認安裝到 /usr/local/mysql/data/ 目錄中,只需備份此目錄即可。
  • 對於RPM包安裝的 mysql 服務,數據庫默認安裝到 /var/lib/mysql/ 目錄中,只需備份此目錄即可。

如果是源碼包安裝的服務,則可以直接備份 /usr/local/ 目錄,因為一般源碼包服務都會安裝到 /usr/local/ 目錄中。如果是 RPM 包安裝的服務,則需要具體服務具體對待,備份正確的數據。

Linux備份策略-完全備份

 完全備份是指把所有需要備份的數據全部備份。當然,完全備份可以備份整塊硬盤、整個分區或某個具體的目錄。

完全備份的好處是數據恢復方便,因為所有的數據都在同一個備份中,所以只要恢復完全備份,所有的數據都會被恢復。如果完全備份備份的是整塊硬盤,那么甚至不需要數據恢復,只要把備份硬盤安裝上,服務器就會恢復正常。

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

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

Linux備份策略-增量備份

完全備份隨着數據量的加大,備份耗費的時間和占用的空間會越來越多,所以完全備份不會也不能每天進行,這時增量備份的作用就體現了出來。

增量備份是指先進行一次完全備份,服務器運行一段時間之后,比較當前系統和完全備份的備份數據之間的差異,只備份有差異的數據。服務器繼續運行,再經過一段時間,進行第二次增量備份。在進行第二次增量備份時,當前系統和第一次增量備份的數據進行比較,也是只備份有差異的數據。第三次增量備份是和第二次增量備份的數據進行比較,以此類推。

假設我們在第一天進行一次完全備份。第二天增量備份時,只會備份第二天和第一天之間的差異數據,但是第二天的總備份數據是完全備份加第一次增量備份的數據。第三天增量備份時,只會備份第三天和第二天之間的差異數據,但是第三天的總備份數據是完全備份加第一次增量備份的數據,再加第二次增量備份的數據。當然,第四天增量備份時,只會備份第四天和第三天的差異數據,但是第四天的總備份數據是完全備份加第一次增量備份的數據,加第二次增量備份的數據,再加第三次增量備份的數據。

這種備份的好處是每次備份需要備份的數據較少,耗時較短,占用的空間較小;壞處是數據恢復比較麻煩,那么當進行數據恢復時,就要先恢復完全備份的數據,再依次恢復第一次增量備份的數據、第二次增量備份的數據和第三次增量備份的數據,最終才能恢復所有的數據。

Linux備份策略-差異備份

差異備份也要先進行一次完全備份,但是和增量備份不同的是,每次差異備份都備份和原始的完全備份不同的數據。也就是說,差異備份每次備份的參照物都是原始的完全備份,而不是上一次的差異備份。 

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM