10個方法助你輕鬆完成 Linux 系統恢復

51CTO發表於2016-04-09

你是不是經常希望做過的每一件事情都加上一個“撤銷”按鈕呢?

我就是這樣的人,實際上有很多次,我發現自己竟然在紙上寫錯字的時候試圖去按“Ctrl+Z”。

10個方法助你輕鬆完成 Linux 系統恢復

這也就是為什麼系統恢復功能會讓人感覺如此神奇。你可以很快地重新回到工作中去,就像什麼事情都沒有發生一樣,也不用去管造成系統故障的原因。這也就是為什麼系統恢復功能在那些從Windows轉向Linux的使用者中一直排名靠前。有很多人甚至沮喪地認為,正因為系統恢復功能的缺乏,Linux永遠不會做到Windows那樣好。

實際上這些使用者真的應該好好讀一讀手冊了,或者這篇文章也能夠幫到你。因為這裡我將會給你介紹一些在Linux中完成系統恢復功能的幾個工具。確實,這些工具並不是預設安裝在Linux中的,但是在Windows 10裡也沒有預設的系統恢復功能。在使用過這些工具之後,你很可能會感覺到這並不像在Windows中做系統恢復,所以我需要重申在Linux中系統恢復的工作方式與Windows中是有本質不同的。

10個方法助你輕鬆完成 Linux 系統恢復

Windows中的系統恢復功能

Windows家族最初的系統恢復功能要回溯到2000年的Windows ME版本,當時還只能恢復系統檔案和登錄檔,而且並不穩定。在Windows XP和Vista中系統恢復的效能得到了很大的提高。也是從那時起,系統恢復開始依賴於一個叫做硬碟快照服務(Volume Snapshot Service)的系統服務功能,能夠自動建立系統快照–包括正在使用的檔案–然後將這些檔案轉換為可恢復的節點檔案。

新的方式給使用者提供了更多的自定義功能,比如使用者可以為快照分配磁碟空間,可以選擇監視哪些檔案目錄等等。但是還是有很多的限制,比如只有NTFS格式的分割槽具有系統恢復快照功能,而且在Windows 8版本之前,快照並不能長期儲存。

Windows的每次版本更新都帶來了混亂,比如Vista的家庭版中沒有提供恢復從前的系統快照的使用者介面,而Windows 8出現了不相容之前版本的系統快照的問題,最終Windows 10索性禁用了系統恢復功能,讓使用者手動啟用與操作,這麼看起來這項決定是有意而為。

好了,不再說關於Windows的事了,還是來看看在Linux中我們應該怎麼做吧!

Linux系統恢復的工作原理是什麼

呃,實際上這並不是一項系統功能,至少不應該在名字裡帶上“系統”這兩個字,因為你不會在任何一個Linux系統發行版的系統選單中找到所謂的系統恢復(System Restore)功能。你要做的是找到一個合適的應用程式並安裝才可以。絕大多數的系統恢復應用程式和Windows中系統恢復功能的工作原理是相同的,在特定的時間節點為你的系統建立快照檔案,然後在系統出現問題的時候,允許你回滾到選定的時間點。

在介紹這些應用程式之前,讓我們先簡單的瞭解一下系統快照究竟是什麼?

系統快照與備份的區別

拋開這兩者的名字不同,總的來說,備份(Backup)是指將檔案複製出一份副本並且儲存到另一個位置。備份很少會將整個磁碟備份,那樣做通常是叫做磁碟映象或者是磁碟克隆,這種型別的備份實際上是對整個磁碟做了一個映象,包括使用者資料,作業系統,啟動分割槽等等。磁碟映象可以被用在裸機恢復工作中。這時候你就可以在不需要安裝作業系統情況下,將一塊硬碟的全部內容複製到另一臺電腦上。

