ntfsclone がうまく動かないので dd2008年01月06日 14時00分45秒

HP の laptop の調子がおかしいので、バックアップをとっている。Vista が入っているのだが、どうしても ntfsclone が動かない。


# ntfsclone --save-image -o ad4s1.ntfsclone /dev/ad4s1
ntfsclone v1.13.1 (libntfs 9:0:0)
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 59999993856 bytes (60000 MB)
Current device size: 62906909184 bytes (62907 MB)
Scanning volume ...
100.00 percent completed
Accounting clusters ...
Cluster accounting failed at 3673878 (0x380f16): extra cluster in $Bitmap
Totally 1 cluster accounting mismatches.
ERROR: Filesystem check failed! Windows wasn't shutdown properly or inconsistent
filesystem. Please run chkdsk /f on Windows then reboot it TWICE.

となってしまう。シャットダウンや再起動をかけて電源を落としてから、FreeBSD を起動してもうまくいかない。確かに、ntfsprogs 1.13.1 は古いのだが、ports にも新しい物がないので、切羽詰まった時にゆっくり更新できない。以前に、Vista がズルをするので、パーティションが汚れたままだと聞いた。その影響だとは思う。

何はともあれ、早急なが課題だ。幸か不幸か、NTFS パーティションはほとんど使われているので、ntfsclone を使う直接的な利益は少ない。そこで、dd でやることにした。


# sh -c 'for i in 0 1 2 3 4 5; do dd if=/dev/ad4s1 count=10000 bs=1M skip=${i}0000 | gzip > ad4s1.dd.$i.gz & done'

何らかの IO エラーで途切れると、後々厄介なので、最初から分割する。一ブロックを 1M に設定し、一回で 10000 ブロック読む。約 10GB だ。一応、先に 60000 ブロック読めれば良いのを確かめておいた。60 GB は流石に大きいので、軽く圧縮する。

最後に、


# sh -c 'for i in *.gz; do gzip -d -c $i; done' | cmp - /dev/ad4s1

で、正しくバックアップをとれているか点検する。