Tana Gone
Tana Gone
1 min read

Categories

haltしたLinux BoxをBackupして新しいDiskにRestoreした。その時の作業を記録しておく。

Linux BoxのBootドライブ兼Rootドライブ120GBのシステムバックアップ/リストアを行った。Linux BoxのRootファイルシステムはインストール直後という事もあって7GBしかDiskを消費していない。Linux BoxからDiskを取り外し、SATA-USB3変換アダプタを使ってもう一台のLinux Boxのdd, dd+gzip, partclone, partclone+gzipを使ってバックアップファイルを作成し、ファイルの大きさを比較してみた。4種の最後の方法が劇的にファイルサイズが小さい。

バックアップコマンドdd、partcloneの比較

どんなパーティション・スキーム(スタイル)、ファイル・システムでもファイル化できるddコマンドにも弱点がある。

  1. Disk容量と同じファイルが出来てしまう。USB Pendriveなら許容できるが、どでかいHDDをバックアップしようとするとどでかいファイルが出来てしまう。gzipを併用してもせいぜい半分にしかサイズを縮小できない。
  2. リストアするには同じサイズのDiskか、更に大きい容量のDiskを用意せざるをえない。

partcloneは大抵のソースファイル・システム(バックアップ元のパーティションのファイル・システム)に対応し、ntfs、hfs+、apfsを読み出して、Imageファイル化できる。もちろんImageファイルの書き戻しに対応している。弱点は

  1. Diskのパーティション・スキームを保存しない。fdiskでスキーム情報をテキストファイル化してImageと共に保存しておけばスキームの再現ができるのでリストアが簡単にできる。システムが起動する際にDisk-IDを元にRootファイルシステム が格納されたパーティションを探すBoot Loadもあるのでスキーム情報が無ければシステムディスクをリストアできないという事態が生じてしまう。 スキーム情報とは次のパーティション情報をテキスト化したものである。

    $sudo fdisk /dev/sda
       
    Welcome to fdisk (util-linux 2.38.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
       
    Command (m for help): p
       
    Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
    Disk model:
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x42208722
       
    Device     Boot   Start        End   Sectors   Size Id Type
    /dev/sda1          8192    1056767   1048576   512M  c W95 FAT32 (LBA)
    /dev/sda2       1056768 1000215215 999158448 476.4G 83 Linux
       
    Command (m for help):
    

同じソースをddして出来上がるターゲット・ファイルの大きさ比較

📅2025/10/28Tu 🔹dd % sudo time dd if=/dev/sdb of=/mnt/win10/bkc.dd bs=16MB conv=sparse status=progress

$ dd if=/dev/sdb bs=16MB status=progress pigz > /mnt/win10/bkp.img.gz

pi@is ~ % ls -lh /mnt/win10 合計 182G -rw-r–r– 1 root root 1.6K 10月 28 12:21 00memo.md -rw-r–r– 1 root root 112G 10月 28 11:01 bkc.dd -rw-r–r– 1 root root 69G 10月 28 10:33 bkp.dd.gz drwx—— 2 root root 16K 10月 28 09:47 lost+found -rw-r–r– 1 root root 198 10月 28 11:46 ti_lan.fdisk -rw——- 1 root root 68M 10月 28 11:48 ti_lan_p1.img -rw——- 1 root root 6.9G 10月 28 12:01 ti_lan_p2.img -rw-r–r– 1 root root 2.2G 10月 28 11:54 ti_lan_p2.img.gz pi@is ~ % 「dd | gzip」 はそこまでだ!「dd | pigz」にするだけで20倍速くなった件 #Linux - Qiita

🔹Partclone pi@is ~ % sudo time bash a.sh

partclone.ext4 -d -c -s /dev/sdb2 | pigz > /mnt/win10/ti_lan_p2.img.gz

Partclone v0.3.17 http://partclone.org Starting to clone device (/dev/sdb2) to image (-) Reading Super Block Calculating bitmap… Please wait… Elapsed: 00:00:01, Remaining: 00:00:00, Completed: 100.00% Total Time: 00:00:01, 100.00% completed! done! File system: EXTFS Device size: 119.5 GB = 29173110 Blocks Space in use: 7.4 GB = 1801286 Blocks Free Space: 112.1 GB = 27371824 Blocks Block size: 4096 Byte Elapsed: 00:01:20, Remaining: 00:00:00, Completed: 100.00%, Rate: 5.53GB/min, current block: 28841362, total block: 29173110, Complete: 100.00% Total Time: 00:01:20, Ave. Rate: 5.5GB/min, 100.00% completed! Syncing… OK! Partclone successfully cloned the device (/dev/sdb2) to the image (-) Cloned successfully. 267.55user 10.68system 1:20.89elapsed 343%CPU (0avgtext+0avgdata 12356maxresident)k 15214360inputs+4490504outputs (9major+3999minor)pagefaults 0swaps

「スマート」パーティションバックアップを作成するためのpartcloneの使用方法
🔸restore gzip -c -d /mnt/win10/ti_lan_p2.img.gz | sudo partclone.ext4 -d -r -o /dev/sdb2