而系統快照(Snapshot)則是在特定的時間節點上儲存檔案系統的狀態,並且儲存在與檔案系統相同的儲存裝置上。通常系統快照中會包含所有的目錄與檔案資訊,或者至少是儲存了作業系統所需要的檔案資訊。

將快照和檔案系統儲存在同一個位置就實現了回滾的可能性,同樣也有利於節省磁碟空間。在這種情況下,每新建一個系統快照並不需要將整個檔案系統的狀態全部儲存下來。形象地說,系統快照就像是一個不斷增長的備份過程,每次只是儲存和上次不同的資訊變化,這也就意味著每一個系統快照都要依賴於上一次系統快照,這樣才能完全完成系統恢復工作。而與之相反的是,一個完整的磁碟備份或者是磁碟映象則與其他的備份檔案相互獨立,可以單獨完成系統恢復工作。

10個方法助你輕鬆完成 Linux 系統恢復

系統快照可能會碰到的問題是它們對於硬碟故障非常的脆弱。如果你的硬碟受到了嚴重的物理損傷,那麼很可能你的系統快照就無法幫助你恢復系統了。為了防止這一點,我們建議在安裝與設定好你的Linux系統之後立即做一份系統快照,然後把它單獨複製到另外的儲存裝置中。

儲存系統快照

在Linux中有一些應用程式可以幫助你儲存系統快照。大多數應用程式都是針對於新手的,並不需要高階的Linux操作技巧。我們在這裡挑選了一些,你可以從中選擇適合自己的應用。

TimeShift

TimeShift提供了一個非常簡潔的圖形使用者介面,你也可以直接在終端輸入命令使用它。預設情況下。TimeShift並不會包含使用者的個人檔案,但你可以通過自定義將特殊的目錄新增到快照中去。Ubuntu及其分支的使用者可以從開發者的PPA獲取TimeShift:

sudo apt-add-repository ppa:teejee2008/ppa 
sudo apt-get update 
sudo apt-get install timeshift

其他版本的使用者可以下載安裝檔案並在命令列終端執行:

./timeshift-latest-amd.64.run

TimeShift還提供了專門針對BTRFS檔案系統的版本,可以支援原生的BTRFS系統快照功能。

工作方式

TimeShift能夠幫助你隨時完成快照工作,或者你也可以設定讓TimeShift自動建立快照。你可以安排任務計劃,每小時、每天、每週或者每個月進行快照,也可以設定清除這些快照的時間。TimeShift有一個特殊的選項叫做重啟快照,用來在每次系統重啟之後建立一個新的快照檔案。

10個方法助你輕鬆完成 Linux 系統恢復

TimeShift從快照中進行系統恢復是一項非常簡單直接的工作,只要選擇快照檔案並且告訴它應該儲存的位置就可以了。TimeShift提供了將快照恢復到外設的選項,克隆功能能夠直接將現有系統狀態複製到另一個裝置中,這在將你的作業系統遷移到另一臺新電腦時非常方便,因為你不再需要從頭開始安裝各種功能和應用。

10個方法助你輕鬆完成 Linux 系統恢復

在恢復快照之前,TimeShift會詢問你是不是需要儲存現有的應用設定,並且讓你選擇儲存哪一個。請記住TimeShift需要GRUB 2啟動進入快照恢復。

cronopete

如果你認為TimeShift的操作已經足夠簡單的話,那麼Cronopete甚至更加簡單,至少從外觀上看來是這樣的。Cronopete自稱為OS X的時間機器,與TimeShift工作起來稍有不同。Cronopete為Ubuntu,Debian和Fedora提供了包檔案,Arch Linux使用者可以在AUR中找到它。

10個方法助你輕鬆完成 Linux 系統恢復

工作方式

與本文中介紹的其他應用程式不同,Cronopete將備份與快照功能捆綁在一起,並且要求你將快照儲存在外部裝置上。預設情況下,它會每個小時都檢查一遍你的檔案變化,但是當然可以在設定中改變這個時間間隔。如果某個檔案並沒有發生變化,那麼Cronopete將對這個檔案只進行一個硬連結而並不複製這份檔案,這會幫助節省磁碟空間。

