前言:網上的教程很多都不夠詳細,對初學者而言配置環境不易,因此系統的備份與還原真心很重要!!這幾天折騰了很多方案,用tar備份還原的優點是沒有什么限制,就是耗時久一點點,它可以完全幫你還原一個一模一樣的備份節點,但是備份還原過程比較艱辛,一定要謹慎跟着教程走,才有可能保證你一次性成功,否則那就多擼幾次,就當熟悉一下ubuntu系統結構吧!!!
·····················································
本文所使用資源(待補充,適用任何Ubuntu系統)
·····················································
1、ubuntu系統安裝教程
參考鏈接:https://jingyan.baidu.com/article/3c48dd348bc005e10be358eb.html
可能會遇到的問題及注意事項(安裝前一定要看!!!):
1.1、Ubuntu16.04.4LTS的系統啟動盤制作
(需要注意寫入硬盤映像之前)
1、格式化
2、寫入方式:USB-ZIP+ 便捷啟動:寫入新的硬盤主引導記錄(MBR)USB-ZIP+
(或寫入方式:USB-HDD+便捷啟動:寫入新的硬盤主引導記錄(MBR)-USB-HDD+)
1.2、關於分區大小設置問題
一般建議創建4個基礎分區,包括主分區(/),home分區(/home),交換空間(swap),以及boot分區(boot)
以固態硬盤120GB空間為例:
主分區(/)建議至少分40GB,因為很多程序需要安裝在這里,例如一個matlab就10GB+了(當然你也選擇安裝在其他盤),不過,切記主分區一定要越大越好,否則空間不夠那就很麻煩了!!!后期實在不夠可以考慮文件夾映射(參考鏈接:https://forum.ubuntu.com.cn/viewtopic.php?f=86&t=80493)
交換空間(swap)建議2GB。一般類似於“虛擬內存”,具體解釋是:“當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。”(參考鏈接:https://www.jb51.net/article/133492.htm)
boot分區(boot)存放啟動引導文件,一般建議給1GB ~ 2GB吧(硬盤充裕情況下,不充裕的話給200MB也足夠了),但有時候因為內核升級又沒有刪掉原有的啟動文件可能會超過512MB。所以現在有種說法就是不要再獨立分‘boot'了,如果是Ubuntu默認安裝模式,只有兩個分區,即主分區(/)和home分區(/home)。
home分區(/home)建議剩余的空間都給home,至少40GB以上吧,這個分區是你數據、代碼、媒體文件等存放的,就好比win下除了C盤之外的其他盤,當然有條件我建議自己再外掛一個1TB的機械硬盤,然后映射到/home目錄下用於存放大型數據,這才是根本解決辦法。(參考鏈接:https://blog.csdn.net/stoic163/article/details/79401739)
1.3、安裝完成重啟后黑屏,左上角光標閃爍
這是因為安裝過程中啟動引導失敗的原因,需要重新掛載一下安裝了啟動引導文件的硬盤到‘/mnt’即可,具體做法如下:
1.3.1、同樣通過U盤啟動,這次選擇‘Try Ubuntu’,進入界面后啟動終端 ‘Ctrl + Alt + T’
1.3.2、進入root,首先要給root設置密碼
sudo passwd root #連續輸入兩次密碼(例如) 123456 123456
#進入root su #按提示輸入剛才的密碼 123456 #定位到根目錄下 cd /
1.3.3、手動掛在啟動引導文件所在硬盤
fdisk -l //找到你的Ubuntu安裝分區(boot),以下假設為/dev/sda3 sudo mount /dev/sda3 /mnt sudo grub-install --boot-directory=/mnt/ dev/sda //注意dev前面有空格,如果是sda3就填sda,如果是sdb3就填sdb
1.3.4、重啟系統,從安裝了boot的硬盤啟動
reboot
1. 4、電腦啟動進入grub rescue mode的解決方案
(請遵循鏈接的 方案二 和 附加情況 解決)
https://blog.csdn.net/u010896929/article/details/52958637
2、ubuntu系統備份教程
參考鏈接:https://blog.csdn.net/stack_moon/article/details/80931544
備份原理就是將系統文件壓縮打包。由於Linux系統所有都是文件,故,只需要將系統打包即可。當然,必須除了當前系統運行中的文件以及臨時文件。
打包有兩種方式:a),直接需要打包的Linux系統下壓縮打包(親測,發現在打包最后會報錯,不知會不會有問題)。b). 使用Live USB,其實就是剛剛用U盤做的系統鏡像。
這里推薦方式b:
2.1.在要備份的系統的電腦上,新插入剛剛安裝了Ubuntu系統的硬盤,用來存儲備份壓縮包以及還原。
2.2.使用U盤啟動,進入Live USB界面,點擊試用。
2.3.進入試用Ubuntu后,先獲取root權限。(參照1中問題3詳細步驟)
sudo passwd
su root
2.4.掛載需要備份的系統硬盤.可以使用 fdisk -l (在root權限下)查看硬盤號,確認那些是需要備份的系統硬盤符,哪個是備份目標硬盤。
這里我們以4個基礎分區的備份為例,即 主分區(/),home分區(/home),交換空間(swap),以及boot分區(boot);
一般主分區(/)備份頻率較高;home分區(/home)以及boot分區(boot)備份頻率低;而交換空間(swap)不用備份。
2.4.1 在根目錄下新建上述待備份分區的掛載點文件夾,例如:root_backup、home_backup、boot_backup; 以及存儲備份文件的目標硬盤掛載點文件夾: restore 。
mkdir root_backup home_backup boot_backup restore
2.4.2 把相應的硬盤(盤符, 用 fdisk -l 查看)掛在到上述文件夾上
mount dev/sda7 /root_backup/
mount dev/sda8 /home_backup/
mount dev/sda6 /boot_backup/
mount dev/sdb5 /restore/
#注意:sda1,sdb1按照fdisk -l查看的的實際情況替換。
可以進入backup文件夾下查看是否掛載成功。如果掛載成功,文件夾下應該是要備份的Linux系統文件。
2.4.3 開始壓縮系統文件。
壓縮格式有很多,如果你的硬盤夠大,建議使用低壓縮格式,這樣速度會很快。
壓縮備份命令(路勁按照自己的實際情況替換,如果你是按照我的步驟做的,直接替換即可):
進入到 ***_backup 備份系統目錄下進行壓縮:
#備份主分區(/)
#首先進入 root_backup 文件夾
cd /root_backup/
#然后打包壓縮(壓縮為root_backup.tgz)
tar cvpzf /restore/root_backup.tgz --exclude=./proc --exclude=./lost+found --exclude=./mnt --exclude=./sys --exclude=media ./
#備份home分區(/home)
cd /home_backup/
tar cvpzf /restore/home_backup.tgz ./
#備份boot分區(/boot)
cd /boot_backup/
tar cvpzf /restore/boot_backup.tgz ./
解釋:
--exclude ,是排除壓縮的文件。就是將不需要的文件排除。
等待壓縮完成。
2.4.4 重點!!!備份原始系統的配置文件,以及新安裝系統的啟動文件。
進入backup原始系統下,備份系統配置文件fstab fstab.d
cd /root_backup/etc/
cp -pdr fstab fstab.d /restore/ #可能沒有 fstab.d
3、ubuntu系統還原或遷移(到另外一台電腦)教程
3.1 Ubuntu系統的還原(在原來的系統硬盤上恢復備份)
假如你在因為誤操作,導致系統崩潰了,請用當前方案!
同樣建議進入,使用U盤啟動,進入Live USB界面,點擊試用下進行操作!
當然下面是進行整個系統的恢復,如果你清楚自己系統是主分區(/)崩了,那可以只進行主分區恢復,其他也一樣。
#這種方案僅適合原系統蹦了,但是硬盤沒變的情況下使
#設置root權限密碼
sudo passwd
123456
123456
#進入root su 123456
#定位到根目錄下
cd /
#新建待恢復文件夾掛載點(主分區 -> root_recovery、boot分區 -> boot_recovery、 home分區 -> home_recovery)、備份資料所在硬盤掛載點 -> store
mkdir root_recovery boot_recovery home_recovery store
#分別掛載相應的盤符(根據fdisk -l查看的的實際情況替換,詳細請參考前面教程 2.4.1~2.4.2)
mount dev/sda7 /root_recovery/
mount dev/sda8 /home_recovery/
mount dev/sda6 /boot_recovery/
mount dev/sdb5 /store/
#分別解壓恢復
#恢復主分區
tar -xvpzf /store/root_backup.tgz -C /root_recovery/
#如果你想徹底一點,建議首先把原來主分區(/)下面的文件全部刪除在做恢復,這就注意新建一下文件夾,因為備份時候忽略了,但新系統下必須有:
mkdir proc tmp lost+found media mnt run
#恢復 home分區
tar -xvpzf /store/home_backup.tgz -C /home_recovery/
#恢復 boot分區
tar -xvpzf /store/boot_backup.tgz -C /boot_recovery/
#然后重啟搞定
reboot
3.2 Ubuntu系統的遷移(在另一台新計算機硬盤上恢復上面備份)
#適合把備份系統遷移到新硬盤上
首先按照教程1中鏈接把系統在新硬盤上安裝完整
然后老套路了,使用U盤啟動,進入Live USB界面,點擊試用!
#設置root權限密碼 sudo passwd 123456 123456 #進入root su 123456 #定位到根目錄下 cd /
#設置備份資料所在硬盤掛載點 -> store
mkdir store
#掛載相應的盤符(根據fdisk -l查看的的實際情況替換,詳細請參考前面教程 2.4.1~2.4.2)
mount dev/sdb5 /store/
#然后就不能采用3.1中的方法給新硬盤設置掛載點了,因為設置了掛載點后,boot分區就變成了當前試用Ubuntu下面的一個掛載路徑,完成回復后重啟時不能順利進入系統!!
#因此下面的恢復工作需要直接使用新硬盤的盤符 UUID 號
#查看新硬盤各分區的 UUID 號
sudo blkid
#主分區 /dev/sda1: UUID="04df69c9-2b43-4df9-bd9e-31abf767f654" TYPE="ext4" PARTUUID="e07a80e4-01" # boot分區 /dev/sda5: UUID="6bc18e92-8bfd-48b7-9ced-b438be714e3f" TYPE="ext4" PTTYPE="dos" PARTUUID="e07a80e4-05" # home分區 /dev/sda6: UUID="017cdfea-eb23-41e0-845e-6e7bfad7aa72" TYPE="ext4" PARTUUID="e07a80e4-06" # 其他數據盤 /dev/sdb2: LABEL="M-gM-3M-;M-gM-;M-^_" UUID="0003329A000E85C8" TYPE="ntfs" PARTUUID="ad41c497-02" #系統備份盤 /dev/sdb5: UUID="de8163c3-cc1c-48b9-833d-de4c5cd72431" TYPE="ext4" PARTUUID="ad41c497-05"
我們要重點記住的是 主分區(/),home分區(/home)以及boot分區(boot)的 UUID
#然后重點來了!!千萬別打瞌睡跳過了
由於是新硬盤,所有分區的UUID已經改變了,就不能像3.1那樣直接解壓恢復,在恢復之前首先需要對新硬盤下的某些文件進行備份,后面要替換UUID!
# 在store中新建文件夾 new_recovery 用於存放新硬盤中復制過來的文件
cd /store
mkdir new_reovery
# 進入新硬盤的boot分區,備份系統啟動文件grub.cfg.主要是用來獲取新硬盤的UUID號,替換備份系統的內的UUID,不然在新硬盤上系統無法啟動!
cd /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/grub/
cp -pdr grub.cfg /store/new_recovery/
#進入新硬盤主分區(/),備份系統配置文件 fstab fstab.d(可能沒有)
cp -pdr /media/ubuntu//04df69c9-2b43-4df9-bd9e-31abf767f654/etc/fstab /store/new_recovery/
#開始解壓恢復
#返回根目錄
cd /
#恢復主分區
tar -xvpzf /store/root_backup.tgz -C /media/ubuntu/04df69c9-2b43-4df9-bd9e-31abf767f654/
#恢復 home分區
tar -xvpzf /store/home_backup.tgz -C /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/
#恢復 boot分區
tar -xvpzf /store/boot_backup.tgz -C /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/
#修改UUID
#首先針對 fstab 根據你新硬盤分區情況 與 備份系統的 fstab 對比進行修改。
有兩種情況;
1、新硬盤分區數量與備份系統一致,只需要修改 fstab 文件中每個分區對應的盤符號
2、新硬盤分區數量與備份的不一致或者新硬盤還掛載了更多硬盤,那就把其他盤符都保留下來。
主要打開兩個 fstab文件進行對比修改即可
# 打開新硬盤的(剛才備份的)fstab文件
sudo gedit /store/new_recovery/fstab
# 打開恢復到新硬盤主分區(/)中的(屬於備份系統的)fstab文件
sudo gedit /04df69c9-2b43-4df9-bd9e-31abf767f654/etc/fstab
注意:把前者對應分區的 UUID 替換到后者中
修改grup.cfg文件中的 UUID
也是打開兩個 grup.cfg 文件對比修改即可!
#打開新硬盤(剛才備份的)grup.cfg 文件
sudo gedit /store/new_recovery/grup.cfg
# 打開恢復到新硬盤boot分區中的(屬於備份系統的) grup.cfg 文件
sudo gedit /6bc18e92-8bfd-48b7-9ced-b438be714e3f/grup/grup.cfg
一定要對照着上面的文件修改到下面文件中去,否則出錯啟動不了!!
一般只需要修改主分區(/)、boot分區的 UUID,需要把整個文檔所有 UUID都替換完成!
(這里主要參考了連接 https://blog.csdn.net/stack_moon/article/details/80931544)
4、 必須了解的Ubuntu系統基本知識
Ubuntu根目錄下各文件的功能介紹 https://blog.csdn.net/liajie/article/details/78616200
未完待續~~~