要旨
PCをHDDまるごとバックアップしたいとき、LinuxのLive USBを使ってddで取り出す方法がある。
このとき時間に余裕があるなら、ntfswipeを使って空き領域を0で埋めることによってgzipでの圧縮効率を高めることができる。
手順
今回はKali LinuxのLive USBを使用してLet's note (CF-NX1、HDD: 250GB、Windows 7 Pro 32bit)のバックアップを実施。
リカバリディスクから復旧し、現時点までのWindows Updateをすべて適用した状態で、他に余計なデータは入っていない。Windows上での使用領域は約32GB。
Live USBから起動したら、まずはlsblk
でデバイス名を確認。
root@kali:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2.5G 1 loop /lib/live/mount/rootfs/filesystem.squashfs
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 2.8G 0 part /lib/live/mount/persistence/sda1
└─sda2 8:2 0 235.7G 0 part /lib/live/mount/persistence/sda2
sdb 8:16 0 232.9G 0 disk
├─sdb1 8:17 0 14.7G 0 part
├─sdb2 8:18 0 300M 0 part
└─sdb3 8:19 0 218G 0 part
/dev/sdb
以下がWindowsがインストールされた領域と回復パーティション。
各パーティションに対してntfswipe
を実行。
root@kali:~# ntfswipe -av /dev/sdb1 && ntfswipe -av /dev/sdb2 && ntfswipe -av /dev/sdb3
dd
で出力したものstatus=progress
で進捗状況も確認しながらgzip
で圧縮。
root@kali:~# dd if=/dev/sdb status=progress | gzip -c > CF-NX1GDHYS_BASE.gz
250046562816 bytes (250 GB, 233 GiB) copied, 5024 s, 49.8 MB/s
488397168+0 レコード入力
488397168+0 レコード出力
250059350016 bytes (250 GB, 233 GiB) copied, 5024.77 s, 49.8 MB/s
1時間半ほどで無事250GBすべてdd
から書き出せたので、できあがったgzファイルを確認。
root@kali:~# ls -l
-rw-r--r-- 1 root root 24920396778 8月 17 20:17 CF-NX1GDHYS_BASE.gz
桁区切りを付けていないので分かりにくいが、出来上がりのファイルの容量は約25GB。
ntfswipe
をしないでdd
->gzip
するとgzファイルが235GB程度だったので、大幅に容量を削減できた。
※ HDではなくSSDの場合は書き込み寿命を縮めてしまうので要注意