CodePanic! 雑談掲示板
再検索で重複ファイルを認識してくれません - Koe
2017/04/16 (Sun) 07:42:12
FileManyを使わせていただいてます。
1回目にスキャンした時は重複ファイルを検出してくれるのですが、
検索範囲を広げて再スキャンすると、
同一ファイルを検出してくれなくなってしまいます。
名前が同じという条件だけでもダメです。
何かが間違っているのでしょうか?
Re: 再検索で重複ファイルを認識してくれません - 管理人
2017/04/16 (Sun) 08:42:52
コメントありがとうございます。
今のところ再現には至っていませんが
以下を確認いただけないでしょうか。
1回めの検索で検出されたファイルの
上流のフォルダが2回めでは除外或いは無視設定されていませんか?
あとは
1回めの検索で検出されたファイルの名前やフォルダ名を覚えておいて
2回めの検索が終わったあと
フィルター(画面下の入力欄)で
その名前を一部でもいいので入力して
フィルターONにして、重複ファイル一覧に表示されませんか?
以上よろしくお願い致します。
Re: 再検索で重複ファイルを認識してくれません - 削除
2017/05/29 (Mon) 06:58:16
投稿者の方とは別のものです。
よいソフトをいつもありがとうございます。
同様の事象かどうかわかりませんが、「明らかに重複しているファイルがあるのに「重複しているファイルは見つかりませんでした」という結果になる」ためご報告いたします。
条件は以下のとおりでした
検索ファイル数約300万(画像ファイル、圧縮ファイル、html等複数混在)、合計1.5テラバイト、フォルダ数約30、実際に重複しているであろうファイルは20万セット程度
検索時間約20時間(性能はcore i7 4790、windows 7 64bit、ストレージはHDDのRAID1)
ソフトのバージョンはver.2.1.7.3.64bit
共通設定は簡易ハッシュ比較先頭read1KB、ハッシュ記憶最低サイズ512KB、ハッシュ記憶件数100万(入力できる上限)
記憶しない・削除するのチェックは入れていません
プロジェクト設定は
ハッシュ、MD5、完全ハッシュ
検索設定タブでチェック入れているのは、JPEGヘッダ無視、サイズ無制限、0バイトのファイル、ジャンクション/シンボリックのみ
フィルタータブ、削除/移動タブはデフォルトのまま
状況は以下のとおりでした
ファイル列挙は完了します
サイズ一致チェックは完了します(60万グループ程度が検出されます)
ハッシュ一致チェックでは、同じハッシュ値と異なるファイル名を持つペアが検出されているように見えるログが延々と流れ…
最後に「重複はありませんでした」というダイアログが出ます。
残念ながら、この数では再チャレンジする気力はないため、範囲を狭めて別途実施しています。
以上、ご報告いたします。
追記:
上記の状況で直後に全く条件も対象ファイルも変えずに再検索をすると、通常はすぐに完了(たいていの場合一瞬で)するはずなのに、1からファイル列挙を始めてしまっております。あわせて報告いたします。
Re: 再検索で重複ファイルを認識してくれません - 管理人
2017/05/29 (Mon) 13:50:59
コメントありがとうございます。
300万ファイル程が対象とのことで
その内どれくらいの数が重複しているのかは不明ですが
メモリ不足や何らかの例外処理が途中で捕捉されてしまって
最後まで検索処理が行われすに『重複なし』
となってしまっているかもしれません。
過去に修正したバグに
進捗やログを表示するUI周りのスレッドに不具合がありまして
それは修正したのですが
例外を知らせるDialogの表示などが無いことから
内部処理を行うtool.dllの中で何か起こっているのかもしれません。
また、追記頂いた情報から
正常に探索が終了すると
ハッシュ値が記憶されるので
その分の処理がスキップされて時間が短縮されるはずが
再度同じ処理が行われているようなので
ハッシュ値がそもそも記憶されていないように思います。
スキップされるのは作成済ハッシュ値を流用する部分で
ファイルの探索は初回でも再検索でも同様で
それについては問題ないのですが
そろそろオンメモリですべてを解決するアプローチは限界なのかもしれません。
とりあえずの解決のアプローチとしては
・検索対象を絞り込むことで対象ファイル数を減らす(サイズ指定など)など
・DBファイルが肥大化しているようでしたら一旦削除して頂く(ハッシュ値が列挙されたテキストファイルです)
・同じ検索範囲と設定で、サイズのみで重複判断するとどうなるかも気になります(ハッシュ値まわりの処理が不要で、問題の切り分けのため。処理時間も短時間だと思います。)
開発側も
続行可能な異常?であれば最後まで処理を続ける
(ただし、重複や不一致の判断に誤りのない範囲内で)
でしょうか。
あらためてコードを見直して
最後までなるべく処理を続行できるように修正します。
進展がありましたらバージョンアップ履歴でお知らせ致します。
よろしくお願い致します。
Re: 再検索で重複ファイルを認識してくれません - 削除
2017/05/29 (Mon) 23:12:30
早速のご返事ありがとうございます。
その後対象ファイル数を減らして同設定にて再度検索したところ、以下のように重複ファイル検出ができておりましたので報告します。
対象ファイル数約200万、約1テラバイト、処理時間11時間。ファイルは前述の重複ファイル検出できなかったファイル群のサブセットですので、順序は逆ですが状況としては本スレッド質問者様と類似しております。
一致するファイルは13万7千種類/27万4千個
できていたhashMD5.txtファイルは、1.36メガバイトで行数は9792行でした。
なお、前述の重複ファイル検出できなかったときには、hashファイルはつぶさに調べませんでしたが、1メガバイトもなく、せいぜい10キロバイト程度(以前に小さな検索をしたときのまま?)だったように記憶しております。同じファイル群を含むより大きな集合を検索したのに、hashファイルがより小さかったのであれば、そのときはhashファイル作成に失敗していたのかもしれませんが、確認しようがないため、ご参考まで。
とはいえ、200万個を検索したときのhash DBファイルは、最大100万件記憶する設定で、実際に記憶されたのは1万件もない程度でしたのでご報告します。
また、サイズのみの検索をしようとしてみましたが、ファイルの列挙だけでも数時間かかる様子でしたので、最後まで走らせられませんでした。
次の件は、別のスレッドでご報告するべきかもしれませんが、上記の重複する13万7千個を「ゴミ箱に入れる」で削除しようとした際に遭遇した事象について報告いたします。
一致するファイルの片方(13万7千個)を選択して、「ゴミ箱に入れる」設定で削除したところ、非常にゆっくりとした動作となり、CPUが8コアとも使用率100%、数分でメモリ16ギガバイトを使い果たし、「メモリが不足しています」のwindowsダイアログが出ました。ブラウザも立ち上げられないまま数時間経過して、動作が完全に止まりました。
windowsを再起動して、ゴミ箱の中身を見たところ、ゴミ箱に入っていたファイルは5万個程度でした。
これまでも、これとは別のファイル群にて、もう少し少ない数(数百~数千個)のファイルを「ゴミ箱に入れる」した際も、削除はできるものの、CPUとメモリを異常に消費し、かなり時間がかかる事象を目にしておりました。
現在、運用上の対処策として、以下のようにしております。
・数十万個を一度に選択せず、数千個ずつ削除する
・ゴミ箱に入れるを選択せず、別フォルダに移動するようにして、そのフォルダを削除する(移動であれば、CPUとメモリの異常消費は起こっていないように見えます)
以上、加えてご報告いたします。
Re: 再検索で重複ファイルを認識してくれません - 管理人
2017/05/30 (Tue) 10:22:38
コメントありがとうございます。
ハッシュDB用のテキストファイルですが
アプリ終了時に一気に書き出す仕様で
それまではオンメモリで記憶しています。
また、探索したすべてのファイルのハッシュ値が計算されるわけではなく
設定にもよりますがハッシュ比較する必要のある
ファイル同士がそれぞれ計算されます。
A,B,C3っつのファイルがあり
Aを除いてB,Cが同じサイズであれば
B,Cのみハッシュ値が計算されるイメージです。
ファイルをゴミ箱へ入れる設定で削除する件は
Win32API経由での削除で
そこから先はOSの詳しい挙動まではわかりません。
アプリ側は削除が進むほど
管理するファイル数が減るので
メモリ消費量は減少へ向かうのが理想なのですが
ログ出力まわりも含めてコードを見直してみます。
よろしくお願い致します。
Re: 再検索で重複ファイルを認識してくれません - 削除
2017/06/20 (Tue) 20:40:18
ご報告いたします。
何度も動作させましたが、十何時間、何十時間のハッシュのチェックの最中に、突然止まり、結局「見つかりませんでした」(それまでずっと同じハッシュを持つファイルが延々ログに流れていたにもかかわらず)という表示で、とまってしまうという状況となります。
画像は、対象ファイルの途中です。
ソフトウェア改善のご参考になれば幸いです。
Re: 再検索で重複ファイルを認識してくれません - 管理人
2017/06/20 (Tue) 22:08:13
コメントありがとうございます。
メモリ不足或いはGUI系の例外が捕捉されて
結果として重複なし、となっている可能性が高いと思います。
現状のソフトウェアの品質として
ご利用の環境では同じ結果になりますので
一気にすべて検出するのではなく
フィルター、サイズ指定、フォルダ指定、除外などなど
範囲を絞り込んでご利用ください。
現状は開発環境を最新のVisualStudioへ移行中です。
仮にメモリが原因だったとして
重複件数が一定数を超えると処理を中断するなど
工夫が必要だと思います。
Re: 再検索で重複ファイルを認識してくれません - 削除
2017/06/20 (Tue) 23:05:56
ありがとうございます。
異常終了した際に、それが異常終了であることがわかり、かつその際に報告すべきデータが何であるかがわかればお役にたてるのではないかと思いました。
同様のご報告は控えたく思いますので、引き続き、どうぞよろしくお願いします。