10個方法助你輕鬆完成 Linux 系統恢復

Cronopete的檔案恢復可能是它最酷的功能,好像真的能幫助你“穿越時間”,也就是說,視覺化的瀏覽所有儲存版本的檔案與資料夾。想要恢復哪一個檔案,只需要選上它,然後點選恢復就可以了,這個檔案就會從外部的儲存裝置中複製到你現有的系統中來。當然這裡你可能也猜測到了,Cronopete對於全系統恢復並不十分具有意義,但是如果你想要儲存單獨檔案的多個版本,那麼它是一個很好的選擇。

Back In Time

Back In Time的使用者介面看起來非常友好,能夠吸引住Linux新手。它的設定對話方塊中提供了非常精細的操作控制元件,使用者介面看上去就像是一個檔案管理器一樣,在這裡你可以閱覽所有的快照,瀏覽快照中的檔案,以及恢復選定的檔案與資料夾。

10個方法助你輕鬆完成 Linux 系統恢復

Ubuntu使用者可以從PPA中安裝Back In Time:

sudo add-apt-repository ppa:bit-team/stable 
sudo apt-get update 
sudo apt-get install backintime-qt4

有些發行版會在自己的資源庫中提供Back In Time,如果你的發行版沒有的話,也總可以在網上找到原始碼並且下載安裝。

工作方式

Back In Time會對那些你選擇的目錄建立快照,但是隻會恢復那些擁有寫許可權的目錄。你可以對快照進行加密並且儲存在網路裝置、外部硬碟或者是本地的檔案系統中。Back In Time只會對那些改變過的檔案進行更新。在設定>選項標籤中,你可以選擇在沒有變化發生的時候禁用快照。

Back In Time的快照時間根據計劃設定,每天、每週、每個月或者是每天的某個或某幾個時間段,或者是每次重啟之後。你可以在主工具欄的選單中自己更改計劃時間。

10個方法助你輕鬆完成 Linux 系統恢復

與Cronopete相似,Back In Time更加適合於基於資料夾或者是基於檔案的回滾操作,但是如果你想對整個檔案系統進行回滾也是同樣可行的。恢復一個快照相當簡單,只要選擇它,並且選擇在哪裡進行恢復就可以了,取決於你是隻想恢復幾個資料夾還是對整個系統進行恢復。

Systemback

Systemback的介面很小巧,但是功能卻非常強大。但不幸的是只有Debian和Ubuntu及其分支的使用者可以使用,而沒有提供其他Linux發行版的安裝檔案。Systemback可以通過開發者PPA安裝:

sudo add-apt-repository ppa:nemh/systemback 
sudo apt-get update 
sudo apt-get install systemback

工作方式

Systemback並不僅僅是另一個快照工具。它可以把你現在的系統轉變為一張live CD或DVD,這樣就可以直接在另一臺電腦上啟動了。它可以修復或重灌GRUB 2啟動器以及修復fstab檔案,當然,Systemback的主要用途還是用於系統快照。

10個方法助你輕鬆完成 Linux 系統恢復

Systemback將快照的總數量限制在10個以內。使用者擁有刪除快照的許可權。快照的功能可以選擇為遞增,也就是隻複製被改變過的檔案,而將其他的檔案以硬連結的形式儲存。但是在設定對話方塊中,你可以禁用這個功能。在恢復檔案的時候,你可以選擇執行全系統恢復,或者只是複製關鍵的系統檔案。個人資料比如照片與文件並不會被包含在快照中,但是你可以在建立>包含使用者資料的選項中通過自定義操作將它們轉移到live CD中。

10個方法助你輕鬆完成 Linux 系統恢復

