1. 程式人生 > >linux系統的備份與還原

linux系統的備份與還原

在 使用Ubuntu之前,相信很多人都有過使用Windows系統的經歷。如果你備份過Windows系統,那麼你一定記憶猶新:首先需要找到一個備份工 具(通常都是私有軟體),然後重啟電腦進入備份工具提供的軟體環境,在這裡備份或者恢復Windows系統。Norton Ghost是備份Windows系統時經常使用的備份工具。

在備份Windows系統的時候你可能想過,我能不能把整個C盤都放到一個ZIP檔案裡去呢。這在Windows下是不可能的,因為在Windows中有很多檔案在它們執行時是不允許拷貝或覆蓋的,因此你需要專門的備份工具對Windows系統進行特殊處理。

和 備份Windows系統不同,如果你要備份Ubuntu系統(或者其它任何Linux系統),你不再需要像Ghost這類備份工具。事實上,Ghost 這類備份工具對於Linux檔案系統的支援很糟糕,例如一些Ghost版本只能完善地支援Ext2檔案系統,如果你用它來備份Ext3檔案系統,你可能會 丟失一些寶貴的資料。

1. 備份系統

我該如何備份我的Ubuntu系統呢?很簡單,就像你備份或壓縮其它東西一樣,使用TAR。和Windows不同,Linux不會限制root訪問任何東西,你可以把分割槽上的所有東西都扔到一個TAR檔案裡去!

首先成為root使用者:

$  su

然後進入檔案系統的根目錄(當然,如果你不想備份整個檔案系統,你也可以進入你想要備份的目錄,包括遠端目錄或者行動硬碟上的目錄):

# cd /

下面是我用來備份系統的完整命令:

作為一個菜鳥,在接觸Linux的過程中,經常會導致Linux出現各種錯誤,可恢復的或者是不可恢復的(至少在目前的情況下),所以,對於我而言,Linux的備份和還原就尤為的重要。

1.備份

a)可以直接通過tar對整個檔案系統('/‘)進行備份,但是有幾點需要注意:

i. 不能備份以下幾個檔案(目錄)

1. 當前壓縮檔案

2. /proc資料夾

3. /lost+found資料夾

4. /mnt資料夾i.

5. /sys資料夾

6. /media資料夾

b)所以,命令為:

 

tar cvpzf backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.gz --exclude=/mnt --exclude=/sys --exclude=/media /

1.注意:p選項代表儲存當前許可權

 

2.還原

a) Linux可以再正在遠行的系統中還原系統,如果當前啟動無法啟動,可以通過live cd來啟動並執行恢復操作

b) 操作如下

tar xcpfz backup.tar.gz -C /

c) 需要額外建立目錄

1. mkdir proc

2. mkdir lost+found

3. mkdir mnt

4. mkdir sys

讓我們來簡單看一下這個命令:

“tar”當然就是我們備份系統所使用的程式了。

“cvpfz”是tar的選項,意思是“建立檔案檔案”、“保持許可權”(保留所有東西原來的許可權)、“使用gzip來減小檔案尺寸”。

“backup.gz”是我們將要得到的檔案檔案的檔名。

“/”是我們要備份的目錄,在這裡是整個檔案系統。

在 檔案檔名“backup.gz”和要備份的目錄名“/”之間給出了備份時必須排除在外的目錄。有些目錄是無用的,例如“/proc”、“/lost+ found”、“/sys”。當然,“backup.gz”這個檔案檔案本身必須排除在外,否則你可能會得到一些超出常理的結果。如果不把“/mnt”排 除在外,那麼掛載在“/mnt”上的其它分割槽也會被備份。另外需要確認一下“/media”上沒有掛載任何東西(例如光碟、行動硬碟),如果有掛載東西, 必須把“/media”也排除在外。

有人可能會建議你把“/dev”目錄排除在外,但是我認為這樣做很不妥,具體原因這裡就不討論了。

執行備份命令之前請再確認一下你所鍵入的命令是不是你想要的。執行備份命令可能需要一段不短的時間。

備份完成後,在檔案系統的根目錄將生成一個名為“backup.tgz”的檔案,它的尺寸有可能非常大。現在你可以把它燒錄到DVD上或者放到你認為安全的地方去。

在備份命令結束時你可能會看到這樣一個提示:’tar: Error exit delayed from previous errors’,多數情況下你可以忽略它。

你還可以用Bzip2來壓縮檔案,Bzip2比gzip的壓縮率高,但是速度慢一些。如果壓縮率對你來說很重要,那麼你應該使用Bzip2,用“j”代替命令中的“z”,並且給檔案檔案一個正確的副檔名“bz2”。完整的命令如下:

# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /

2. 恢復系統

在進行恢復系統的操作時一定要小心!如果你不清楚自己在做什麼,那麼你有可能把重要的資料弄丟,請務必小心!

接著上面的例子。切換到root使用者,並把檔案“backup.tgz”拷貝到分割槽的根目錄下。

在 Linux中有一件很美妙的事情,就是你可以在一個執行的系統中恢復系統,而不需要用boot-cd來專門引導。當然,如果你的系統已經掛掉不能啟動了, 你可以用Live CD來啟動,效果是一樣的。你還可以用一個命令把Linux系統中的所有檔案幹掉,當然在這裡我不打算給出這個命令!

使用下面的命令來恢復系統:

# tar xvpfz backup.tgz -C /

如果你的檔案檔案是使用Bzip2壓縮的,應該用:

# tar xvpfj backup.tar.bz2 -C /

注意:上面的命令會用檔案檔案中的檔案覆蓋分割槽上的所有檔案。

執行恢復命令之前請再確認一下你所鍵入的命令是不是你想要的,執行恢復命令可能需要一段不短的時間。

恢復命令結束時,你的工作還沒完成,別忘了重新建立那些在備份時被排除在外的目錄:

# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys

等等

當你重啟電腦,你會發現一切東西恢復到你建立備份時的樣子了!