ddコマンドによるイメージバックアップ

SBCを使っているとイメージバックアップを取っておきたい時が多いので、ddコマンドを使ったバックアップ方法をメモします。
仮想環境を触ることが増えて、自分もよく忘れるので・・・m(-_-)m。

対象のメディアを調べる

$ mount | grep /dev/s
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
/dev/sdd1 on /media/link/0c608f7c-43b3-407d-927d-6d621e788924 type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)

イメージファイル作成

無圧縮でイメージファイル作成

$ sudo dd if=/dev/sdd of=/tmp/img.dd
11317729+0 レコード入力
11317728+0 レコード出力
5794676736 bytes (5.8 GB, 5.4 GiB) copied, 268.651 s, 21.6 MB/s
13875937+0 レコード入力
13875936+0 レコード出力
7104479232 bytes (7.1 GB, 6.6 GiB) copied, 328.77 s, 21.6 MB/s
...以下略

gzip圧縮でイメージファイル作成

$ sudo dd if=/dev/sdd | gzip -c > /tmp/img_dd.gz
146401+0 レコード入力
146400+0 レコード出力
74956800 bytes (75 MB, 71 MiB) copied, 3.56645 s, 21.0 MB/s
1174401+0 レコード入力
1174400+0 レコード出力
601292800 bytes (601 MB, 573 MiB) copied, 63.6794 s, 9.4 MB/s
2241537+0 レコード入力
2241536+0 レコード出力
1147666432 bytes (1.1 GB, 1.1 GiB) copied, 123.724 s, 9.3 MB/s
2975297+0 レコード入力
2975296+0 レコード出力
1523351552 bytes (1.5 GB, 1.4 GiB) copied, 183.772 s, 8.3 MB/s
3630910+0 レコード入力
3630909+0 レコード出力
1859025408 bytes (1.9 GB, 1.7 GiB) copied, 243.843 s, 7.6 MB/s
4522561+0 レコード入力
4522560+0 レコード出力
2315550720 bytes (2.3 GB, 2.2 GiB) copied, 303.881 s, 7.6 MB/s
5129981+0 レコード入力
5129980+0 レコード出力
2626549760 bytes (2.6 GB, 2.4 GiB) copied, 363.962 s, 7.2 MB/s
5712058+0 レコード入力
5712057+0 レコード出力
2924573184 bytes (2.9 GB, 2.7 GiB) copied, 424.024 s, 6.9 MB/s
6462337+0 レコード入力
6462337+0 レコード出力
3308716544 bytes (3.3 GB, 3.1 GiB) copied, 484.089 s, 6.8 MB/s
7757025+0 レコード入力
7757024+0 レコード出力
3971596288 bytes (4.0 GB, 3.7 GiB) copied, 544.129 s, 7.3 MB/s
9002625+0 レコード入力
9002624+0 レコード出力
4609343488 bytes (4.6 GB, 4.3 GiB) copied, 604.182 s, 7.6 MB/s
9682113+0 レコード入力
9682112+0 レコード出力
4957241344 bytes (5.0 GB, 4.6 GiB) copied, 664.257 s, 7.5 MB/s
12191842+0 レコード入力
12191841+0 レコード出力
6242222592 bytes (6.2 GB, 5.8 GiB) copied, 724.325 s, 8.6 MB/s
13423681+0 レコード入力
13423680+0 レコード出力
6872924160 bytes (6.9 GB, 6.4 GiB) copied, 784.412 s, 8.8 MB/s
15555777+0 レコード入力
15555776+0 レコード出力
7964557312 bytes (8.0 GB, 7.4 GiB) copied, 844.446 s, 9.4 MB/s
17708545+0 レコード入力
17708544+0 レコード出力
9066774528 bytes (9.1 GB, 8.4 GiB) copied, 904.493 s, 10.0 MB/s
20652545+0 レコード入力
20652544+0 レコード出力
10574102528 bytes (11 GB, 9.8 GiB) copied, 964.521 s, 11.0 MB/s
23578689+0 レコード入力
23578688+0 レコード出力
12072288256 bytes (12 GB, 11 GiB) copied, 1024.59 s, 11.8 MB/s
26330081+0 レコード入力
26330080+0 レコード出力
13481000960 bytes (13 GB, 13 GiB) copied, 1084.65 s, 12.4 MB/s
28942145+0 レコード入力
28942144+0 レコード出力
14818377728 bytes (15 GB, 14 GiB) copied, 1144.72 s, 12.9 MB/s
30564352+0 レコード入力
30564352+0 レコード出力
15648948224 bytes (16 GB, 15 GiB) copied, 1180.99 s, 13.3 MB/s

