問題は、私のすべてのファイルを追跡することができず、どのファイルが重要で、どのファイルが一時的なものかを区別できないことにうんざりしています。
コピーを保管してドライブをクリーンアップしますが、時々混乱が発生します。
そのためには、ファイルが変更または作成されるたびにxattrsを作成および変更するのに役立つものがあれば、非常に役立つと思いました。
Inotifyに基づいてサービスを作成しましたが、問題は低レベルの説明があまり役に立たないことです。可能であることを確認するには、より多くの開発が必要ですが、そうではありません。
アイデアは、どのアプリケーションがfooを生成したのか、いつ、なぜ、どこで、いつどこでどこに移動したのか、いつどこでどこにコピーされたのか、コピー数、どこにあるのか、どのファイルが削除されたのかを記録することです.ディレクトリなど
私はファイルシステムについてあまりにも多くを聞いているようですが、いくつかのアイデアをいただけますか?
答え1
アイデアは、どのアプリケーションがfooを生成したのか、いつ、なぜ、どこで、いつどこでどこに移動したのか、いつどこでどこにコピーされたのか、コピー数、どこにあるのか、どのファイルが削除されたのかを記録することです.ディレクトリなど
「どのアプリケーションがそれを生成したのか
foo
」:伝統的に、Unixファミリーシステムはどのアプリケーションだけを追跡していました。ユーザーファイルを所有し(最初はファイルを作成したのと同じユーザーですが、システム管理者のアクションでこれを変更できます)、アプリケーションはその意味でユーザーが望む拡張と見なされます。crtime
「when [created]」:これには、特定のLinuxファイルシステムでサポートされているように、作成時間をサポートするファイルシステムが必要です。すべてのUnixファミリーファイルシステムに3つのデフォルトタイムスタンプctime
(ファイルのメタデータが最後に変更された時間、mtime
=ファイルの内容が最後に変更された時間、atime
=ファイルが最後にアクセスされた時間)があるわけではありません。これら3つとは異なり、crtime
ユーザースペースツールではサポートが非常に制限されています。「なぜ[作られたのか]」:ああ、目的論も欲しいですか?これは難しい質問です。デフォルトでは、ファイルに関連付けられたメタデータフィールドが存在し、すべてのアプリケーションはファイルを作成するときにこのフィールドに意味のある情報を入力する必要があります。オペレーティングシステムは不明です。なぜアプリケーションは、何らかの方法でそうするよう指示がない限り、特定のファイルを生成しようとし、アプリケーションが知る方法はありません。なぜユーザーは、ユーザーに要求しない限りファイルを生成しようとします。しかし、「一時ファイル」、「アプリケーション構成ファイル」、「ユーザー文書ファイル」などの広範なカテゴリにしたい場合があります。それでも、これらの動きを完全に実装するには、オペレーティングシステム全体とすべてのアプリケーションを更新する必要があります。
「where」:ファイルがどこにあるかを知ることは、ファイルシステムの非常に基本的な属性です。しかし、ある種の監査ログが必要なようです。
「どこからどこへ移動するか」:動きは動きとしてのみ認識できることに注意してください。単一ファイルシステム内で。ファイルシステム間の移動は、本質的にコピー+削除操作です。オペレーティングシステムに関する限り、これは本質的に「ファイルAから読み出し、ファイルBに書き込み、ファイルAを削除する」である。このタスクを実行するアプリケーションを信頼し、その目的がコンテンツをコピー/移動することを知らない限り、アプリケーションはオペレーティングシステムが修正を認識しない限り、読み書き操作の間で何らかの方法でデータを変更できます。
目標を完全に達成するには、各ファイルの祖先と目的を追跡するために、関連するすべてのファイル管理APIを再設計したまったく新しいオペレーティングシステムを作成する必要があります。
これについて真剣に考える場合は、まずSELinuxおよび/またはその他の必須アクセス制御システムを見て理解することをお勧めします。ベル・ラパドゥーラモデル。これは、ファイルの祖先や目的ではなく、ファイルのセキュリティ状態を追跡するためのものですが、これらの追跡を実装する方法についていくつかのアイデアを得ることができます。