3

古いドライブから新しいドライブにファイルをコピーしようとしています。問題は、古いドライブにはディスク上のいくつかの破損した場所があり (推測することしかできません)、これらのファイルのいくつかから読み取ろうとすると、ある種の無限ループのように見えることです。コピーしたいファイル全体にかなりの数の問題ファイルが散らばっており、最初のファイルにヒットすると、アプリケーションは停止するまで何もせずにそこに留まります。カスタムプログラムを作成してディレクトリを再帰化し、ファイルを1つずつコピーし、個々のコピー操作でポップアップするエラーをキャッチすることでこれを回避できることを望んでいましたが、エラーをスローするまでには至りませんでした- -ただそこに座って、そこに座って、そこに座っています。これを止める唯一の方法は、問題のあるハード ドライブの電源を物理的にオフにすることです。

どうやって進めていくのか、ちょっと戸惑います。この種のエラーが発生することを考えると、このプロセスを自動化する方法はありますか? 誰もこれについて経験がありますか?

4

5 に答える 5

4

これは、HD が非常に破損しており、HD の応答に非常に長い時間がかかる場合に発生する可能性があります。通常、CRCエラーは、これが発生したときであり、多くのセクターがねじ込まれた大きなファイルで発生します。

セクターを表示する低レベルの方法を使用することを検討する必要があります。そうすれば、いつ停止するかをより詳細に制御できます。

ただし、使いやすいように設計されたプログラムがあります(Googleでデータ回復を検索してください)。データを回復する可能性が高い特別な機能を備えているものもあります. 特別なアルゴリズムなどを備えた非常に高度なものもあります。

于 2011-01-16T19:20:57.423 に答える
1

標準の System.IO クラス (Directory / DirectoryInfo / File / FileInfo) でコピー メソッドを使用していると思いますか?

FileStream でファイルをコピーしようとしましたか? これらのエラーを防ぐために、ストリームに ReadTimeout を設定できます (stream.ReadTimeout)。このようにして、Read() 操作に時間がかかりすぎる場合に例外を取得します。また、ファイルを開くことができない場合にもエラーが発生するはずです。

于 2011-01-16T19:24:26.923 に答える
0

CBD(Copy Bad Disk)はまさにあなたが必要としているものだと思います:ハングや停止なしに不良セクタにファイルをコピーしたり、読み取り不可能なバイトの位置をログに記録したりします。

于 2013-02-26T06:12:59.070 に答える
0

C#で堅牢なコピープロセスを取得するためのヒントではなく、データ回復ツールに注意する必要があります...

古いドライブが壊れていない場合 (固着ノイズが発生する場合) は、chkdskを使用してファイル システムの回復を試みる必要があります。

chkdsk で処理できない問題がある場合は、 ddrescueなどのデータ回復ツールが必要です (Google の「データ回復」または「破損したディスクからファイルをコピー」を試してください)。

于 2011-01-16T19:21:30.860 に答える
0

私のようにこの古いスレッドに出くわした人は、ワイヤレス ネットワーク接続を介していくつかの大きなファイル (~1GB) をコピーするときに同様の問題が発生しました: 私の WLAN アダプターには、「マルチメディア/ゲーム環境」に設定されたドライバーがあります。これが「有効」に設定されている場合、WLAN 経由でコピーすると大きなファイルが破損することがよくありました。「マルチメディア/ゲーム環境」を「無効」に設定すると、問題はなくなりました。

于 2020-07-10T13:56:35.220 に答える