標準ツールを使用してディスク全体のパーティションレイアウトをコピーする方法

標準ツールを使用してディスク全体のパーティションレイアウトをコピーする方法

パーティション全体をバックアップしたいボールでリストしたものそのレイアウトを別のディスクに復元できる論理ドライブを含むハードドライブ。はいいいえパーティションの内容をコピーするには、レイアウトのみをコピーしてください。基本パーティションと拡張パーティションの場合は簡単です。

dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore

ところで、論理パーティションのレイアウトに関して、標準ツールでレイアウトを保存する同様の方法があるかどうか疑問に思います。私の考えの主な問題は、EBR位置のオフセットを見つけることです。なぜなら、それはdd残りのタスクを実行するからです。すべてを(おそらく)空のディスクに戻して、同じレイアウトを復元できる必要があることに注意してください。fdiskあるいは、同じ分割ツールを使用することをお勧めしますが、parted使用(スクリプト)を自動化できる必要があり、X関連のパッケージに依存してはいけません。コマンドラインにのみ依存する必要があります。

私のバックアップ計画は、structモジュールを使用して小さなPythonスクリプトでこれを手動で実行することですが、より簡単な方法があることを願っています。

答え1

あなたはそれを使用することができますフロッピーディスクこれはGPTパーティションディスクでも実行できます*。

求める:

sfdisk -d /dev/sdX > part_table

復元時に同じディスクとパーティションIDを維持してください**:

sfdisk /dev/sdX < part_table

回復すると、新しいディスクとパーティションIDが作成されます**:

grep -v ^label-id part_table | sed -e 's/, *uuid=[0-9A-F-]*//' | sfdisk /dev/sdY

ノート

*: のためのGPTパーティションテーブルsfdiskutil-linux 2.26以降が必要です。それlibfdiskの上から最初から書き直されました

**:デフォルトでは、sfdiskディスクとパーティションIDは新しいIDを作成する代わりにそのままコピーされます。したがって、新しいディスクは同じレイアウトの別のディスクではなく、元のディスクのレプリカになります。 Linux は、/dev/disk/by-uuid/パーティションテーブルの UUID ではなくファイルシステム UUID をチェックします。sfdiskパーティションID()への参照とディスクID()への参照がダンプから削除されると、, uuid=...新しいUUIDが作成されます。label-id: ...

答え2

時によって異なります。ソースディスクが以下を使用する場合膜バイオリアクター(別名「dos」または「msdos」)またはGPT(別名「GUID」)パーティションテーブル。

2TBを超えるディスクはMBRを使用できないため、GPTです。

2TB未満のディスクは両方を使用できるため、まずそれが何であるかを調べる必要があります。

Linuxを使用しているとし、次のいずれかのコマンドを使用して、ソースディスクで使用されているパーティションテーブルを見つけます。

disk=/dev/sda

# Always available, but old versions may not recognize gpt
fdisk -l $disk | grep type

# `apt-get install gdisk` or equivalent on non-Debian systems
gdisk -l $disk | grep -A4 'scan'

# `apt-get install parted`
parted $disk print | grep Table

与えられた

source=/dev/sda
dest=/dev/sdb

MBRディスクの場合

sfdiskPetr Uzelの答えまたはこのバリエーションで提案されているように使用してください。

# Save MBR disks
sfdisk -d $source > /partitions-backup-$(basename $source).sfdisk
sfdisk -d $dest   > /partitions-backup-$(basename $dest).sfdisk

# Copy $source layout to $dest
sfdisk -d $source | sfdisk $dest

GPTディスクの場合

正解が与えられました。ここそしてここ渡すクリス・ハーパー

あなたはする必要がありますGPTディスク。それを見てください(これダウンロードページまたは実行してくださいsudo apt-get install gdisk

その後、使用sgdisk注文する:

# Save GPT disks
sgdisk --backup=/partitions-backup-$(basename $source).sgdisk $source
sgdisk --backup=/partitions-backup-$(basename $dest).sgdisk $dest

# Copy $source layout to $dest and regenerate GUIDs
sgdisk --replicate=$dest $source
sgdisk -G $dest

最後のコマンドは、ディスクとすべてのパーティションのGUIDをランダムに指定します。これは、ディスクが同じマシンで使用されている場合にのみ必要です。それ以外の場合は必要ありません。

答え3

古いですが、まだ興味深いパイパーティドそしてPython LVM製本。

修正する:

sfdiskのマニュアルページによると、上記の内容は多くの最新の状況では機能しないため、以前の内容を公開しています。

sfdiskはGPT(GUIDパーティションテーブル)を理解しておらず、大規模パーティション用には設計されていません。特別な場合は、高度なGNU parted(8)を使用してください。

ただし、このコマンドは2TB以上のパーティションとLVMをサポートします。

# parted -ms /dev/sda print > sda.parted

出力例:

BYT;
/dev/sda:12.9GB:scsi:512:512:msdos:VMware Virtual disk;
1:1049kB:12.9GB:12.9GB:::boot, lvm;

答え4

最新のsfdiskは、mbrとgptパーティションテーブルで動作するようです。

私が好む方法は次のとおりです。

sfdisk -d /dev/nvme0n1 | sfdisk /dev/nvme1n1

ここで、/dev/nvme0n1 はソースディスク、/dev/nvme1n1 はターゲットディスクです。

関連情報