Centos(Linux)系統備份與還原

Centos系統備份與恢復教程

tar:
  特點
  1、保留權限
  2、適合備份整個目錄
  3、可以選擇不同的壓縮方式
  4、如果選擇不壓縮還能實現增量備份,部份還原,參考man tar


dd
  特點
  1、對塊進行操作,能備份整個硬盤(包括分區表、MBR,其他Linux不能很好支持的文件系統)
  2、可以進行壓縮(麻煩一點)
  3、由於是備份整個硬盤,文件系統上沒有使用的“空白”空間也會被保存起來,備份文件比較大
  備份
  備份硬盤sda,放到/backup(/backup掛載在其他硬盤如sdb)


tar方法教程

Linux不像windows,它不限制根用戶存取任何東西,因此,你完全可以把一個分區上每一個的文件放入一個TAR文件中。

使用root用戶切換到根目錄
然後,使用下面的命令備份完整的系統:
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys
或者
tar cvpzf /state/partition1/home/backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys
說明:
    tar 部分就是我們將要使用的軟件。
    'cvpfz'是我們給tar加的選項,像“創建一個壓縮文檔”(這是顯然的),“保存權限”(以便使每一個相同的文件有相同的權限),以及“gzip”(縮減大小)。接下來,是壓縮文檔將獲得的名稱,在我們的例子中是backup.tgz。
    緊隨其後的是我們想要備份的根目錄。既然我們想備份所有東西:/。接着就是我們要剔除的目錄了:我們不想備份每一樣東西,因爲包括有些目錄不是非常有用。同時確保你沒有把備份文件本身也加進去了,否則,你會得到怪異的結 果的。你也許同樣不打算把/mnt文件夾包括進來——如果你在那兒掛載了其他分區——否則最終你會把那些也備份的。同時確保你沒有任何東西掛載在 /media(即沒有掛載任何cd或可移動介質)。否則,剔除/media。

在進程的最後,你也許會得到一條信息,寫着“tar:由於先前錯誤的耽擱而存在錯誤”或者其他什麼,不過大多數情況下你可以僅僅忽略它。
作爲選擇,你可以使用Bzip來壓縮你的備份。這意味着較高的壓縮比但是也意味着較低的速度。如果壓縮比對你很重要,只需用“j”替換命令中的“z”,同時給備份命一個相應的擴展名。這些會使命令變成這樣:
tar cvpjf backup.tar.bz2 / --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys

恢復:
如果系統被毀壞,那麼我們就可以用備份好的tar包進行恢復。
在分區的根目錄下的backup.tgz文件
再一次確保你是根用戶以及備份文件在文件系統的根目錄。

Linux美妙的地方之一就是這一項工作甚至可以在一個正在運行的系統上進行;沒必要被引導cd或者任何東西搞得暈頭轉向。當然,如果你使你的系統 無法被引導了。你也許別無選擇,只能使用一張live-cd了,但是結果是一樣的。你甚至可以在Linux系統正在運行的時候,移除它裏面所有文件。可是 我不告訴你那個命令!
這是我要用的命令:
tar xvpfz backup.tgz -C /

如果你使用 bz2:
tar xvpfj backup.tar.bz2 -C /

警告:這會把你分區裏所有文件替換成壓縮文檔裏的文件!

確保在你做其他任何事情之前,重新創建你剔除的目錄:
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
/proc 權限:文件所有者:root羣組:root 所有者:讀取 執行 羣組:讀取 執行 其它:讀取 執行
/lost+found 權限:文件所有者:root羣組:root 所有者:讀取 寫入 執行 羣組:讀取 執行 其它:讀取 執行
/mnt 權限:文件所有者:root羣組:root 所有者:讀取 寫入 執行 羣組:讀取 執行 其它:讀取 執行
/sys 權限:文件所有者:root羣組:root 所有者:讀取 寫入 執行 羣組:讀取 執行 其它:讀取 執行
當你重啓以後,所以的事情都會和你備份的時候一模一樣。

