Linux Tar打包 備份 恢復 克隆到新的硬盤 操作流程方法

概述

    1.當我們配置系統和環境後,要備份或則克隆到其他硬盤上,該怎麼做呢?下面介紹一下tar方法。我們都知道的Linux系統是萬物皆文件。那麼系統當然也可以把它當文件打包,tar是linux下的一個打包工具,下面用的ubuntu系統做示例,看看怎麼操作吧。

一,系統備份

    參考自此篇文章:https://help.ubuntu.com/community/BackupYourSystem/TAR

    1.去到你的系統的根目錄下

cd /

    2.切換到根用戶,或者用su指令

su root

    3.備份系統

tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 

解釋一下這些參數:

tar - 是創建存檔的命令。緊接着由每個字母修改,下面將對每個字母進行說明。

c - 創建新的備份存檔。

v - 詳細模式,tar將打印它在屏幕上所做的事情。

p - 保留存檔中放置的文件的權限以便以後恢復。

z - 使用'gzip'壓縮備份文件以使其更小。

f <filename> - 指定存儲備份的位置,backup.tar.gz是此示例中使用的文件名。它將存儲在當前工作目錄中,即使用cd命令時設置的目錄。

--exclude = /example/path - 此模型後面的選項指示tar 不要備份哪些目錄。我們不想備份所有內容,因爲某些目錄不是很有用。第一個排除規則指示tar不要自行備份,這對於避免操作期間的錯誤很重要。

--one-file-system - 不要在不同的文件系統上包含文件。如果您希望其他文件系統(例如/ home分區或安裝在/ media備份中的外部介質),您需要單獨備份它們,或省略此標誌。如果省略此標誌,則需要添加幾個--exclude =參數以避免您不想要的文件系統。這些將是root中的/proc,/sys,/mnt,/media,/run和/dev目錄。/proc和/sys是虛擬文件系統,它將窗口提供給正在運行的內核的變量,因此您不希望嘗試備份或還原它們。 /dev是一個tmpfs,其內容由udev動態創建和刪除,因此您也不想備份或恢復它。同樣,/run是一個tmpfs,它保存有關正在運行的系統的不需要備份的變量。

執行完成後,可能會出現一些提示或錯誤,“tar:Error exit from previous errors”或文件已經更改之類的消息,可以忽略它。

然後把backup.tar.gz這個備份文件複製到你的硬盤U盤。

2.爲恢復到新硬盤,做準備

    1.首先備份一下UUID

sudo blkid

記錄一下這些信息,我的是這樣的,備份下來後面會用到

/dev/sda1: UUID="6815-BB32" TYPE="vfat" PARTUUID="e8860503-01"
/dev/sda2: UUID="0a93b854-4bb1-4e95-8805-72839b44d8ce" TYPE="ext4" PARTUUID="e8860503-03"
/dev/sda3: UUID="55e55928-707f-4109-b482-e95f8887ad75" TYPE="swap" PARTUUID="e8860503-05"

 備份一下硬盤掛載信息

df -h

 可見我的sda2是掛載在boot/efi下面的,到時候恢復也要創建這個目錄並把sda2上掛載上去

udev            3,9G     0  3,9G   0% /dev
tmpfs           795M  9,3M  786M   2% /run
/dev/sda2       109G   31G   73G  30% /
tmpfs           3,9G  176K  3,9G   1% /dev/shm
tmpfs           5,0M  4,0K  5,0M   1% /run/lock
tmpfs           3,9G     0  3,9G   0% /sys/fs/cgroup
/dev/sda1       511M  1,2M  510M   1% /boot/efi
tmpfs           795M   52K  795M   1% /run/user/1000

    2.備份一下,硬盤分區格式及大小

sudo fdisk -l

得到,備份記錄下來,後面會用到

Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3E432CA-5547-4E0D-839D-7C30FC6167C9

Device         Start       End   Sectors   Size Type
/dev/sda1       2048   1050623   1048576   512M EFI System
/dev/sda2    1050624 233359359 232308736 110,8G Linux filesystem
/dev/sda3  233359360 250068991  16709632     8G Linux swap

    3.用live-cd啓動ubuntu,也就是一個linux的啓動盤,開機時選試用ubuntu(try ubuntu,一般是第一個),(系統盤的製作可以在網上查閱,這裏不說)

打開終端,對新的硬盤進行分區和格式化,查看硬盤的標號,一般是sda

sudo fdisk -l

然後用fdisk分區

sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): 

輸入d,把原有的分區都刪除掉,然後輸入p查看分區

Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3E432CA-5547-4E0D-839D-7C30FC6167C9

Device         Start       End   Sectors   Size Type

