Partition

將磁碟佈局和分區復製到另一個驅動器

  • February 23, 2017

我正在開發一個應用程序,我需要創建具有完全相同分區佈局的驅動器。我最初的想法是用 sfdisk 轉儲原始驅動器的分區表。

sfdisk -d /dev/sdX > parttable

然後將其應用於所有其他驅動器:

sfdisk /dev/sdX < parttable

但這種方法似乎不起作用。我從 USB 驅動器中轉儲了正確的分區表,然後使用 gparted 創建了一些隨機分區,然後嘗試將初始分區表寫回驅動器。

但問題是,分區無法辨識。例如,Gparted 將分區列為未知。我想,我可能必須格式化創建的分區,因為分區表不儲存有關文件系統的資訊。

我現在的問題是:我能否以某種方式保存分區表和有關分區(文件系統等)的資訊並以這種方式創建一個新驅動器(最多在一個命令中)。

順便說一句:msdos 分區表

編輯:另一種方法是自己收集有關驅動器的所有數據(例如,parttable、文件系統)並手動創建命令。是否可以(可能使用 parted)創建分區表並在一個命令中格式化多個分區?

在以下條件下工作:

  • 要複製的原始磁碟是/dev/sdx
  • 原始磁碟已正確分區/標記/標記
  • 原始磁碟的文件系統內容將被忽略
  • 要復製到的目標磁碟將是/dev/sdy
  • 交換分區將是/dev/sdy4
  • 引導分區將/dev/sdy1安裝在具有文件系統/boot的最終系統中ext3
  • 根分區將/dev/sdy2安裝在具有文件系統/的最終系統中ext4
  • 使用者分區將/dev/sdy3安裝在具有文件系統/home的最終系統中ext4
  • 您要複製的 Debian 系統已被 tar 並 gzip 到master_system.tar.gz
  • 所有文件,包括腳本,都將儲存在工作目錄中
  • 該腳本將從同一工作目錄執行
  • 該腳本將作為 執行root,而不sudo是以 root 身份登錄,或者su在終端中執行
  • dupe_mnt工作目錄中有目錄

要“複製”原始磁碟的分區結構,只需要一次,除非結構發生變化。

sfdisk --dump /dev/sdx > master_table

由於只有您,在所討論的系統中才能確定要從作為主系統的 Debian 系統中複製什麼,所以我不打算討論這些。我知道您不會複製/proc/dev//sys目錄,但肯定還有其他要排除的。以您選擇的任何方式創建該存檔,並將其命名為master_system.tar.gz。這應該包括其中的/boot/home目錄。就是這樣,設置完成,直到您更改要複製的 Debian 系統或磁碟分區。

要創建的腳本稱為sys_replicate.sh

#!/bin/sh
target=$1;
sfdisk /dev/${target} < master_table;
# Format the swap partition
mkswap /dev/${target}4;
# Format the data partitions
mkfs.ext3 /dev/${target}1;
mkfs.ext4 /dev/${target}2;
mkfs.ext4 /dev/${target}3;
# Mount the target root filesystem and its parts
mount /dev/${target}2 dupe_mnt;
mount /dev/${target}1 dupe_mnt/boot;
mount /dev/${target}3 dupe_mnt/home;
# Copy the master system to the target
cd dupe_mnt;
tar -zxvpf ../master_system.tar.gz;
cd ..;
# Unmount the new system
cd ..
umount /dev/${target}3;
umount /dev/${target}1;
umount /dev/${target}2;
#done

該文件sys_replicate.sh需要execute設置位。chmod +x sys_replicate.sh

要使用該過程,一旦設置,連接目標磁碟。如果是 USB,請確保系統已辨識出它可用。如果是內部硬碟,顯然需要重新啟動,系統應該會自動找到它。連接後,確保您知道/dev它是哪個,因為添加磁碟可以重新排列字母。準備就緒後,在rootshell 中執行:

./sys_replicate.sh sdy

設備名稱顯然需要更改以匹配您的作業系統/dev/sdy/dev/sdx此外,事實證明,它sfdisk 可以處理 GPT 磁碟和擴展分區,因此不需要我之前的評論問題。如果您使用比原始磁碟更大的磁碟作為副本,那麼一切仍然有效。但是,您將浪費無法輕鬆回收的空間,因此請在選擇要複製的主磁碟之前考慮到這一點。

分區結構的創建和 Debian 系統的複制是獨立的,因此對其中一個的更改不需要更新另一個。

引用自:https://unix.stackexchange.com/questions/346938