gz圧縮しながらbackup
gz圧縮しながらbackup
dd if=/dev/sda | gzip -c > sda_dd.gz
gz圧縮からリストア
gzip -dc < mmcblk0.img.gz | dd of=/dev/mmcblk0
gz圧縮しながらbackup (2GBに分割)
バックアップ
dd if=/dev/sda | gzip -c | split -b 2000m - sda_gz.
リストア
cat sda_gz.* | gzip -dc | dd of=/dev/hda
lzop圧縮しながらbackup (2GBに分割)
lzop圧縮しながらbackup
dd if=/dev/sda | lzop -c | split -b 2000m - sda_lzop.
lzop圧縮からリストア
cat sda_lzop.* | lzop -dc | dd of=/dev/hda
無圧縮
backup
dd if=/dev/sda of=sda_dd.dump
2GBの分割しながらbackup
dd if=/dev/sda | split -b 2000m - sda_dd.
restore
cat sda_dd.* | dd of=/dev/sda
進捗を確認
- macは非対応(pkillするとddが終了する)
ddにUSR1シグナルを送る
$ sudo pkill -USR1 dd
もしくは
# watch -n 60 pkill -USR1 dd
ddが進捗を教えてくれる
7331997+0 レコード入力
7331997+0 レコード出力
3753982464 バイト (3.8 GB) コピーされました、 47.4967 秒、 79.0 MB/秒
9861058+0 レコード入力
9861058+0 レコード出力
5048861696 バイト (5.0 GB) コピーされました、 63.5013 秒、 79.5 MB/秒
10405480+0 レコード入力
10405480+0 レコード出力
5327605760 バイト (5.3 GB) コピーされました、 65.1653 秒、 81.8 MB/秒
自分の経験では1GB/分程度。
定期的に送るにはwatch使うと簡単。
60秒間隔で実行
% watch -n 60 "pkill -USR1 dd"
ddで作成したイメージをマウント
$ fdisk -u -l sda_dd.dump
ディスク sda_dd.dump: 4012 MB, 4012900352 バイト
ヘッド 255, セクタ 63, シリンダ 487, 合計 7837696 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x00014d35
デバイス ブート 始点 終点 ブロック Id システム
sda_dd.dump1 8192 122879 57344 83 Linux
sda_dd.dump2 122880 7774207 3825664 83 Linux
offsetを指定する
$ sudo mount -o loop,offset=$((512*122880)) sda_dd.dump /mnt
エラーをスキップする場合
$ sudo dd if=/dev/sdd of=sdd.img bs=512 conv=noerror,sync
bsは読み取りエラーが発生した時スキップするサイズ。