1. 程式人生 > >Ubuntu系統備份、在行動硬碟上恢復系統及問題解決

Ubuntu系統備份、在行動硬碟上恢復系統及問題解決

最近學習python並在自己電腦上安裝了Ubuntu然後廢了九牛二虎之力安裝了很多包以及配置opencv,dlib等,之後想要不要在行動硬碟上直接備份一份系統一方面避免原系統出了問題,另一方面可以帶著行動硬碟說不定也能在別的電腦上使用。遇到了很多問題甚至有一些還沒有解決。

從網上查到了Ubuntu系統的備份方法,我使用的是Ubuntu 16.04,而且同時也有win10,也就是說我安裝的是雙系統,具體的系統備份方法是:

1.開啟終端根使用者許可權:

sudo su

2.輸入你的根使用者密碼後先進入系統根目錄:

cd /

3.下面就可以開始備份了,備份的語句可以參考以下:

tar -cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /
有關以上語句進行一下解釋:

tar 進行備份的程式

c - 新建一個備份文件

v - 可以在螢幕上實時輸出資訊

p - 儲存所有檔案檔案

z - 採用gzip方式進行壓縮

f - 備份檔案存放路徑

--exclude表示將哪些檔案排除在外

備份完成後你的系統備份將會出現在你的系統根目錄下,你可以通過cp指令或mv指令在root許可權下將它複製或剪下到你覺得安全的地方。

注意到的問題: 這裡的備份我更傾向於理解為將系統打包,相當於把我們的Ubuntu系統進行了壓縮,我們可以觀察一下根目錄,其中需要注意的一點是/boot這個資料夾,

由於我安裝的是Ubuntu與Windows雙系統所以我使用了grub管理我的Ubuntu系統引導,而boot資料夾下就存有這部分引導資訊而且也存有本系統的核心。這裡要注意的是,

如果你進行備份時只是想用於本臺機子而且是不更改分割槽表的情況下可以完全備份boot資料夾,

但是如果進行備份後想要恢復在不同的分割槽或者裝置,請注意這部分最好不要備份否則後面恢復系統你會發現grub無法正常引導。另外,也不要備份根目錄下vmlinuz以及initrd.img檔案。

當然,你可以放心的執行上面的備份語句進行備份,但是隻要注意是否是在原本的分割槽進行系統恢復就好了。

下面在一個行動硬碟上進行系統恢復:

1.需要製作一個Ubuntu系統安裝U盤

2.重啟並從此U盤啟動

3.請選擇Ubuntu系統試用模式

4.選擇安裝Ubuntu的那個應用程式並在行動硬碟上進行分割槽並安裝(這裡就將安裝過程省略了。。。)

請注意:執行第5步前如果你備份了/boot資料夾的話,在執行恢復指令之前務必將你新安裝的ubuntu系統的vmlinuz,/etc/fstab,initrd.img

以及/boot資料夾在root許可權下用cp指令複製出來到一個安全的地方記住儲存位置。

5.將你之前的系統備份通過終端在root許可權下複製到你新安裝的系統的根目錄下,並執行以下語句恢復你的資料

tar -xvpzf /media/ubuntu/[你的新系統根目錄所在的分割槽]/backup.tgz -C /media/ubuntu/[你的新系統根目錄所在的分割槽]/

這裡進行一下說明:現在你位於的是usb中的系統,而不管是你的外接裝置還是你機子的硬碟對於這個系統來說都是外接儲存裝置,而Ubuntu系統下外接儲存裝置都會放在/media目錄下的/ubuntu資料夾中,不管你的行動硬碟的每個分割槽還是電腦硬碟的分割槽在裡面都以一個資料夾的方式顯示出來,對於ubuntu的分割槽來說是以UUID的形式命名的

所以你可能看到的資料夾名字是亂碼一樣,那其實是這個分割槽的UUID,而grub也是根據分割槽的UUID來尋找這個系統。

6.當恢復備份結束後,請將你之前複製出來的/boot資料夾,vmlinuz,initrd.img,/etc/fstab檔案複製回他們原來的地方

重啟後你會發現你的系統基本恢復為了原來的樣子

最後再談一下我遇到的問題,我一開始是從網上找了各種備份和恢復的文章,備份時沒有任何問題,在我解壓恢復系統後不只是系統崩潰了而且grub也只能輸入命令列執行,

然後就搜尋了一下Linux系統的啟動流程,發現是系統引導和核心無法找到的問題,一開始想通過grub命令列的Linux指令以及initrd指令去指定核心並啟動但是在執行initrd時報了kernel找不到,後來瞭解到進行ubuntu系統引導的時候其實是用UUID尋找系統目錄的,大家可以在/boot/grub資料夾中找到一個grub.cfg檔案裡面就記錄了你的系統分割槽的一些資訊,你會發現裡面會根據UUID去尋找你的系統分割槽,而我之前備份的檔案中的grub.cfg記錄的是我先前硬碟分割槽的UUID這也是我進行完系統恢復後系統引導失敗的原因。

而且UUID會在你格式化分割槽時重新給分割槽分配一個UUID。

第一次寫博文很多地方寫的不周到但是希望能給你有幫助(主要是為了給自己碼字以後用=-=