3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

ファイルコピー後にコピー元とコピー先の比較を行なう「Tera Copy」が便利

(約 3,900文字の記事です。)

デジタルデータはコピーができるので便利。ネットでデータ転送も簡単。だがアナログと違ってデータの破損具合によっては全く読み出せなくなる。(少しの以上であれば復旧できる仕組みがあるが。)全く読み出せなくなるような致命的なデータの壊れ方をすると、もしかしたら「ファイルの中の壊れていない一部」を取り出せる可能性も少しはあるかも知れないが、基本的には「ファイル1つがまるまる全滅」だと思った方がいい。

とはいえ、そんなことが起こる頻度は2~3年に1度くらいだが、その確率で「データを取り出せなくなった」場合の被害も大きい。もちろん一番いい対策はバックアップだ。別のストレージ(HDD, SSD, USBメモリスティック)にバックアップを保存しておく事だ。最近ではクラウドサーバにアップロードする方法も有効だ。例えばGoogle ドライブやDropbox, Evernoteなどにバックアップできる。

もしバックアップがない場合であって、それでもWindowsのエクスプローラー上からファイルが存在するように見えるにも関わらず、ファイルを開こうとしたりコピーしようとしたりする際にPCがフリーズするようだと「かなり危険な状態」だ。ファイルの存在を示すデータ部分が正常なだけであって、でも肝心のファイルの中身の一部にアクセスできない状態(データの復旧が不可能なほどに致命的に壊れた状態)となっている。こうなったら復旧は絶望的。

そうならないための、今できる対策を考えてみた。

対象読者は全てのWindows PCユーザー

ファイルがあるのに開けない・コピーできない!?

ただ、今回問題が起こったファイルは3.3GBのmp4動画ファイルだ。これだけ容量が大きいとなかなかバックアップに手が回らない。おまけに、重要性は高くも低くもない、そこそこのデータだったので油断してバックアップしていなかった。そもそも、その動画ファイルは保存用のHDDに保存していた「アーカイブ」扱いの古いデータだった。

そして、たまたま古いその動画を見ようと思ったとき、なかなか動画が開かない。いつまで経っても開かない。

外付けUSBのHDDだからアクセスにもたついているのかな?と思って一度ローカルHDDにコピーしてみるものの、一向にデータが転送されない。困った。

最後の手段でCHKDISKのfとrオプションを試した。大容量HDDだったので完了までに丸々3日かかった😱

だがしかし!ファイルを取り出せない。コピーでエクスプローラーがフリーズする。完全にお手上げ。

思い出してみると、冬にPC作り替えによって新規PCへ移行していたので、古いPCのHDDに残っているかも?と。そういえばある日、その動画を新PCのHDD上から消した記憶があったのでもしや?と思って調べてみたら、無事に旧PCのHDD内にあったわけです。

なのでそこからコピーしてようやく事なきを得た。

チェックディスクの3日間はただ無駄に電力を消費しただけだった……。

結局削除する以外に手がなかった

なぜ動画データが壊れたのか不明。そしていつ壊れたのかも不明。過去のある日に、たまたま保管用の外付けHDDからローカルHDDにコピーしておいたことが幸運だっただけで、一つ違えば動画は消滅していたことになる。

壊れたデータはもはや不要なので削除。その後ローカルHDDから外付けHDDに再度コピー。その後は普通にアクセスできる。

コピー時にコピー元とコピー先で比較チェック(ベリファイ)させる

TeraCopy for Windows - Code Sector

もしHDDが経年劣化などで、コピーした直後ではないある時期にデータが壊れていたのならばお手上げだ。バックアップがなければ復旧できない。けれど、その問題がもし「コピー時に正常にコピーできていなかったせいで」起こったのならば、コピー時にコピー元とコピー先とで整合性をチェックすればいいことになる。

というわけでファイルコピー時にベリファイするソフトを探してみたところ、愛用しているTera Copyに標準でその機能があったのでした!

Windowsでファイル日時の情報を維持してファイルコピーする(TeraCopy)右ドラッグ対応 - 3DCGで何をどう作るか考え中

①②で「常にコピー後にテストする」にチェックを入れるだけでTera Copyでのファイルコピー時には必ずコピー元と先との比較を行なう。一瞬で終わるように見えるがログをCSVファイルで出力させてから中身を確認してみると、コピー元ファイルのMD5チェックサムとコピー先ファイルのMD5チェックサムを内部に生成して比較している

アプリ上のログでは「検証中」の文字しか見えないが、転送履歴を1つ選択してからアプリ左上にあるプリンタアイコンをクリックするとHTMLかCSVでログの詳細を出力できる。そのログ内にMD5チェックサムが入っている。

なので今後はファイルのコピーや移動にはTera Copyを使おうと思う。

常にTera Copyを使いたい!

③のように設定すればCtrl + C, X, Vや右クリックでのコピペなど、Windowsの標準コピペ操作時にはWindowsの純正コピー機能ではなくて常にTera Copyが使われる。なので常にコピー時にベリファイが行なわれるので少し安心だ。画像では正常にコピーが終わった場合には即座にアプリのウィンドウが消える設定だが、この設定であってももしファイルコピー時にベリファイでエラーがあればウィンドウが開いたままとなり、ログにエラーの履歴が赤で表示される。

もしコピー時にコピー先のデータ保存領域がダメージを受けていて正常に書き込めなかった場合には、当然ながら正常に読み出せないことになるためMD5チェックサムが一致しない。なのでコピー時のデータ転送エラーではその場ですぐにコピーし直せばいい。

くどいが、コピー時に正常でもメディアの経年劣化である日突然あるデータ領域が読み出し不可になった場合には、この対策では何ともならない。バックアップを取っておく以外に手はない。

でもこれでTera Copyを純正機能のように使える上に常にベリファイされるので安心だ。少しは。

【まとめ】本当に大切なデータは別メディアにバックアップを!

結局、なぜデータが壊れたのかは謎のまま。そして取り出せないとわかるともう復旧させられない。なので本当に重要なデータはクラウドや別HDDにコピーしておくべきだ。

また多少のリスク回避の手段として、Tera Copyのような「コピペ時に常にコピー元と先をベリファイするツール」を使うくらいだろう。もちろんSSDのようにファイルの読み書き回数が有限なメディアは消耗するが、遅かれ早かれ記録メディアは消耗&買い換え必須なので、そこはデータの保全のためのコストと割り切った方がいい。

というわけで私はWindows純正のファイルコピー機能は使わないことにしました(というか、そうなりました)😊

これで今後はデータが壊れないことを祈る。そういうレアな事象を回避できたらいいなぁ。





今回の創作活動は約2時間(累積 約2,878時間)
(836回目のブログ更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます(笑)以下のリンクを経由して頂ければ紹介商品以外のご購入でもOKですよ~。