用戶參照了上面的教程做的備份和恢復,普遍反映:重啓電腦後還是會一直提示用戶名和密碼 輸入以後一閃還是提示用戶名和密碼,反正就是登不進系統。

網絡上有人提到:請教了高手,找到了解決方法,還原後,執行以下命令再重啓,即可解決這個問題:restorecon -Rv /


桌面系統備份實戰

在前面的一些文章中,我反覆提到經常會把系統搞崩潰,所以備份系統就是一件不容忽視的事情。由於Linux系統本身的優越性,系統的備份和還原還是比較容易的。主要表現在以下方面:
Linux系統所有的數據都以文件的形式存在,所以備份就是直接拷貝文件;硬盤分區也被當成文件,所以可以直接克隆硬盤數據。
Linux系統自帶很多實用工具,比如tar、dd、rsync等,備份還原系統不需要購買或下載第三方軟件。
Linux系統在運行時其硬盤上的文件可以直接被覆蓋,所以還原系統的時候不需要另外的引導盤。(當然,系統完全掛掉到無法啓動這種情況還是需要另外的引導盤的。)
備份Linux系統的策略有很多,比如使用dd命令直接克隆硬盤分區:

sudo dd if=/dev/sda1 of=/dev/sdb1

或者,使用tar將硬盤上的文件打包:

tar cvpzf backup.tgz --exclude=/proc --exclude=/mnt --exclude=/sys --exclude=/backup.tgz /

還原系統的命令是:

dd if=/dev/sdb1 of=/dev/sda1

tar xvpfz backup.tgz -C /

但是我最終選擇的是rsync命令。rsync是一個非常優秀的文件同步工具,從它的名字可以看出,它支持遠程同步。當然,在備份我的桌面系統時,只需要用到它的本地同步功能就行了。之所以選擇rsync,是因爲它具有如下優點:
在備份還原過程中,可以保存文件原有的時間、權限、軟硬鏈接等信息;
首次備份時,需要複製所有文件,但是再次備份或還原系統時,只需要複製修改過的文件。

關於rsync的使用方法,其主要參考文檔是man rsync,另外,rsync也可以作爲守護進程運行用來建立文件備份服務器,可以參考文檔man rsyncd.conf。

桌面系統備份實戰

對於我的桌面系統,我選擇的備份策略是使用rsync命令將硬盤上的所有文件(當然要排除/proc和/sys目錄下的內容)複製到U盤上。首先使用df -lh命令查看一下我電腦的系統佔多大空間,如下圖:

從上圖可以看出,根目錄所在的分區佔用了14G,而/boot目錄所在的分區才佔用100多M。其實Linux系統本來不用這麼臃腫,只是因爲我安裝了太多的軟件包,比如一整套的texlive啊什麼的,才佔用了這麼多的空間。不過這都不是事兒,反正現在U盤也便宜,所以找個32G的USB 3.0的U盤來備份我這個系統,肯定是很輕鬆愉快的。

新U盤插到電腦上會被自動識別,使用不帶參數的mount命令可以查看U盤的設備文件和掛載路徑,使用fdisk命令瞭解U盤的大小和分區情況。如下圖:

整個U盤分成一個區我沒什麼意見,不過我不喜歡它的vfat文件系統,萬一碰到超過4G的巨型文件怎麼辦?so,先umount它,然後使用mkfs.ext3爲它重新建立一個文件系統,如下圖:

再把U盤mount起來,掛載的路徑爲/media/youxia/usb。如下圖:

然後,可以開始備份了,我備份的命令是:

sudo rsync -Pa / /media/youxia/usb/backup_20141216 --exclude=/media/* --exclude=/sys/* --exclude=/proc/* --exclude=/mnt/* --exclude=/tmp/*

如下圖:

下圖是備份完成後的效果,可以看到整個備份過程花了59分多鐘,U盤被佔用15G,如下圖:

如果哪天系統再崩潰了的話,只需要使用sudo rsync -Pa /media/youxia/usb/backup_20141216 /即可恢復系統。


最後,網上還流傳這一種方法,就是使用 “再生龍” 備份系統,可以對Linux進行備份。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章