然後新建分區,輸入n,分區號和大小都要和之前備份的那個一樣,重複3次後是這樣的

Device         Start       End   Sectors   Size Type
/dev/sda1       2048   1050623   1048576   512M Linux filesystem
/dev/sda2    1050624 233359359 232308736 110,8G Linux filesystem
/dev/sda3  233359360 250068991  16709632     8G Linux filesystem

對sda1分區類型進行更改,輸入t,選1,輸入1,就是linux efi類型了,全部類型可以在輸入t後輸入l查看。看着對應的來就行了。

對sda2分區類型進行更改,輸入t,選2,輸入83,Linux文件系統類型

對sda3分區類型進行更改,輸入t,選3,輸入19,linux swap類型

然後就和原來的分區一樣了

Device         Start       End   Sectors   Size Type
/dev/sda1       2048   1050623   1048576   512M EFI System
/dev/sda2    1050624 233359359 232308736 110,8G Linux filesystem
/dev/sda3  233359360 250068991  16709632     8G Linux swap

然後輸入w 保存退出 

    4.對分區格式化,根據之前的UUID信息和格式

格式化sda1

sudo mkfs.vfat /dev/sda1

格式化sda2,更改uuid,這裏的-U後面的uuid就是之前記錄下來的要一樣

sudo mkfs.ext4 -U 0a93b854-4bb1-4e95-8805-72839b44d8ce /dev/sda2

格式化sda3上,更改UUID

sudo mkswap -U 55e55928-707f-4109-b482-e95f8887ad75 /dev/sda3

好了,準備工作做完了。

三,系統恢復

可以開始恢復系統了

    1.掛載系統根目錄,就是系統文件的那個分區,我這裏是sda2,掛載到mnt下面

sudo mount /dev/sda2 /mnt

在MNT根目錄下面,新建boot/efi目錄,掛載sda1

sudo mkdir /mnt/boot
sudo mkdir /mnt/boot/efi
sudo mount /dev/sda1 /mnt/boot/efi

將你之前複製的backup.tar.gz放到到/mnt/目錄下,準備恢復

去到mnt目錄下

cd /mnt

切換到根用戶或者用sudo的命令,由於live-cd沒有用戶密碼所以先要設置根的密碼

sudo passwd root

su

解包的備份文件

tar -xvpzf backup.tar.gz -C . --numeric-owner

命令解釋:

簡要說明:

x - 告訴tar立即提取f選項指定的文件。在這種情況下,存檔是backup.tar.gz

-C <directory> - 此選項告訴tar在解壓縮之前更改爲特定目錄。在此示例中,我們將還原到根(/mnt)目錄。

--numeric-owner - 此選項告訴tar恢復歸檔中文件的數字所有者,而不是匹配要還原的環境中的任何用戶名。這是因爲您要恢復的系統中的用戶ID:s不一定與您用於恢復的系統匹配(例如,Live CD)。

IconsPage /warning.png 這將覆蓋指定裝載中的每個文件和目錄,並使用存檔中的文件和目錄。歸檔後創建的任何文件都不會存儲在歸檔中,因此將保持不變允許恢復需要完成的時間。提取完成後,您可能需要重新創建原始存檔中未包含的目錄,因爲您使用--exclude將其排除。這不適用於--one-file-system排除的文件系統。這可以使用以下命令完成:

mkdir /proc /sys /mnt /media 
完成後,重啓並在進行備份時將所有內容恢復到系統狀態。

查看sda1的UUID,更改/etc/fstab中文件裏面的sda1的UUID

sudo blkid

我的顯示是

/dev/sda1: UUID="48e1-89a1" TYPE="vfat" PARTUUID="e8860503-01"

將裏面的UUID複製,打開的/mnt/etc/fstab中

sudo gedit /mnt/etc/fstab

看見

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=0a93b854-4bb1-4e95-8805-72839b44d8ce /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=6815-BB32  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/sda3 during installation
UUID=55e55928-707f-4109-b482-e95f8887ad75 none            swap    sw              0       0

找到

# /boot/efi was on /dev/sda1 during installation
UUID=6815-BB32  /boot/efi       vfat    umask=0077      0       1

將UUID後面的碼換成剛剛得到的48e1-89a1,保存,退出。

    2.修復GRUB

參考此鏈接:https://jingyan.baidu.com/article/5553fa82cd48a765a23934ae.html

此過程中要聯網,在終端輸入

sudo -i add-apt-repository ppa:yannubuntu/boot-repair 
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

等待下載完成後,有個窗口彈出,選擇Recommended repairs

等待它自動完成,彈出的窗口選是就行了。

完成後,重啓就可以進入系統了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章