lz4圧縮でイメージファイル作成

圧縮速度の早い"lz4"でも試してみました。
下記コマンドで導入できます。

$ sudo apt-get install liblz4-tool
$ sudo dd if=/dev/sdd | lz4 > /tmp/img_dd.lz4
392417+0 レコード入力
392416+0 レコード出力
200916992 bytes (201 MB, 192 MiB) copied, 9.08578 s, 22.1 MB/s
2670817+0 レコード入力
2670816+0 レコード出力
1367457792 bytes (1.4 GB, 1.3 GiB) copied, 69.1543 s, 19.8 MB/s
4800737+0 レコード入力
4800736+0 レコード出力
2457976832 bytes (2.5 GB, 2.3 GiB) copied, 129.254 s, 19.0 MB/s
7063265+0 レコード入力
7063264+0 レコード出力
3616391168 bytes (3.6 GB, 3.4 GiB) copied, 189.293 s, 19.1 MB/s
9392353+0 レコード入力
9392352+0 レコード出力
4808884224 bytes (4.8 GB, 4.5 GiB) copied, 249.326 s, 19.3 MB/s
11845345+0 レコード入力
11845344+0 レコード出力
6064816128 bytes (6.1 GB, 5.6 GiB) copied, 309.35 s, 19.6 MB/s
14307041+0 レコード入力
14307040+0 レコード出力
7325204480 bytes (7.3 GB, 6.8 GiB) copied, 369.39 s, 19.8 MB/s
16910305+0 レコード入力
16910304+0 レコード出力
8658075648 bytes (8.7 GB, 8.1 GiB) copied, 429.46 s, 20.2 MB/s
19569633+0 レコード入力
19569632+0 レコード出力
10019651584 bytes (10 GB, 9.3 GiB) copied, 489.499 s, 20.5 MB/s
22270506+0 レコード入力
22270506+0 レコード出力
11402499072 bytes (11 GB, 11 GiB) copied, 549.588 s, 20.7 MB/s
25011681+0 レコード入力
25011680+0 レコード出力
12805980160 bytes (13 GB, 12 GiB) copied, 609.683 s, 21.0 MB/s
27724001+0 レコード入力
27724000+0 レコード出力
14194688000 bytes (14 GB, 13 GiB) copied, 669.742 s, 21.2 MB/s
30465249+0 レコード入力
30465248+0 レコード出力
15598206976 bytes (16 GB, 15 GiB) copied, 729.785 s, 21.4 MB/s
30564352+0 レコード入力
30564352+0 レコード出力
15648948224 bytes (16 GB, 15 GiB) copied, 732.037 s, 21.4 MB/s

ddの進捗を確認

上記はwatchコマンドを使って進捗方法を表示しています。
(ddコマンドは進捗報告がないので、watchコマンドを使って標準出力に表示します)。

$ sudo watch -n 60 pkill -USR1 dd

結果

lz4は速度的には無圧縮とさほどに変わらないにも関わらず、1/6以上の圧縮率です。
gzipも検討していますが、7分以上余分に時間がかかるので、どの環境でも使えるというアドバンテージをどう見るかによって、使う場面が変わりそうです。

$ ls -lh /tmp/
-rw-rw-r-- 1 user user 1.8G  8月 13 14:00 img_dd.gz
-rw-rw-r-- 1 user user 2.3G  8月 13 14:14 img_dd.lz4

補足

なお、今回の計測は、下記スペックで行っています。
SATA3やSSDなどを使うともっと違った結果になると思います。

  • CPU : Celeron 847
  • HDD : SATA 80GB 5400rpm (SATA1 : 1.5Gb/s)