ubuntu linux 備份與恢複

來源:互聯網
上載者:User

Ubuntu如何備份和恢複系統
http://wsfei.iteye.com/blog/1100534

在 使用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使用者:

$ sudo su

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

# cd /

下面是我用來備份系統的完整命令:注意,個人使用過程中,覺得–exclude 應該換成--exclude

# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/sys /

我使用的: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”。完整的命令如下:(如果使用這個,應該將–exclude換成--exclude)
# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /

#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檔案做定時備份的操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.