1. 程式人生 > >Ubuntu系統備份和還原,從此避免系統重灌

Ubuntu系統備份和還原,從此避免系統重灌

大學開始慢慢接觸Linux系統,從開始的CentOS到現在的Ubuntu(也稱烏班圖:“來自南部非洲班圖語“),傳遞著”我的存在是因為大家的存在”的價值觀。Linux的哲學思想深深吸引著我————“一切皆檔案”。

身邊好多朋友也在用Ubuntu,都說好用,很炫酷,但也易崩潰。這個問題也讓我頭疼。我重灌系統不下三次了,每次最擔心的就是資料丟失。用的最久的一次是1年多,還挺自豪,算給面子了~.~

遇到問題,就要著手解決問題。畢竟重灌系統真的心塞。下面我要先說說我的想法,當然你也可以跳過這一部分,直接看下面的操作方法。

面臨這個問題,我的第一個想法就是,系統備份。類似與VMware下的快照一樣,可以給Ubuntu系統做個備份,儲存下來以備不時之需。有人會問,系統都崩潰了,備本份檔案怎麼用?對於這個問題,關於儲存方面我想到的是雲端儲存技術,畢竟現在雲服務無處不在。實在不行將備份檔案拷貝到U盤。關於如何運用備份檔案恢復系統的方面我沒有什麼建議,對這方面不太懂。難道是類似於資料庫的“事物回滾”!

下面就分享下我搜集到的方法吧,基本可以滿足要求。

系統備份

linux秉承一切皆檔案的思想,系統備份就相當於把整個/(根目錄)所有檔案打包壓縮儲存。

備份前先切換到root使用者,避免許可權問題,然後切換到/(根目錄)

tar -cvpzf /media/Disk/myDisk/[email protected]`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --
exclude=/run /

下面解釋一下上面這條命令。tar就是一個打包命令。
* /media/Disk/myDisk/[email protected] +%Y-%m+%d.tar.gz

這個是備份文件的存放路徑,我的行動硬碟名字叫myDisk,掛載在/media/Disk目錄下,[email protected] +%Y-%m+%d.tar.gz是我備份檔案的名字,這裡用了一個shell命令date +%Y-%m+%d用於獲取當前時間,因為備份嘛,註明時間戳還是有必要的,然後.tar.gz是說明這個檔案是用tar進行打包,gzip進行壓縮的。所以要根據你自己情況換為你自己的備份檔案目錄和檔名。

引數:
-c: 新建一個備份文件
-v: 顯示詳細資訊
-p: 儲存許可權,並應用到所有檔案
-z: 用gzip壓縮備份文件,減小空間
-f: 指定備份檔案的路徑
–exclude: 排除指定目錄,不進行備份

Note: 注意–exclude引數,接下來談談那些目錄沒有備份,以及為什麼不備份。

我的ubuntu系統,共有四個分割槽,分別是:/、/home、/boot、swap。

  • 非常建議系統備份的時候按照分割槽進行分別備份,並且也不建議安裝系統的時候只給系統分一個分割槽。有四個分割槽的好處是,一般系統壞了都是/分割槽的問題,/home沒什麼關係,所以這種情況,我可以只還原/分割槽,其他分割槽完全可以不用動,系統就可以恢復,會節省很多時間。

  • 另外,為了保險起見,也可以對/home和/boot備份,但是備份頻率完全沒必要和/分割槽一樣高。比如/分割槽每週備份一次,那/home和/boot完全可以一個月備份一次,因為這兩個分割槽出問題的概率真的很小,而且變動也不會太頻繁。

  • 請注意,如果沒有把/home或者/boot目錄單獨分一個區,一定不要加–exclude=/home或–exclude=/boot引數!!!

/proc:一個虛擬檔案系統,系統執行的每一個程序都會自動在這個目錄下面建立一個程序目錄。既然是系統自動建立,也就沒必要備份的必要了。
/tmp:一個臨時資料夾,系統的一些臨時檔案會放在這裡。
/lost+found:系統發生錯誤時(比如非法關機),可以在這裡找回一些丟失檔案。
/media:多媒體掛載點,像u盤、行動硬碟、windons分割槽等都會自動掛載到這個目錄下。
/mnt:臨時掛載點,你可以自己掛載一些檔案系統到這裡。
/run:系統從啟動以來產生的一些資訊檔案。
/home:使用者家目錄,存放使用者個人檔案和應用程式。
/boot:和系統啟動相關的檔案,像grub相關檔案都放在這裡,這個目錄很重要!

我再次強調一次,/home和/boot目錄我實際也是做了備份的,備份命令和上面差不多,當然你也可以排除一些目錄不進行備份,像我/home下面的虛擬機器檔案,太佔空間了。

tar -cvpzf /media/Disk/my_Disk/ubuntu_home_backup@`date +%Y-%m-%d`.tar.gz /home
tar -cvpzf /media/Disk/myDisk/[email protected]`date +%Y-%m-%d`.tar.gz /boot

最後還要提一下就是,有可能備份到最後系統會提示”tar: 由於前次錯誤,將以上次的錯誤狀態退出”,這個警告可以忽略,沒什麼影響的。

系統還原

系統備份的意義就在於系統哪天發生意外時可以系統還原拯救回來

這裡有兩種還原方式,如果你係統出問題了,但是還可以進入終端,那就可以直接解壓備份檔案進行還原。但是如果你連繫統都不能登入了,就要使用LiveCD(U盤啟動盤)進行還原了。

  1. 直接操作
    操作前切換到root,並且換到/根目錄。
tar -xvpzf /media/Disk/myDisk/[email protected]2016-6-6.tar.gz -C /
  1. LiveCD
    操作之前請確保你已經有一個製作好的ubuntu U盤啟動盤。進入系統後,開啟終端還是先切換到root。
mkdir /mnt/sys
mount /dev/sdaX /mnt/sys
tar -xvpzf /media/myDisk/ubuntu_boot_backup@2016-6-6.tar.gz -C /mnt/sys

注意先建立一個臨時目錄用於掛載你的/根目錄分割槽,sdaX代表你的/根目錄分割槽,如果不知道就用fdisk -l檢視一下,另外如果你的行動硬碟沒有被自動掛載,你也需要手動建立一個臨時目錄進行掛載。

Note:因為 tar還原是隻會覆蓋相同的檔案,但是這種方法只是恢復備份時的檔案,就是說如果某些檔案丟失或損壞了,這樣可以恢復修復這些檔案,但不能刪除自備份到恢復前這期間所生成的其它檔案,說白了就是假如你備份系統時有1234這四個檔案,如果三天後,由於某些原因變成了1234’5(4改變了),你恢復後,就會變成12345,其中4’恢復成備份時的檔案,5保留。所以大家要是想徹底還原成備份時候的樣子最好徹底刪除根目錄下的所有檔案,然後再還原,這樣就可以還原成備份時的樣子了。
刪除整個檔案系統,比如執行命令rm -fr /*,那麼你還原系統後一定要把你之前沒有備份的目錄手動建立,不然重啟系統是有問題的。

mkdir proc tmp lost+found media mnt run