2014年7月22日火曜日

Windowsのディスクからデータを救出する話

知人のWindowsのHDDが壊れてしまったので、データを救出してみた。
役に立つかもしれないので、経緯を覚えてるだけ。

話を聞くと、
(1) ある日電源を入れたらWindowsが正常起動しなくなった
(2) リブートを繰り返したらエラーメッセージがでて(たぶんSMART関連)、スプラッシュ画面もでなくなった
ということで、割と典型的ではある。救いだったのは
(3) BIOSからは見えている
状況だった。

Windowsは立ち上がらないので、Ubuntu14.04のLiveDVDから何とかする。
結構深刻だったのは、”内部SATAに繋いだ場合はLinuxからも見えない。dmesgではsdaが接続されたことはわかるけど、fdiskも使えない”ことだったけど、 SATA <-> UDB変換コネクタを介して繋いだところ、マウント確認♡良かった。
(ただし、直接救出したいファイルを見に行くと、マウントが解除されてしまうのでコピーなどはこの時点では無理)

見えているうちにddをつかって複製をつくろうと思うが、ddはバッドセクタがあると滅茶苦茶遅い。
転送速度が1kBps切ってたので、時間的制約もあり諦める。
ちなみにコマンドは
% dd if=/dev/sda of=/dev/sdb bs=512 conv=noerror,sync
sdaがソース(壊れたディスク)で、sdbはデスティネーション(同容量以上の新しいディスク) bsはセクタサイズに合わせて4096でもいい気がする。 conv=noerror,syncはエラーがあってもやめないで、読めない分はゼロで埋めるオプションらしい。

しらべたところntfscloneというのがntfsパーティションのコピーに使えてしかも速いというので使ってみる。
ubuntu14.04のLiveDVDにははじめから入ってる。コマンドは、
% ntfsclone --rescue -O /dev/sdb1 /dev/sda3
こんどは、パーティション指定がいる。紛らわしいがソースとデスティネーションを指定するオプションの順序がddと逆なので注意。
残念ながらスキャン終了後、論理構造が壊れてるので無理的なメッセージがでて失敗。
% ntfsfix /dev/sda
で多少の修復を試みつつ、再度ntfsclone。でもやっぱり無理。

最後に色々修復をやったところなので、ダメ元でファイルを直接コピーしてみる。何故か今度は成功!
ということで、少々壊れたファイルができたもののほぼ救出。

おしまい。

ちなみに、ddが遅いのを何とかするプログラムというのもあって、gddrescueがUbuntuには用意されています。標準では入っていないのけど、ネットワークがあればapt-getで入手可能。
Linuxのファイルシステムを何とかしたかったら、これ使ってたかな。

2014年7月13日日曜日

matplotlibのフォントをtimes new romanに変える

投稿しようと思ってるジャーナルが図表にTimes New Romanを使うことと明記してあったので、matplotlibのフォントを変更する on Linux。

システムのmatplotlibrcを ~/.matplotlib/以下にコピー
matplotlibrcに 
font.family : Times New Roman
という行を追加
同じディレクトリにある fontList.cacheを削除
fontList.cacheを削除するというのがどこを見ても書いてなくて、悩んだ。

2014年7月8日火曜日

理研研究者の怒り

それでもそういう機運がたかまるだけで、えらいと思う。
JAEAだったら、なぁなぁだわ。

https://twitter.com/masayomasayo/status/486361204122595328