SnapBridgeというのはNikonのカメラとスマートフォンを接続して写真の転送を行うアプリだ。これを使ってデータ紛失~復旧までの顛末を書いておく。
昨年の暮れにNikonのコンパクトカメラ、COOLPIX W300を嫁さん用に買った。8日の成人式の日に家の前で数枚、会場の外で30枚ほど撮影。送迎から帰って来て、取り敢えずカメラの液晶モニターで確認。集合写真なんかも数枚ある。
嫁さんが「スマホでも見られるようにしたいなぁ」と言うので、「このカメラ、wifiでスマホに写真転送できるみたいだからやってみよう」と言うことになった。
SnapBridge というandroid用アプリをインストールし、諸々の設定後(といっても殆ど何もすることはない)転送を試みた…
なんか転送に時間がかかる。1枚送るのに20秒位だっただろうか。で、たしか3枚目か4枚目の転送中に、「接続が切れた」のようなメッセージが…。
カメラはすぐ横に置いてあるから電波の状態が悪いとは言えない。リトライしようとスマホからカメラ側データをアプリで確認しようとするが、あさ自宅前で撮った数枚まではあるのだが、それ以降の写真が見つからない。アプリを再起動しても状況は変わらず。接続を切ってカメラ本体でも見られない。
やられた!
カメラをシャットダウンしてSDカードを取り出し、PC に挿す。ディレクトリを確認したが消えていた。
撮り直しが出来ないショット、このまでは家族関係に禍根を残しかねない。
ということで、復旧アプリを探してみた。いくつか見つかったが、使った事があるPhotoRecを使うことにした。このアプリ、以前携帯電話に刺していたmicroSDが死にかけた時に結構復旧してくれた記憶がある。このときはマウントできなくなり(メディアとしてはどうにか認識されているが、ファイルシステムが壊れていた)ファイルアクセス出来なくなっていたのだったと思う。アプリはソースコードも公開されているが、実行ファイルはwindows用、iOS用、linux用などが存在する。自分用PC はWindowsXP(年一回、年賀状の宛名印刷に使うだけ)とubuntu(linux)を切り替えて使っているが、ubuntu版を使う。photorec は単一のアプリだがtestdiskというパッケージに入っているので、これを探してインストール。windows版も同様らしい。
対象のSDカードをUSB経由のカードリーダーに刺してドライブとして認識させてからターミナル(windowsではdos窓とかコマンドプロンプト?かな)からphotorecを起動する。
キャラクターベースのUI画面が現れ、接続されている全てのドライブがリストアップされているので、対象のドライブを探しだす。通常、サイズを見れば大体の見当はつくはずだが、不安ならSDカードを抜いた状態でアプリを起動してリストを見て、刺した状態との違いで確認しても良い。メインメニューにあるFile optで復元したいファイルの拡張子を選択出来る。今回は写真のみが対象だったのでjpegだけを選択する。デフォルトで大量の拡張子が対象になっているので「s」を押して一旦全て解除してからjpegだけにチェックをいれる。メインメニューのsearchで開始だがこのあと、ファイルシステムが何かとか調べる範囲を聞いてくるので選択する。デジカメのファイルシステムはほぼFATでよいはずだ。範囲はwhole としておく。
重要な事だが、出力先にはSDカード以外を設定する。アプリがちゃんと警告なり拒否なりをしてくれるかは未確認。メインドライブであれば、よほど切迫していなければ、SDカードサイズ程度の空き容量は確保できると思う。
検索開始してファイルが復元され出すと、recup_dir.1とかのディレクトリが作られ、この中にファイルが現れる。実行中にどんどんとファイルが増えてゆき500個になったところで次のディレクトリが作られる。
出来たファイルを見るとファイル名は復元出来ないが、タイムスタンプは復元されている様子。しばらく待っていると、40個ほどファイルのタイムスタンプが8日になっている!
ビューアで画像を確認、全ての行方不明になった写真が復元できた。
よかったー。