Ubuntu如何備份和恢復系統


Ubuntu如何備份和恢復系統
 

在 使用Ubuntu以前,相信不少人都有過使用Windows系統的經歷。若是你備份過Windows系統,那麼你必定記憶猶新:首先須要找到一個備份工 具(一般都是私有軟件),而後重啓電腦進入備份工具提供的軟件環境,在這裏備份或者恢復Windows系統。Norton Ghost是備份Windows系統時常用的備份工具。 算法

在備份Windows系統的時候你可能想過,我能不能把整個C盤都放到一個ZIP文件裏去呢。這在Windows下是不可能的,由於在Windows中有不少文件在它們運行時是不容許拷貝或覆蓋的,所以你須要專門的備份工具對Windows系統進行特殊處理。 shell

和 備份Windows系統不一樣,若是你要備份Ubuntu系統(或者其它任何Linux系統),你再也不須要像Ghost這類備份工具。事實上,Ghost 這類備份工具對於Linux文件系統的支持很糟糕,例如一些Ghost版本只能完善地支持Ext2文件系統,若是你用它來備份Ext3文件系統,你可能會 丟失一些寶貴的數據。 安全

1. 備份系統 網絡

我該如何備份個人Ubuntu系統呢?很簡單,就像你備份或壓縮其它東西同樣,使用TAR。和Windows不一樣,Linux不會限制root訪問任何東西,你能夠把分區上的全部東西都扔到一個TAR文件裏去! 工具

首先成爲root用戶:
$ sudo su spa

而後進入文件系統的根目錄(固然,若是你不想備份整個文件系統,你也能夠進入你想要備份的目錄,包括遠程目錄或者移動硬盤上的目錄):
# cd / 操作系統

下面是我用來備份系統的完整命令:
# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/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
等等

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


Linux備份策略研究

世界上沒有絕對安全的系統。若是想得到絕對安全的系統,只有不鏈接網絡,不讓管理員以外的人使用,刷卡管制人員進出,使用監視器監視錄像,甚至於不 要開機。可是這是徹底不切實際的,咱們僅能寄望儘可能讓系統能在承擔低風險的狀況下工做,由於任何操做系統都不可能毫無漏洞。那麼怎樣才能讓系統承擔最低的 風險呢?回答因該是在保障系統儘可能安全的基礎上,作好各個系統上的數據備份工做。一旦系統遭受到毀滅性的打擊,可將平時作好的備份數據及時恢復,這樣才能 使被破壞的系統迅速恢復正常,以免沒必要要的損失。 
下面針對Linux操做系統上的數據備份方法發表一下本身的見解。


數據備份種類

總的來講,在Linux操做系統中將備份分爲兩類:系統備份,實現對操做系統和應用程序的備份;用戶備份,實現對用戶文件的備份。在下面咱們會看到,系統備份和用戶備份是不一樣的。

系統備份

系統備份就是對操做系統和應用程序的備份,進行系統備份的緣由是儘可能在系統崩潰之後能快速簡單徹底地恢復系統的運行。進行備份的最有效方法是僅僅備份那些對於系統崩潰後恢復所必需的數據。

Linux系統中不少重要的文件位於/etc目錄之下,如:

/etc/group : 組用戶信息;

/etc/passwd : 包含全部的用戶信息,如密碼,登陸shell等;

/etc/fstab : 配置系統有哪些文件系統;

/etc/inittab : 配置init在不一樣運行級別下分別如何啓動系統;

/etc/hosts : 域名解析的配置信息;

/etc/inetd.conf : 進程控制信息;

/etc/printcap:配置如何與打印機通訊;

/etc/XF86Config:包含XFree86的初始配置;

上面這些重要的配置文件都須要按期的作備份。

不 同的系統可能有不少重要配置文件,能夠看到/etc目錄下的配置文件很是重要。固然,某些程序使用了其餘目錄下的一些文件,可是Linux的基本配置文件 絕大多數都位於/etc目錄下。不少人曾經花費了好長時間才正確的配置了XF86Config文件,想到若是從新再作一遍,就很費時費力。再舉個例子, /etc目錄下的passwd文件,若是誤操做,將此文件更改,或刪除了,則整個系統用戶沒法正常登陸,若是按期或及時的對其備份,遇到上面的狀況後,就 能夠很是快速的恢復。

若是修改了某個程序所使用的配置文件,通常不能將其搬移到其它的地方,由於程序一般在固定的地方尋找配置文件。所以記錄對系統所作的修改也很是重要,不管所作的修改如何小,當系統崩潰時才能輕鬆的恢復系統。

用戶備份

用戶備份不一樣於系統備份,由於用戶的數據變更更加頻繁一些。當備份用戶數據時,只是爲用戶提供一個虛擬的安全網絡空間,合理的放置最近用戶數據文件的備份,當出現任何問題,例如,誤刪除某些文件或者硬盤發生故障時,用戶能夠恢復本身的數據。

