ドライブ上のすべてのファイルのリストを取得する必要があります。私は再帰的なソリューションを使用しています。しかし、それは多くの時間がかかります。私はそれがマスターファイルテーブルからNTFSドライブ上のすべてのファイルの名前と場所を取得することは可能ですか?私はそれが非常に速くなると思う。助言がありますか?NTFSボリュームのMFTからファイル名/位置情報を取得する方法はありますか?
2
A
答えて
1
再帰的ソリューションを使用してNTFS形式のドライブ上のすべてのファイルの一覧を取得すると、MFTからそれらを取得しています。ファイル名とディレクトリのリストを取得するだけでは、MFTの外側にはディスクIOがほとんどないはずです。
(インターネット上のさまざまな場所から入手可能な)MFTのフォーマットを決定し、それを直接読むためのコードを書く道を行く前に、あなたのコードをプロファイルして、すでにCPUまたはIOにバインドされています。
1
私はMFTの中で何らかの種類のリストのような構造を想像している印象を受けています。
これは該当しません。 MFTはパス名を格納するために一種のb-treeを使用します。ディスク上のディレクトリ構造をスキャンすると、実際にはMFT b-treeを歩いていることになります。あなたがMFTに直接アクセスした場合、あなたがしなければならないことをやっています。
2
mftを直接検索するツールがあります。これはndffと呼ばれています。私は以前にそれを使用して、それは非常に高速です。
おそらく、あなたが望むことをすることは可能です - 私は同じことをすると思う "Everything"と呼ばれる別のツールがあります - USN変更ジャーナルを使ってインデックスを更新します。
0
はい、あります。program私はオープンソースであり、まさにこれを行います。
どのように動作するのかを調べるにはソースを読むことができますが、基本的に$ MFT内でFILE_NAME
attributesを探して、ParentDirectory
フィールドを使用してすべてのファイルの親を取得します。
このようにすれば、どのディレクトリの内容も完全に読み取ることができなくなります。
関連する問題
- 1. jsonオブジェクトから情報を取得する方法、属性を取得する方法はありますか?
- 2. VB.NET - Subversionリポジトリのファイルからファイル情報を取得する方法はありますか? (Toriose svn)
- 3. 特定のjsonファイルから情報を取得する方法
- 4. 変数名のあるクローズドブックから情報を取得する
- 5. ボリュームIDでドライブ情報を取得する方法
- 6. 位置情報サービスがオフのときに位置情報を取得
- 7. コンテナのテキストフィールド情報を取得する方法はありますか?
- 8. qt - ネットワークベースの位置情報取得
- 9. ディレクトリからファイル名を取得する方法はC#にありますか?
- 10. javascript(Django)でログインユーザー情報を取得する方法はありますか?
- 11. パッケージ名からアプリケーション情報を取得
- 12. 資格情報や認証情報からメールアドレスを取得する方法は?
- 13. Androidはすべてのアクティビティで位置情報を取得しますか?
- 14. ELFファイルのシンボルテーブルのシンボル情報からオブジェクト名を取得できますか?
- 15. MacOSで位置情報を取得するには?
- 16. ツイートから位置情報を保存
- 17. SMSメッセージからの位置情報
- 18. EDIDブロックからHDMIポート情報を取得する方法は?
- 19. TGUIDからインターフェイスタイプ情報を取得する方法は?
- 20. SoftLayer API:イメージテンプレートからblockDevice情報を取得する方法は?
- 21. Facebookからユーザー情報を取得する方法は?
- 22. デスクトップアプリケーションからデータベース情報を取得する方法は?
- 23. JPEG EXIFデータからジオロケーション情報を取得する方法は?
- 24. イベントリンクからイベント情報を取得する方法は?
- 25. gui情報はwp7 xapファイルから取得しますか?
- 26. Jerseyのjavax.ws.rs.Clientからリクエスト情報を取得する方法はありますか?
- 27. Andriod studioのCSVファイルから情報を取得しますか?
- 28. div内のdivの位置情報を取得する
- 29. PC /サーバー/モバイルのGpsデバイスの位置情報を取得する
- 30. ライドウィジェットをインストールせずに、Uber APIから情報を取得する方法はありますか?
実際、あなたは間違っています。 MFTはbツリーを使用しません。 MFTはレコードのフラットなリストです。 NTFSディレクトリはある種のバイナリツリー(b +ツリー?)を使用します。 MFTを読むことは、無視しなければならない削除されたエントリの量に応じてOPのためのより速い解決策であり、使用可能なパス名を再作成する必要はありません。 –