先日これが発生しましたが復旧できたのでメモしておきます。
PCに接続してみる
Androidでは認識しなくなりましたが、PCに接続すると普通に見えました。
この際にWindowsが、「フォーマットしますか?」と親切に聞いてきますが、まだ絶対にしないでください。
全部消えちゃいます。
普通に認識したら、以下のxcopyでなくても普通にコピーできる場合があります。
データの取り出し
本当に故障(不調)の可能性があるため、大切なデータがある場合はPCなどへコピーしておきます。
大事なデータが無い場合は、次のchkdskに進んでください。
通常のコピーだと読み取りエラーなどで中断してしまうため、xcopyコマンドでエラー無視などのオプションを指定してコピーします。
PCのHDDが不調でコピーできない場合もこれで行ける事が多いです(読み取りできないファイルは無視されますが)
PCにSDカードを接続し、SDカードのドライブレターの確認と、コピー先のフォルダを作成しておきます。
コマンドプロンプトを起動して以下のように実行します。
xcopy /s /e /d /c /h <ドライブレター>:*.* <コピー先フォルダパス>
例えばSDカードが「g」ドライブで、「c:rescue」にコピーする場合は以下のように実行します。
xcopy /s /e /d /c /h g:*.* c:rescue
上記で指定しているオプションの意味は以下のとおりです。
/s /e
空のフォルダを含むフォルダ・ツリー全体をコピーするというオプション
/d
上書きせずスキップ(データ取り出しでSDが切断される場合の継続に必須)
本来は日付を指定し、新しいファイルだけコピーするためのオプションですが、日付を指定しないことで「日付が指定されなかったときは、コピー元の日付がコピー先の日付より新しいファイルだけをコピーします。」というのが適用されます。
xcopy /?のヘルプにも書いてあります。
/c
エラーを無視してコピーするオプション
/h
隠しファイルやシステム・ファイルもコピーするというオプション
本来はddコマンドなどで全体をコピーした方が良いですが、面倒なので私は上記でコピーして終わりにしています。
絶対に取り戻したいデータがある場合は、上記のコピーなどの動作で劣化が進行してしまう可能性があるため業者にお願いしたほうが良いです。
chkdskで修復
AndroidのSDカードは、exFATかFAT32のため、Windowsのchkdskで修復可能です。
コマンドラインから実行する場合
SDカードをPCに挿したらドライブレターを確認しておきます(CとかDとか)
管理者権限でコマンドプロンプトを開きます。
以下のように実行します。
chkdsk <ドライブレター>: /f
例えばドライブレターが「g」の場合は以下です。
chkdsk G: /f
オプションの「/F」はディスクのエラーを修復するという指定です。
今回の「SDカードが破損しています」というエラーはこれで解消され、3ヶ月ほど使用していますが問題は出ていません。
SDカードの故障でなくファイルシステムの破損だったみたいです。
エクスプローラーから実行する場合
コマンドラインのchkdskと近い事ができますが、コマンドラインからのchkdskの方が自由にオプション指定が可能です。
一応修復は以下の方法で行えます。
マイコンピュータから挿入したSDカードを右クリック
プロパティ > ツールタブ > チェック > ドライブのスキャンと修復
アプリのデータはどうなるか?
アプリによって異なりますが、Androidのデータベースに設定などを保存するアプリの場合はSDカードが破損しても設定は保持されています。
SDカードへ設定を書き出すアプリは、上記のように修復できれば元通りですが、本当に破損していた場合はパーです。
アプリを外部SDに移動していた場合、ホーム上のアプリアイコンがグレーアウトしてタップできませんが、SDカードが無事なら再び挿せば元のように使えます。
SDカードが抜かれた状態の場合はアプリを再びインストールすれば、グレーアウトしていたホーム上のアプリアイコンも復活します。
また、SDカードが抜かれていた時にアプリだけ再インストール、再びSDカードを戻してもアプリが二重になったりはせず、ショートカットが復活します。
以上です。
コメントフォーム