用戶備份應該比系統備份更加頻繁,也許天天都須要進行備份,或使用cron程序自動按期運行某個程序的方法來備份數據。

數據備份策略

不 管系統多麼可靠,總會發生一些意想不到的事情,導致系統數據丟失。所以使用備份來保護數據不丟失是一種很是重要的手段,尤爲在系統數據很是重要的時候。經 常進行數據備份可以減小偶然破壞形成的損失,保證系統可以從錯誤中恢復正常運行。備份不該該成爲一個長時間痛苦的事情,但它是做爲系統管理必不可少的工 做,在着手以前進行詳細的考慮和計劃是應該的。

在進行備份以前,首先要選擇合適的備份策略,這將決定什麼時候須要備份,以及出現故障時進行恢復的方式。一般使用的備份方式有三種:

徹底備份: 每隔必定時間就對系統進行一次全面的備份,這樣在備份間隔期間出現數據丟失等問題,可使用上一次的備份數據恢復到前次備份時數據情況。這是最基本的備份 方式,可是每次都須要備份全部的數據,而且每次備份的工做量也很大,須要大量的備份介質,所以這種備份不能進行的太頻繁,只能每隔一段較長時間才進行一次 完整的備份。可是這樣一旦發生數據丟失,只能恢復到上次備份的數據,這期間內更新的數據就有可能丟失。

增量備份: 首先進行一次徹底備份,而後每隔一個較短期進行一次備份,但僅僅備份在這個期間更改的內容。當通過一個較長的時間後再從新進行一次徹底備份,開始前面的 循環過程。因爲只有每一個備份週期進行一次徹底備份,其餘只進行更新數據的備份,所以工做量小,能夠進行頻繁的備份。例如以一個月爲一個週期,一個月進行一 次徹底備份,天天晚上0點進行這一天改變的數據備份。這樣一旦發生數據丟失,首先恢復到前一個徹底備份,而後按日期一個一個恢復天天的備份,就能恢復到前 一天的狀況。這種備份方法比較經濟。

累計備份:這種備份方法與增量備份類似,首先每個月進行一次徹底備 份,而後天天進行一次更新數據的備份。但不一樣在於,增量備份是備份該天更改的數據,而累計備份是備份從上次進行徹底備份後更改的所有數據文件。一旦發生數 據丟失,可使用前一個徹底備份恢復到前一個月的狀態,再使用前一個累計備份恢復到前一天的狀況。這樣作的缺點是每次作累計備份工做的任務比增量備份的工 做量要大,但好處在於,增量備份天天都備份,所以要保存數據備份數量太多,而累計備份則否則,只需保存一個徹底備份和一個累計備份就能夠恢復故障之前的狀 態。另外在進行恢復工做時,增量備份要順序進行屢次備份的恢復,而累計備份只需兩次恢復,所以它的恢復工做相對簡單。

增量備份和累計備份 都能以比較經濟的方式對系統進行備份,在這些不一樣的策略之間進行選擇不但與系統數據更新的方式相關,也依賴於管理員的習慣。一般在系統數據更新不是太頻繁 的話,能夠選用更新備份的方式。可是若是系統數據更新太快,使每一個備份週期後的幾回累計備份的數據量至關大。這時候能夠考慮增量備份或混用累計備份和增量 備份的方式,或者縮短備份週期。

數據備份命令

在Linux系統中經常使用的備份命令一般有下面幾種:

1.使用tar命令

Linux的實用程序tar最初是爲了製做磁帶存檔而設計的(把文件和目錄複製到磁帶中,而後從存檔中提取或恢復文件),而如今的應用中能夠把它用於任何設備,它是數據備份中最經常使用的命令之一。

下面具體介紹tar命令的使用方法:

(1)格式:tar 參數 ......

(2)參數:

c: 建立備份(Create)

v: 表示回顯模式(Verbose),將產生一系列備份的文件列表

f: 指定使用的備份文件,它後面的參數爲輸出的備份文件名

x: 展開備份文件

t: 顯示備份文件的內容

T: 後面跟隨一個文件參數,指定從這個文件中讀取要備份的各個文件的路徑。若是不使用T參數,那麼就須要一個參數,指明進行備份文件和目錄的路徑

Z: 使用壓縮方式建立和解開備份文件,這是GNU的新版tar的功能,須要同時安裝gzip。

例如:

$ tar cvf backup.tar /etc

上 面的命令將/etc下的全部文件打包成tar存檔文件backup.tar。tar的第一個參數「cvf」,是tar的命令參數,「c」告訴tar建立一 個存檔文件;「v」選項迫使tar採用冗長模式,即在存檔時打印每一個文件名;「f」選項告訴tar下一個參數backup.tar是建立的存檔文件名。