Systemback允許使用者自定義自動快照的計劃,但你也將這個選項關閉來手動設定恢復點。需要注意的是Systemback並不支援NTFS檔案系統,因此不能對NTFS系統分割槽進行快照或者是恢復操作。

Snapper

Snapper和openSUSE的關係非常密切。在其他Linux版本上也許能夠安裝Snapper,但是並不一定能正常工作了。在openSUSE中安裝Snapper的最簡單方法是將它安裝在BTRFS分割槽上,這樣做Snapper就能夠自動安裝與配置。你可以使用命令列工具來操作Snapper,或者通過YaST工具,此外還有另一種替代方案snapper-GUI。

工作方式

Snapper能夠建立幾種不同型別的快照,比如在安裝新的應用程式之前與之後建立快照。通過這種方式你可以將快照進行對比,並且更有效的進行系統恢復。Snapper會為快照自動建立時間計劃,你當然也可以把這個功能禁用掉。在Snapper中,快照是存放在與系統相同的分割槽中,因此它們會不斷長大,要記得隨時檢查自己的硬碟容量。

預設情況下,Snapper只對根分割槽建立快照。如果想要包含其他分割槽和BTRFS副磁碟卷,你就需要為每一個專案建立一個配置,這必須在命令列終端中完成,你需要以root許可權執行下面的命令:

snapper -c CONFIGNAME create-config /PATH

在這裡-c代表著配置“configure”,CONFIGNAME是你為這個配置所取的名稱,/PATH則是分割槽或是副磁碟卷的位置,例如:

snapper -c home create-config /home

你可以用下面的命令檢視當前的配置:

snapper list-configs

所有的配置檔案都儲存在/etc/snapper/configs目錄。在這裡,你可以用一個常用的文字編輯器來修改它們,例如你可以禁用每小時建立快照的功能,啟用自動刪除快照的功能,手動設定可儲存舊快照的數量。

在YaST Snapper模式中,你可以建立並對比快照進行系統回滾操作,或者將一個檔案或者其他一些被選擇的檔案恢復到以前的版本。

10個方法助你輕鬆完成 Linux 系統恢復

怎樣備份與恢復已安裝的應用程式

瞭解了怎樣對整個作業系統進行恢復之後,你可能想知道怎樣恢復那些已經安裝的應用軟體。這在系統新版升級或重灌系統的情況下很常見。幸運的是已經有一些工具提供了應用程式遷移的功能,而且使用起來非常方便。

Aptik

首先我要提到的是Aptik,它是由TimeShift的開發者建立的應用程式備份工具。

10個方法助你輕鬆完成 Linux 系統恢復

Aptik只能用於基於Ubuntu的發行版,你可以直接從開發者PPA安裝:

sudo apt-add-repository ppa:teejee2008/ppa 
sudo apt-get update 
sudo apt-get install aptik

Aptik能夠以列表的形式輸出系統現有的已安裝的包以及所使用的庫以及下載的包檔案。此外還有用於匯出應用程式設定、桌面主題和圖示集的選項。Aptik會根據安裝型別對這些包進行分類,例如分為作業系統預裝、使用者自主安裝、自動安裝的依賴與從.deb檔案安裝等等。對於.deb檔案你可以將它們拖拽到列表中並且包含在備份檔案裡。備份可以儲存在任何位置,如果想把它們提取到一個新安裝的發行版中,只需要先安裝Aptik,然後在主視窗中選擇備份並進行恢復即可。

10個方法助你輕鬆完成 Linux 系統恢復

Linux Mint

Linux Mint的使用者可以選擇Mint備份工具,功能幾乎與Aptik一模一樣。除了恢復已安裝的應用程式之外,這個工具還可以對所選定的資料夾及其許可權執行快速備份。

10個方法助你輕鬆完成 Linux 系統恢復

Arch Linux

