1. 程式人生 > >Linux Tar打包 備份 恢復 克隆到新的硬碟 操作流程方法

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

概述

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

一,系統備份

    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

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

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

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

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

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