下面一行的命令將tar文件backup.tar解開並放到當前工做目錄下。必須說明的是這樣作是有危險的,由於在從tar文件中解開文件時,舊文件將被覆蓋。

$ tar xvf backup.tar

在解開tar文件以前,知道在何處打開文件是很是重要的。例如,假設存檔如下文件:/etc/hosts,/etc/group和/etc/passwd。若是用下述命令:

$ tar cvf backup.tar /etc/hosts /etc/group /etc/passwd

目錄/etc會被加到每一個文件名前。爲了將文件展開到正確位置,須要用下述命令:

$ cd /

$ tar xvf backup.tar

這是由於文件從存檔文件中抽取出路徑名,若是用下述命令存檔文件:

$ cd /etc

$ tar cvf hosts group passwd

這樣目錄名就不存在存檔文件中,所以須要在展開文件以前用「cd /etc」命令進入目錄etc。因而可知,tar文件的建立方式與在何處展開有很大關係。

命令:

$ tar tvf backup.tar

在解開tar文件以前顯示tar文件的索引,用這種方式能夠看到存檔文件中與文件名有關的目錄名,從而在正確位置上展開存檔文件。

2.gzip和compress 命令

與MS-DOS的存檔程序不一樣, tar在存檔過程當中並不壓縮文件。所以,若是存儲兩個1MB的文件,那麼tar文件大小爲2MB,gzip命令用來壓縮文件(被壓縮的文件並不須要是tar格式)。

例如:

$ gzip -9 backup.tar

壓縮backup.tar文件,產生的文件爲backup.tar.gz,開關「-9」告訴gzip用最高的壓縮比。gunzip命令用來解開一個gzip壓縮的文件,用「gzip -d」也能夠達到一樣效果。

例如:

$ gunzip backup.tar.gz

$ gzip -d backup.tar.gz

3. 聯合使用

介紹了這些命令以後,咱們來嘗試組合使用這些命令。爲了壓縮存儲一組文件,能夠用下述命令:

$ tar cvf backup.tar /etc

$ gzip -9 backup.tar

結果是造成文件backup.tar.gz。展開該文件時,用相反的命令:

$ gunzip backup.tar.gz

$ tar xvf backup.tar

tar命令還包括「z」選擇項,它會自動採用gzip壓縮算法來聯機壓縮/解壓文件。例如,下列命令:

$ tar cvfz backup.tar.gz /etc

上面一行的命令等價於:

$ tar cvf backup.tar /etc

$ gzip backup.tar

而命令:

$ tar xvfz backup.tar.Z

能夠用來代替下述命令:

$ uncompress backup.tar.Z

$ tar xvf backup.tar

案例實驗

案例:使用tar進行備份。

選定了備份方式以後,可使用tar、cpio、dump等備份工具軟件將數據備份到磁帶上。對於通常的備份,使用tar就足夠了。tar可以建立備份文檔,可以備份到磁帶上或者產生一個文件,如:

$ tar cvf root.tar /root

將/root目錄下的全部文檔備份到root.tar文件中,root.tar爲指定輸出的備份文件,/roo t指出要作備份的目錄。若是要備份到磁帶上,將輸出的備份文件指定爲磁帶設備文件便可:

$ tar cvf /dev/rmt/0h /root

若是設置了環境變量TAPE,則能夠不使用選項「f」指定輸出磁帶設備名字:

$ TAPE=/dev/rmt/0h; export TAPE

$ tar cv /root

要進行增量備份,必須找出哪些文件在這個期間進行更新。這個任務能夠由命令find來完成,例如查找過去七天更改的文件,並使用tar的「-T」參數制定進行備份的文件,命令以下:

$ find / -mtime -7 -print > /tmp/filelist

$ tar -c -T /tmp/filelist -f /dev/rmt/0h

由 於要使用find來找出須要備份的文件列表,那麼就須要利用文件的修改時間進行查詢,須要使用「-mtime」 參數。另外一個更有用的參數是「-newer」,能夠查找出全部比某個文件更新的文件,因爲備份是週期進行的,所以能夠在徹底備份以後生成一個標記文件,那 麼全部比這個文件新的文件都須要進行更新備份。

$ find / -newer full_back_tag_file -print > /tmp /filelist

進 行數據備份須要按期執行,不能徹底依賴於管理員手工進行備份。備份也應該選擇在系統比較空閒時進行,以避免影響系統的正常處理任務。一般能夠選擇半夜 0:00點以後進行備份,這樣更不能將這個任務由管理員手工完成了。但Linux提供了定時服務cron程序,可以在肯定的時間中執行一系列任務,所以數 據備份必須和cron合做來完成,或者使用/etc下的daily,weekly,monthly文件作定時備份的操做

相關文章
相關標籤/搜索