Arch Linux的使用者可以使用Backpac來備份與恢復應用程式。Backpac可以建立手動安裝包的列表檔案,也可以按照你的選擇單獨備份檔案。使用Backpac恢復系統狀態會重新安裝所輸出的包,刪除掉快照中並不包含的檔案,並且會用之前輸出的版本覆蓋系統檔案。

dpkg

當然,你可以不使用任何一個第三方工具來完成這樣的操作。在包管理系統中提供了這樣的工具。在基於dpkg的系統中,你可以使用下面的操作來輸出一個已安裝應用的列表檔案:

dpkg --get-selections > /home/yourusername/apps.txt

然後,將這個txt檔案與庫資訊從/etc/apt/sources.d/目錄與/etc/apt/sources.list檔案複製到新的系統中。使用如下命令列並提供正確的檔案路徑就可以將備份的應用遷移到新的系統中:

dpkg --set-selections < /path/to/apps.txt 
sudo apt-get update 
sudo apt-get dselect-upgrade

有些圖形化的包管理工具例如Synaptic能夠提供圖形化的使用者介面,用來輸出與匯入已經安裝的應用程式的列表,不需要使用終端命令列的形式來操作。

10個方法助你輕鬆完成 Linux 系統恢復

高階系統回滾解決方案

如果上面建議的這些應用你並不認為合適,那麼我們還有其他的解決方案。我在這裡將它們稱為“高階”並不意味著這些方案非常複雜,而是說它們可能並不是新手使用者的第一選擇。

Rsnapshot

如果你想在命令列終端使用一種極簡而快速的方法進行快照操作,那麼可以試一下Rsnapshot。你可以在絕大多數Linux發行版的資源庫中找到它。Rsnapshot的所有設定都在/etc/rsnapshot.conf這個檔案中。你可以開啟這個檔案,自定義快照時間表,設定何時刪除舊的快照,以及需要包含哪些檔案與資料夾。當你設定完畢之後,最好使用下面兩個命令來做一下測試:

rsnapshot configtest 
rsnapshot -t hourly

這樣可以保證你的所有設定都正常啟用。請記住修改設定檔案時需要在兩個功能選項中使用一個tab符進行分割而並不是空格,因此不要用空格鍵移動這些引數。Rsnapshot沒有自動恢復功能,所以你只能從選定的快照中手動複製檔案。

Obnam

Obnam與Rsnapshot非常相似,另外還提供了一些有趣的功能。它可以先建立一個全系統備份,然後逐漸生成包含新的或是改變過的檔案的快照。你可以對快照進行加密與自動解密。Obnam在進行系統恢復時的操作也是相似的,提供命令,並且讓你選擇儲存的位置。

10個方法助你輕鬆完成 Linux 系統恢復

你可以設定或是修改自定義路徑,將快照存放在伺服器上或者是其他遠端裝置上。Obnam提供的官方手冊是一項很了不起的工作,清楚的解釋了所有的功能操作。

LVM Snapshots

如果系統中將會存放一些重要的資料,那麼一定要事先考慮好備份與恢復的方法。如果你正在安裝與設定Linux系統的話,那麼值得考慮將LVM(Logical Volume Manager)作為硬碟的管理工具。

10個方法助你輕鬆完成 Linux 系統恢復

準確的說,LVM並不算是一個應用程式,它在Linux核心中提供了內建的快照功能,可以將快照安裝到任何其他磁碟或分割槽,合併若干個快照,並還原它們來解決系統問題。或者你可以使用Linux核心模組dattobd支援對執行中的系統進行增量快照,這樣無需解除安裝分割槽或重新啟動計算機。

總結

正如你所看到的,有很多種選擇可以在Linux中獲得系統恢復功能,然而你會發現它們在技術上是非常相似的,那麼有沒有更好的方法來代替現有的系統恢復功能呢?也許在未來隨著這些應用程式的不斷髮展將會出現更好的方法,或者是對這些現有的工具更有效的進行組合應用,這些都需要使用者們不斷進行探索發掘。

相關文章